Dynamiczne dorzucanie składni do SynEdit

0

Robię edytor na podstawie synedita i chciałem trochę odciążyć exe. Wpadłem więc na pomysł żeby zamiast wszystkie highlighter były od razu w kodzie źródłowym to żeby je ładować z bliblioteki DLL. Jednak mi to jakoś nie wychodzi.

Oto kod jednego z DLL:

library Pascal;

uses
  SynEditHighlighter,
  SynHighlighterPas,
  Graphics,
  Forms;

function GetSyntax:TSynCustomHighlighter; stdcall;
var HL : TSynPasSyn;
begin
     HL := TSynPasSyn.Create(Application);
     result := hl;
end;

exports
  GetSyntax name 'GetSyntax';

begin

A oto procedura która ładuje:

procedure TfrmTextViewer.ListBox1Change(Sender: TObject);
var
  DLL : THandle;
  GetSyntax : function:TSynCustomHighlighter;
begin
  if listbox1.Items[listbox1.itemindex] = '(Brak)' then exit;
  DLL := LoadLibrary(Pchar(path + listbox1.Items[listbox1.itemindex]));
  try
    SynEdit1.Highlighter := nil;
    @GetSyntax := GetProcAddress(DLL, 'GetSyntax'); 
    if @GetSyntax = nil then
    begin
        SynEdit1.Highlighter := nil;
        listbox1.itemindex := 0;
        raise Exception.Create('Nie można załadować procedury');
    end;
    SynEdit1.Highlighter := GetSyntax; 
   finally
    FreeLibrary(DLL);
  end;
end;

Gdzie popełniłem błąd???

0

Nie chce mi się analizować całości, ale to co mi się rzuciło w oczy:

GetSyntax : function:TSynCustomHighlighter;

powinno być:

GetSyntax : function:TSynCustomHighlighter; stdcall;

1 użytkowników online, w tym zalogowanych: 0, gości: 1