Последняя версия DataExpress 3 beta от 9 августа 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Расширения
ИзображениеИзображениеИзображение

Как работать с параметрами коммандной строки в скрипте DataExpress под Linux?

Все вопросы, связанные с написанием скриптов и SQL-запросов.
Prepod
Интересующийся
Сообщения: 113
Зарегистрирован: 28 июн 2018, 00:07
Благодарил (а): 4 раза
Поблагодарили: 1 раз

Как работать с параметрами коммандной строки в скрипте DataExpress под Linux?

Сообщение Prepod » 24 ноя 2019, 22:17

Я пытаюсь перевести звою базу данных на Linux. Как нужно переписать скрипт чтобы он работал на Linux?
Что в линукс используется для работы с параметрами командной строки вместо kernel32 getcommandline ? и на что заменить WinCPToUtf8?

Код: Выделить всё

function GetCommandLine:PChar;
external 'GetCommandLineA@Kernel32 stdcall';


function ParseCL:String;
var CL:String;
  iFrom:integer;
begin
  CL:=WinCPToUtf8(GetCommandLine);
  if (Utf8Pos('{@',CL,1)=0) and (Utf8Pos('@}',CL,1)=0) then
begin result:=''; exit; end;
  iFrom:=Utf8Pos('{@',CL,1)+2;
  result:=Trim(Utf8Copy(CL,iFrom,Utf8Pos('@}',CL,1)-iFrom));
end;

function GetEntryID:String;
var CL:String;
  iFrom:integer;
begin
  CL:=WinCPToUtf8(GetCommandLine);
  if (Utf8Pos('{*',CL,1)=0) and (Utf8Pos('*}',CL,1)=0) then
begin result:=''; exit; end;
  iFrom:=Utf8Pos('{*',CL,1)+2;
  result:=Trim(Utf8Copy(CL,iFrom,Utf8Pos('*}',CL,1)-iFrom));
end;

procedure OpenRec(Sender:TObject);
var Fm:TdxForm;
var entryID:integer;
begin
    if Trim(ParseCL)='' then exit;
    MainWindow.Hide; // опционально
    Fm:=TDxForm.Create(ParseCL);
    entryID:=StrToInt(GetEntryID)
    Fm.OpenRecord(entryID);
    Fm.Edit;
    Fm.EditWindow.ShowModal;
  if Fm.EditWindow.ModalResult = mrOk then
    Fm.Post else Fm.Cancel;
    Fm.Close;
    Fm.Free;
    MainWindow.Close; // опционально
end;

procedure DataBase_Open;
begin
  OpenRec(nil);
end;

Аватара пользователя
Develop-Soft
Сообщения: 1645
Зарегистрирован: 05 мар 2019, 18:09
Благодарил (а): 122 раза
Поблагодарили: 444 раза
Контактная информация:

Как работать с параметрами коммандной строки в скрипте DataExpress под Linux?

Сообщение Develop-Soft » 24 ноя 2019, 23:17

Prepod писал(а):Как нужно переписать скрипт чтобы он работал на Linux?

1. Перелопатить библиотеки ядра линукса на предмет эквивалентной функции.
2. Написать отдельную so-библиотеку и в ней реализовать перехват.
3. Отказаться от командной строки и реализовать передачу http запроса на встроенный сервер.
Prepod писал(а):на что заменить WinCPToUtf8?
Убрать ее совсем т.к. в линуксе нет необходимости преобразования кодировки.


Вернуться в «Программирование в DataExpress»