procedure CreateAlias();
const
DlPs = 5;
var
wrstr, wrstr1 :string;
AParams: TStringList;
Psevdonm: array [1..DlPs] ofstring;
i: integer;
begin//Заполним массив
Psevdonm[1] := 'TERMNNSI,NSI'; // имя,каталог
Psevdonm[2] := 'TERMNBASE,BASE';
Psevdonm[3] := 'TERMNTNL,BASE\TNL';
Psevdonm[4] := 'TERMNARH,ARH';
Psevdonm[5] := 'TERMNTELE,TELE';
// if not DirectoryExists(datapath) then begin// createdir(datapath) ;// end;for i := 1 to DlPs dobegin// Для начала проверим каталоги
wrstr1 := Copy(Psevdonm[i],Pos(',',Psevdonm[i])+1, Length(Psevdonm[i])-Pos(',',Psevdonm[i])+1);
ifnot DirectoryExists(wrstr1) thenbegin
CreateDirectory(PChar(CurrntDir+'\'+wrstr1),nil);
end;
// Если нет псевдонима, то создадим или подправим
wrstr := Copy(Psevdonm[i],1,Pos(',',Psevdonm[i])-1);
ifnot Session.IsAlias(wrstr) thenbegintry
Session.AddStandardAlias(wrstr,wrstr1,'PARADOX');
Session.SaveConfigFile;
except
SaveTekJrn('ERR:Ошибка создания алиаса - '+wrstr);
Exit;
end;
end;
//Настроим алиас
AParams := TStringList.Create;
AParams.Add('PATH=' + CurrntDir+'\'+wrstr1);
Session.ModifyAlias(wrstr,AParams);
Session.SaveConfigFile;
// Освобождение списка
AParams.Free;
end;
end;
Here's the translation of the text into Russian:
В этом разделе описывается процедура Delphi, называемая CreateAlias, которая создает алиасы для каталогов в базе данных Paradox.
Процедура начинается с определения констант и переменных:
DlPs: целочисленная константа, равная 5, которая представляет количество алиасов, которые нужно создать.
wrstr и wrstr1: две строковые переменные, используемые для временного хранения данных.
AParams: объект TStringList, используемый для хранения параметров изменения алиаса.
Psevdonm: массив из 5 строк, каждый элемент которого представляет имя алиаса с соответствующим путем каталога.
Затем процедура пополняет массив Psevdonm желаемыми алиасами и путями каталогов:
Psevdonm[1]: TERMNNSI, NSI (имя, каталог)
Psevdonm[2]: TERMNBASE, BASE
...
Затем процедура проходит по каждому алиасу в массиве Psevdonm:
Для каждого алиаса она проверяет, существует ли путь каталога с помощью функции DirectoryExists.
Если путь не существует, она создает новый каталог с помощью функции CreateDirectory.
Далее процедура проверяет, существует ли алиас с тем же именем в базе данных Paradox с помощью метода Session.IsAlias:
Если такого алиаса не существует, она пытается добавить стандартный алиас с помощью метода Session.AddStandardAlias и сохраняет изменения с помощью метода Session.SaveConfigFile.
Если добавление алиаса fails (например, из-за проблем с правами доступа), процедура ловит исключение и сохраняет сообщение об ошибке в файле TekJrn.
Альтернативное решение:
Если вам нужно создавать более алиасов динамически,consider using a loop to populate the Psevdonm array instead of hardcoding it. You can also use a configuration file or a database to store the list of aliases and directory paths.
Обновленная версия кода:
procedureCreateAlias;vari:integer;Psevdonm:TStringList;beginPsevdonm:=TStringList.Create;// Populate the array with aliases from a configuration file or databasefori:=1toDlPsdobeginPsevdonm.Add(Format('TERM%u, %s',[i,DirectoryPaths[i]]));end;fori:=0toPsevdonm.Count-1dobeginwrstr:=Copy(Psevdonm[i],1,Pos(',',Psevdonm[i])-1);ifnotSession.IsAlias(wrstr)thenbegintrySession.AddStandardAlias(wrstr,DirectoryPaths[StrToInt(Copy(wrstr,Pos(',',wrstr)+1,Length(wrstr)))],'PARADOX');Session.SaveConfigFile;exceptSaveTekJrn('ERR:Ошибка создания алиаса - '+wrstr);Exit;end;end;// Modify the alias with the desired directory pathAParams:=TStringList.Create;AParams.Add('PATH='+DirectoryPaths[StrToInt(Copy(wrstr,Pos(',',wrstr)+1,Length(wrstr)))]));Session.ModifyAlias(wrstr,AParams);Session.SaveConfigFile;// Free the listAParams.Free;end;Psevdonm.Free;end;
В этой обновленной версии я заменил массив Psevdonm на объект TStringList, который пополняется динамически с помощью цикла. Массив DirectoryPaths assumed to be defined elsewhere in your code and contains the directory paths for each alias.
Программный код на Delphi, который создает Alias 2, заполняет массив псевдонимов, проверяет каталоги и создает или изменяет алиасы в сессии.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.