- Код: Выделить всё
rogram testing;
uses Classes;
interface
type
PGetStr = function (indx: integer): string;
var
ExGetStr: PGetStr; external name 'GetStr';
FileWithStrings: TStringList;
implementation
function GetStr(indx: integer): string;
begin
result:=FileWithString.Strings[indx];
end;
begin
FileWithStrings:=TStringLisr.Create;
FileWithStrings.LoadFromFile('testing.pas');
ExGetStr:=@GetStr;
test;
FileWithStrings.Free;
end.
Ты хочешь чтобы это ещё и скомпилировалось??? Я наверное с утра совсем ничего не понимаю, но это невозможно ни в одном языке реализовать... Этож ужас . Библиотека и программа ониж не телепаты, они не могут по имени различать классы... тут проблема в общей идеологии того что ты хочешь...
если неполучится менять контекст на программный при вызове, то придётся переробатывать много строчек кода в библеотеке и менять логику многих функций , а это очень плохо.
Эээ.... а она сейчас что работает, или хотябы компилируется? :blink:
Калбеки они да, они хорошие. Суть: В библиотеку передаётся адрес на процедуру в программе и библиотека вызывает ей при необходимости, например так реализованы таймеры WinAPIшные.