Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как программно создать Alias 2

Delphi , Базы данных , Alias

Как программно создать Alias 2


procedure CreateAlias();
const
  DlPs = 5;
var
  wrstr, wrstr1 :string;
  AParams: TStringList;
  Psevdonm: array [1..DlPs] of string;
  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 do
  begin
    // Для начала проверим каталоги
    wrstr1 := Copy(Psevdonm[i],Pos(',',Psevdonm[i])+1, Length(Psevdonm[i])-Pos(',',Psevdonm[i])+1);
    if not DirectoryExists(wrstr1) then
    begin
      CreateDirectory(PChar(CurrntDir+'\'+wrstr1),nil);
    end;

    // Если нет псевдонима, то создадим или подправим
    wrstr := Copy(Psevdonm[i],1,Pos(',',Psevdonm[i])-1);
    if not Session.IsAlias(wrstr) then
    begin
      try
        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.

  1. Процедура начинается с определения констант и переменных:

    • DlPs: целочисленная константа, равная 5, которая представляет количество алиасов, которые нужно создать.
    • wrstr и wrstr1: две строковые переменные, используемые для временного хранения данных.
    • AParams: объект TStringList, используемый для хранения параметров изменения алиаса.
    • Psevdonm: массив из 5 строк, каждый элемент которого представляет имя алиаса с соответствующим путем каталога.
  2. Затем процедура пополняет массив Psevdonm желаемыми алиасами и путями каталогов:

    • Psevdonm[1]: TERMNNSI, NSI (имя, каталог)
    • Psevdonm[2]: TERMNBASE, BASE
    • ...
  3. Затем процедура проходит по каждому алиасу в массиве Psevdonm:

    • Для каждого алиаса она проверяет, существует ли путь каталога с помощью функции DirectoryExists.
    • Если путь не существует, она создает новый каталог с помощью функции CreateDirectory.
  4. Далее процедура проверяет, существует ли алиас с тем же именем в базе данных Paradox с помощью метода Session.IsAlias:

    • Если такого алиаса не существует, она пытается добавить стандартный алиас с помощью метода Session.AddStandardAlias и сохраняет изменения с помощью метода Session.SaveConfigFile.
  5. Если добавление алиаса 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.

Обновленная версия кода:

procedure CreateAlias;
var
  i: integer;
  Psevdonm: TStringList;
begin
  Psevdonm := TStringList.Create;

   // Populate the array with aliases from a configuration file or database
  for i := 1 to DlPs do begin
    Psevdonm.Add(Format('TERM%u, %s', [i, DirectoryPaths[i]]));
  end;

  for i := 0 to Psevdonm.Count - 1 do begin
    wrstr := Copy(Psevdonm[i], 1, Pos(',', Psevdonm[i]) - 1);
    if not Session.IsAlias(wrstr) then begin
      try
        Session.AddStandardAlias(wrstr, DirectoryPaths[StrToInt(Copy(wrstr, Pos(',', wrstr) + 1, Length(wrstr)))], 'PARADOX');
        Session.SaveConfigFile;
      except
        SaveTekJrn('ERR:Ошибка создания алиаса - ' + wrstr);
        Exit;
      end;
    end;

     // Modify the alias with the desired directory path
    AParams := TStringList.Create;
    AParams.Add('PATH=' + DirectoryPaths[StrToInt(Copy(wrstr, Pos(',', wrstr) + 1, Length(wrstr)))]));
    Session.ModifyAlias(wrstr, AParams);
    Session.SaveConfigFile;

     // Free the list
    AParams.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




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Alias ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 23:16:26/0.0056478977203369/1