Hallo,
ich habe folgendes vor. Schreibe gerade ein Programm und möchte nun einige functionen und proceduren in eine
Dll auslagern. Das klappt soweit auch ganz gut nur steh ich jetzt wieder einmal vor einem Problem.
In der Anwendung direkt würde es so aussehen:
Delphi-Quellcode:
function test(Woher: TForm; Zeichen: String):String;
begin;
//Mach hier was und so wenn nicht kommt Fehler
Application.MessageBox(Woher, 'blablalba', usw. usw.);
//Mach was mit Zeichen;
Result := Zeichen;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Edit2.Text := test(self, Edit1.Text);
end;
so mal aus dem Kopf heraus. Jetzt versuche ich schon seit Stunden das gleiche Ergebnis mit ner
Dll hinzubekommen. Mein Problem liegt darin das ich es einfach nicht fertig bringe den Text vom Programm in die
Dll zu übergeben und von dort wieder zurück an das Programm.
Weiß jemand ne einfache Möglichkeit ohne viel Code die einwandfrei funktioniert und verständlich nach zuvollziehen ist?
Bisher sehen meine Aufrufe bei den
Dll's so aus:
Delphi-Quellcode:
type
TEditKommaAusgang = procedure(Woher: TForm; Von: TEdit); stdcall;
procedure Fehler(Woher: TForm; Text: String);
begin
MessageBox(Woher.Handle, PChar(Text), 'Fehler', MB_OK OR MB_ICONERROR);
Application.Terminate;
end;
procedure EditKommaAusgang(Woher: TForm; Von: TEdit);
var
EditKommaAusgang: TEditKommaAusgang;
DllHandle: THandle;
begin
if not FileExists('mtrcnc32.dll') then
begin
Fehler(Woher, 'Die Datei "mtrcnc32.dll" wurde nicht gefunden!');
end;
DllHandle := LoadLibrary(PChar(ExtractFilePath(ParamStr(0))+'mtrcnc32.dll'));
if DllHandle <> 0 then
begin
@EditKommaAusgang := GetProcAddress(DllHandle, 'EditKommaAusgang');
if @EditKommaAusgang <> nil then
begin
EditKommaAusgang(Woher, Von);
end;
FreeLibrary(DllHandle);
end;
end;
Funktioniert alles wunderprächtig nur das mit dem String an
Dll und wieder zurück will nicht klappen. Irgendwas mach ich wohl falsch. Und ja ich hab mir schon Tutorials angesehen und gegoogelt wie ein wilder aber ich komme auf keinen grünen Zweig.
Gruß Arma