
04.12.2008, 16:22
|
Прохожий
|
|
Регистрация: 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.
|