Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.12.2008, 16:22
Sveta22 Sveta22 вне форума
Прохожий
 
Регистрация: 29.10.2008
Сообщения: 31
Репутация: 10
По умолчанию работа с массивами

Здраствуйте.Такая значит задача, есть программа, которая из ини файла запускает ексешники, мне надо что бы были еще параметры запуска т.е в инеке допустим пишу Internet Explorer=C:\Program Files\Internet Explorer\IEXPLORE.EXE&http:\\ya.ru
вот код
Код:
procedure TfmBasesInMenu.RemoveBadFileNames;
var
  i, k: Integer;
  fName, pName: String;
  oneRazdelFiles: TStringList;
  lenStr, nStart, nStr: integer;

begin
  //Проверим масссив данных из ини-файла
  for k := Low (allIni) to High (allIni) do
    //Проверим, является ли текущий список списком файлов какого-либо раздела
    if Pos('FileLocations ', AllIniSections.Strings [k]) > 0 then
    begin
      //Работаем с текущим разделом
      oneRazdelFiles := allIni [k];
      i := 0;
      with oneRazdelFiles do
        while (i < Count) do
          //Убедимся, что строка содержит путь к файлу, а не данные о разделе
          if not ((Pos ('SectionName', Strings [i]) > 0) or (Pos ('SectionIcon', Strings [i]) > 0)) then
          begin
            //извлекаем путь к текущему файлу
            //fName := ValueFromIndex[i];
            fName := Values[Names [i]];
            lenStr := Length (fName);
            nStart := Pos ('&', fName);
            nStr := lenStr - nStart;
            pName := Copy (fName, nStart+1, nStr);
            fName := Copy (fName, 1, nStart-1);
            //если путь некорректный (файл не найден) - удалим его из списка
            if (not FileExists (fName)){ and (not DirectoryExists (fName)) }then
              Delete(i)
            else
              i := i + 1;
          end  {if not RazdelInfo}
          else
            i := i + 1; {while (i < Count) do}
      //Если раздел пуст - удалим его
      if Pos('FileLocations Section ', AllIniSections.Strings [k]) > 0 then
        //Раздел пуст, если в нем осталось две строки - имя раздела и его иконка
        if oneRazdelFiles.Count <= 2 then
          FreeAndNil (oneRazdelFiles)
      //Если список файлов без разделов пуст - удалим его
      else if ('FileLocations Without Section' = AllIniSections.Strings [k]) then
        if oneRazdelFiles.Count = 0 then
          FreeAndNil (oneRazdelFiles);
      allIni [k] := oneRazdelFiles;
    end; {for allIni [k]}
end;
.....
procedure TfmBasesInMenu.oneBaseItemClick(Sender: TObject);
var
  aItem: TMenuItem;
  fLabel, fName: String;
  runBase: TCustomFileRun;
begin
  //при выборе пункта меню открыть соответствующий файл
  aItem := (Sender as TMenuItem);
  fLabel := aItem.Caption;
  //глюк - надо удалить из названия кнопки символ '&'
  fLabel := RemoveAllChars (fLabel, '&');
  fName := allIni[aItem.Tag].Values[fLabel];
  {
  //С помощью вызова API-функции
  ShellExecute (Self.Handle, 'open', PAnsiChar (fName), '', '', SW_SHOWNORMAL);
  {}
  //С помощью родного класса Delphi
  runBase := TCustomFileRun.Create(Self);
  with runBase do
    begin
       // параметры
       runBase.Parameters := pName;
      //Тип операции - открыть или запустить файл
      Operation := 'open';
      //Имя файла
      FileName := fName;
      //Выполнить действие
      ExecuteTarget(Self);
      //Освободить память
      Free;

    end;
строку все делю все работает, вот только теперь нужно создать массив и в нем прописать эти параметры запуска...Сразу скажу я в массивах не бумбум, это чужая прога мне сказали ее дополнить.Плизз кому не трудно помогите

Последний раз редактировалось Sveta22, 04.12.2008 в 16:46.
Ответить с цитированием
  #2  
Старый 04.12.2008, 16:53
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,031
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ух-х-х...
Честно говоря, ничего не понял. Зачем тебе массивы?

А вообще, с массивами все просто.
1. Описание массива:
Код:
A1 : Array [1..20] Of TMyDataType; // Постоянный массив в 20 элементов
A2 : Array Of TMyDataType; // Динамический массив, сейчас в нем нет элементов

Полезные процедуры и функции для работы с массивами (надеюсь, как обратиться к ячейке массива сама поймешь):
Код:
Length(A) - возвращает длинну массива (кол-во элементов)
SetLength(A) - устанавливает новую длинну массива (только для динамических)
High(A) - возвращает индекс последнего элемента массива
Low(A) - аозвращает индекс первого элемента массива

Собственно, и все. В принципе, можно делать двумерные массивы, трехмерные и т.д. Правда, в силу того, что больше трехмерного массива человеку тяжело представить, то такие массивы используются очень редко.
Ответить с цитированием
  #3  
Старый 04.12.2008, 17:01
Sveta22 Sveta22 вне форума
Прохожий
 
Регистрация: 29.10.2008
Сообщения: 31
Репутация: 10
По умолчанию

вот смотри что бы у меня вот это работало
Код:
 fName := Values[Names [i]];
            lenStr := Length (fName);
            nStart := Pos ('&', fName);
            nStr := lenStr - nStart;
            pName := Copy (fName, nStart+1, nStr);
            fName := Copy (fName, 1, nStart-1);
....
 {}
  //С помощью родного класса Delphi
  runBase := TCustomFileRun.Create(Self);
  with runBase do
    begin
       // параметры
       runBase.Parameters := pName;
      //Тип операции - открыть или запустить файл
      Operation := 'open';
      //Имя файла
      FileName := fName;
      //Выполнить действие
      ExecuteTarget(Self);
мне нужно создать какой то массив, ну и вот я что-то не могу разобратся куда его и как (((
...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter