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

Место, где разработчики плагинов могут поделиться своим опытом.
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

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

Post by Dark »

Latest post of the previous page:

Last edited by Dark on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятаны технические подробности
thenext
Posts: 8
Joined: Sat 26 Mar, 2011 15:31
Location: Екатеринбург

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

Post by thenext »

Dark wrote:
А откуда берется в "Result := FARAPI.DialogInit(DPluginNumber, DX1, DY1, DX2, DY2, DHelpTopic, DItem,DItemsNumber, 0, 0, @DlgProc, 0);"
FARAPI ????
У меня Делфя ругается на него, [Error] newplug.dpr(41): Undeclared identifier: 'FARAPI'
Что то подключить может быть надо еще? (Подключен Plaginw in plaginw.pas)
User avatar
SUSim
Posts: 1553
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 13 times

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

Post by SUSim »

Я тебе говорю посмотри у меня в подписи исходники, чистый паскаль, даже без объектов!

Code: Select all

uses
  Windows, PluginW, FarLib;

var 
  API: TPluginStartupInfo;
  FSF: TFarStandardFunctions;
...
procedure SetStartupInfoW(var psi: TPluginStartupInfo); stdcall;
  begin
    Move(psi,API,SizeOf(API));
    Move(psi.FSF^,FSF,SizeOf(FSF));  
  end;
...
API.DialogInit(...
...
SimSU ··· ·· -- ··· ··-
thenext
Posts: 8
Joined: Sat 26 Mar, 2011 15:31
Location: Екатеринбург

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

Post by thenext »

Смотрю.... и нифига не понимаю... :(
Что мне нужно то чтоб диалог сварганить???

И еще вопрос что за тип констант со звездочкой?
типа const wchar_t *HelpTopic,
const wchar_t * const *Items,

Как в делфи должно выглядеть вот это:
void WINAPI SetStartupInfoW(
const struct PluginStartupInfo *Info
);
Last edited by thenext on Sat 16 Apr, 2011 10:12, edited 1 time in total.
thenext
Posts: 8
Joined: Sat 26 Mar, 2011 15:31
Location: Екатеринбург

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

Post by thenext »

Вот посмотрите пожалуйста, в чем проблема?
Хочу мессадж вывести при открытии плагина, все компилится а фар ругается.
Attachments
messagePLUG.rar
(73.38 KiB) Downloaded 159 times
Игорь Юдинцев
Posts: 725
Joined: Sun 03 Apr, 2005 22:00
Location: Казань
Been thanked: 2 times

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

Post by Игорь Юдинцев »

thenext wrote:Вот посмотрите пожалуйста, в чем проблема?
Хочу мессадж вывести при открытии плагина, все компилится а фар ругается.
1) PluginW.pas предназначен для плагинов к FAR 2.0, а значит, имена экспортируемых плагином функций должны заканчиваться буквой W, т.е. GetPluginInfoW, а не GetPluginInfo. Соответственно, в TPluginInfo должны лежать юникодные строки.
2) переменная, объявленная в строке 38, не инициализирована. Функцию Message:TFarApiMessage FAR передаёт плагину через аргумент экспортируемой плагином функции SetStartupInfoW, вот там её и нужно сохранить, чтобы затем вызывать при необходимости. SUSim выше уже привёл пример кода.
User avatar
SUSim
Posts: 1553
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 13 times

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

Post by SUSim »

ВОТ ТЕБЕ ВСЕ ПОПРАВЛЕНО и ПРОВЕРЕНО :)
SimSU ··· ·· -- ··· ··-
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

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

Post by Dark »

thenext wrote:Смотрю.... и нифига не понимаю... :(
Что мне нужно то чтоб диалог сварганить???

И еще вопрос что за тип констант со звездочкой?
типа const wchar_t *HelpTopic,
const wchar_t * const *Items,

Как в делфи должно выглядеть вот это:
void WINAPI SetStartupInfoW(
const struct PluginStartupInfo *Info
);
const wchar_t *HelpTopic, - указатель на топик помощи
const wchar_t * const *Items - указатель на массив элементов

void WINAPI SetStartupInfoW( const struct PluginStartupInfo *Info) -

Code: Select all

var FARAPI: TPluginStartupInfo;

procedure SetStartupInfoW(var psi: TPluginStartupInfo); stdcall;
begin
  Move(psi, FARAPI, SizeOf(FARAPI));
end;
Dark
Posts: 47
Joined: Mon 08 Nov, 2010 20:45

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

Post by Dark »

thenext wrote:
Dark wrote:
FARAPI ????

Ну дык переменную объявить надо!
var FARAPI: TPluginStartupInfo
Max Rusov
Posts: 3644
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 15 times

lng.generator для Delphi...

Post by Max Rusov »

lng.generator для Delphi...

...есть такой?
Last edited by HaRT on Fri 18 Dec, 2020 17:15, edited 1 time in total.
Reason: Текст прояснён после объединения Тем
2useven10
Posts: 4407
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 227 times

Re: lng.generator для Delphi...

Post by 2useven10 »

вроде нет.
луа скрипт для конвертации с++ хидера в паскаль имхо несложно сделать...
2useven10
Posts: 4407
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 227 times

Re: lng.generator для Delphi...

Post by 2useven10 »

например:
Max Rusov
Posts: 3644
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 15 times

Re: lng.generator для Delphi...

Post by Max Rusov »

К сожалению, это неудобно включать в состав make-скриптов. Но все равно, спасибо, конечно.
User avatar
WARP ItSelf
Самый умный
Posts: 1011
Joined: Tue 15 Mar, 2005 23:19
Contact:

Re: lng.generator для Delphi...

Post by WARP ItSelf »

Ну можно поправить и пересобрать сам lng.generator. Там в паре мест вроде строки поменять всего.
Никто не знал, а я...
2useven10
Posts: 4407
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 7 times
Been thanked: 227 times

Re: lng.generator для Delphi...

Post by 2useven10 »

Max Rusov
Ничуть не более неудобно, чем родной lng.generator (если lua есть в PATH).
Пример для генерации из фаровского языкового файла
(все файлы в текущем каталоге, имя сишного хидера в farlang.templ изменено на farlang.inc).

Code: Select all

farlang.pas : farlang.templ
	@echo generating language files
	@lng.generator.exe $<
	@luajit enum2pas.lua farlang.inc
Warp Itself
Если переделывать, лучше добавить ключ -pas
User avatar
DrKnS
Posts: 6040
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 11 times
Been thanked: 401 times

Re: lng.generator для Delphi...

Post by DrKnS »

Code: Select all

добавить ключ -pas
Зачем?
Вынести в .templ целиком формат хедера, футера и разделителей строк, а дальше каждый сам себе настроит.
Post Reply

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