Разработка плагинов на Delphi/ Pascal

Место, где разработчики плагинов могут поделиться своим опытом.
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Headers для Delphi и FPC

Post by Yegor »

Latest post of the previous page:

Skirda wrote:Эххх... если бы Max Rusov (или еще какой знаток Паскаля) еще и вот эти файлы - FarColorW.pas, FarKeysW.pas и PluginW.pas - в порядок привел (ну и в актуальности содержал)... :-)
Я согласен, но компилятор у меня Delphi XE, вот под него могу :)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Headers для Delphi и FPC

Post by SUSim »

Yegor wrote:Я согласен, но компилятор у меня Delphi XE, вот под него могу :)
А причем тут компилятор? :popcorn:
SimSU ··· ·· -- ··· ··-
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Плагин на Object Pascal

Post by Yegor »

Попробуйте откомпилить на 7-м:

Code: Select all

type
  FARSTDSPRINTF = function (
    Buffer: PChar;
    Format: PChar): Integer; cdecl varargs;

type
  FARSTDSNPRINTF = function (
    Buffer: PChar;
    Sizebuf: size_t;
    Format: PChar): Integer; cdecl varargs;

type
  FARSTDSSCANF = function (
    Buffer: PChar;
    Format: PChar): Integer; cdecl varargs;
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Плагин на Object Pascal

Post by Max Rusov »

На то есть ifdef'ы...
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Плагин на Object Pascal

Post by Yegor »

Ну во-первых нужно вспоминать, что в той или иной версии не работало. Да и изменять свой конвертор ради ifdef-ов не хочется.

Здесь лежать хедеры, кому надо - добавляйте.
http://y-projects.googlecode.com/svn/tr ... .pas/Far3/
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Плагин на Object Pascal

Post by Max Rusov »

Надо бы PChar на PWideChar поменять...
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Плагин на Object Pascal

Post by Yegor »

Это в конвертере не проблема сделать, просто я привык что Char уже давно юникодный. И в своем коде стараюсь избавиться (а точнее уже избавился) от Wide* типов (кроме редких СОМ интерфейсов).
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Плагин на Object Pascal

Post by Max Rusov »

Но в хидеры лучше делать максимально совместимыми. Есть старые версии Delphi, есть FreePascal...
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Плагин на Object Pascal

Post by SUSim »

Yegor wrote:Попробуйте откомпилить на 7-м:
Если уж тайпкаст size_t используется, то почему PFarChar не использовать, типа?

Code: Select all

type 
  PFarChar = PWideChar; //PFarChar = PChar;

type
  FARSTDSPRINTF = function (
    Buffer: PFarChar;
    Format: PFarChar): Integer; cdecl varargs;
...
SimSU ··· ·· -- ··· ··-
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Плагин на Object Pascal

Post by Yegor »

1. Тему эту нужно отпочковать (просьба нашим доблестным админам)
2. В какой версии Delphi появился UInt64 и NativeUInt?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Плагин на Object Pascal

Post by Max Rusov »

Я просто делаю такие объявления:

Code: Select all

type
 {$ifdef CPUX86_64}
  INT_PTR = PtrInt;
  LONG_PTR = PtrInt;
  DWORD_PTR = PtrUInt;
  SIZE_T = PtrUInt;
 {$else}
  INT_PTR = Integer;
  LONG_PTR = Integer;
  DWORD_PTR = Cardinal;
  SIZE_T = Cardinal;
 {$endif CPUX86_64}
Этого достаточно для хидеров и это совместимо со всеми версиясм Delphi и FPC
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Headers для Delphi и FPC

Post by Yegor »

Сделал так:

Code: Select all

{$IFDEF FPC}

{$MODE DELPHI}

type
  INT_PTR = PtrInt;
  LONG_PTR = PtrInt;
  DWORD_PTR = PtrUInt;
  size_t = PtrUInt;
  FarChar = WideChar;

{$ELSE}

{$IFDEF UNICODE}

type
  size_t = NativeUInt;
  FarChar = Char;

{$ELSE}

type
  INT_PTR = Integer;
  LONG_PTR = Integer;
  DWORD_PTR = Cardinal;
  LPBYTE = PByte;
  size_t = Cardinal;

  FarChar = WideChar;

  UInt64 = Int64;

{$ENDIF}

{$ENDIF}
Новая версия там же (http://y-projects.googlecode.com/svn/tr ... .pas/Far3/). Нет Делфи 7 чтоб проверить.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
User avatar
Skirda
Posts: 3475
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 8 times

Re: Headers для Delphi и FPC

Post by Skirda »

Судя по последнему комменту к Mantis#986 у Макса есть доступ на коммит *.pas в официальный репозитарий.
Так что... :-)
We are the Borg. You will be assimilated.
So Say We All!
User avatar
SUSim
Posts: 1633
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 9 times
Been thanked: 25 times

Re: Headers для Delphi и FPC

Post by SUSim »

я ЗА! Он свой PluginW.pas поправляет регулярно!
Егоровский подход мне тоже нравится: автоматика - есть автоматика, единственное, что - его надо убедить не привязываться к конкретным типам, (языкам) паскаля!
SimSU ··· ·· -- ··· ··-
Yegor
Posts: 1326
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 32 times
Been thanked: 61 times

Re: Headers для Delphi и FPC

Post by Yegor »

Уже отвязал, завтра еще одно изменение внесу, по поводу "varargs".
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

Re: Плагин на Object Pascal

Post by Dark »

Last edited by Dark on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятаны технические подробности
Post Reply

Return to “Разработка плагинов”