|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
работа с массивами
Здраствуйте.Такая значит задача, есть программа, которая из ини файла запускает ексешники, мне надо что бы были еще параметры запуска т.е в инеке допустим пишу 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
|
|||
|
|||
Ух-х-х...
Честно говоря, ничего не понял. Зачем тебе массивы? А вообще, с массивами все просто. 1. Описание массива: Код:
A1 : Array [1..20] Of TMyDataType; // Постоянный массив в 20 элементов A2 : Array Of TMyDataType; // Динамический массив, сейчас в нем нет элементов Полезные процедуры и функции для работы с массивами (надеюсь, как обратиться к ячейке массива сама поймешь): Код:
Length(A) - возвращает длинну массива (кол-во элементов) SetLength(A) - устанавливает новую длинну массива (только для динамических) High(A) - возвращает индекс последнего элемента массива Low(A) - аозвращает индекс первого элемента массива Собственно, и все. В принципе, можно делать двумерные массивы, трехмерные и т.д. Правда, в силу того, что больше трехмерного массива человеку тяжело представить, то такие массивы используются очень редко. |
#3
|
|||
|
|||
вот смотри что бы у меня вот это работало
Код:
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); ... |