Witam! pewnie to proste ale nie moge znaleźć tu odp. na moje pytanie.
Mianowicie, mam ddl-a który robi coś tam. np wywolanie procedury w ddl-u uruchamia polecenie ShowMessage('jestem wywolany z ddl-a'); ok, działa, ale ja chce za pomocą ddl-a zmienic wartość Caption główniej formy i to już niestety nie działa, czyli moje pytanie brzmi: jak za pomocą dll-a zmieniać parametry programu takie jak caption, enabled czy top? Generalnie chodzi mi o to że procedura w bibliotece cos sobie wyliczy ale wynik tych obliczeń mam wykorzystać w programie.
Stwórz funkcję w DLL robiącą coś i wynik tej funkcji w programie przekazuj do odpowiedniej właściwości.
Na przykład ;)
Label.Caption := FunkcjaZDll(parametry);
Ewentualnie do DLL możesz przekazywać wskaźnik do komponentu, którego chcesz zmienić własność, ale to spowoduje, że będziesz musiał moduł z daną klasą dołączyć do listy modułów DLL, co spowoduje znaczne zwiększenie jej rozmiaru.
Też tak próbowałem ale program sie wywala, sam nie wiem dlaczego, jak widać kod jest bardzo prosty ale hmmm nie dziala :( funkcja z dll-a przekazuje swój rezultat do aplikacji, ale zaraz potem program sie wykrzacza i niebardzo wiem dlaczego.
oto moj kod DLL:
library dll;
function SetW(S : string): string; stdcall;
begin
result := 'czesc ' + S ;
end;
exports
SetW;
begin
end.
A to mam w EXE-ku:
procedure TForm1.Button1Click(Sender: TObject);
var
DLL : THandle;
MojaFunkcja : function (S : string): string; stdcall;
begin
DLL := LoadLibrary('DLL.dll');
MojaFunkcja := GetProcAddress(DLL, 'SetW');
form1.Caption := MojaFunkcja('jestem napisem');
FreeLibrary(DLL);
end;
W caption mojej formy po wcisnięciu buttona pojawia sie mile oczekiwany napis
"czesc jestem napisem" ale zaraz potem program sie sypie :( i niebardzo wiem czemu.
to może zacznij od czytania tego, co do Ciebie napisał Borland - wielkiego komentarza, który został dodany w bibliotece w momencie jej tworzenia :>