Hallo,
ich habe heute angefangen eine eigne
DLL zu schreiben sie sieht im moment genau so aus:
Delphi-Quellcode:
library myStringListDll;
uses
SysUtils,Classes,dialogs;
{$R *.res}
procedure GibtNachricht_Aus(Str:Pchar); external 'myStringListDll.dll' index 1;
type
TTest = class
private
public
procedure GibtNachricht_Aus(str:Pchar);
end;
procedure TTest.GibtNachricht_Aus;
begin
ShowMessage(Str);
end;
exports
GibtNachricht_Aus;
begin
end.
ich habe mir verschiende tutorials angesehen und das grundgerüst von meiner
DLL davon abzuleiten.
Das beispiel mit der Classe habe ich in einem DelphiForum gefunden(weiß aber nicht mehr ob hier oder im
DF)
mein ziel ist es eine eigne TStringList mit erweiterten funktionen zu entwicklen alles auch kein problem
ich versuche jetzt diese funktion wie folgt einzubinden(beispiel aus einem
DLL tutor)
Delphi-Quellcode:
unit udll;
interface
uses windows,dialogs,SysUtils;
type
PDRGibtNachrichtaus =
procedure(Str:Pchar);
procedure LoadDll;
procedure GibtnachrichtAus(Test:PChar);
cdecl;
var
Nachricht:PDRGibtNachrichtaus =
nil;
implementation
Function WhatIfNoEntry: Integer;
begin
ShowMessage('
Fehler');
Halt;
end;
procedure LoadDll;
var
lib:THandle;
begin
lib := LoadLibrary('
D:\Daten\eigene\delphi\dlls\myStringList\dll\myStringListDll.dll');
case lib = 0
of
TRUE:
begin
@Nachricht := @whatifnoentry;
messagebox(0, '
DLL kann nicht geladen werde',
nil, 0);
end;
else begin
@Nachricht := GetProcAddress(lib, '
GibtnachrichtAus');
if not Assigned(Nachricht)
then
@Nachricht := @whatifnoentry;
end;
end;
end;
procedure GibtnachrichtAus(Test:PChar);
begin
Nachricht(test);
end;
end.
Im Hauptform rufe ich dann nur noch Load auf ein gibtNachRichtAus doch leider wird nur die Function
whatifnoentry weil so vermute ich bei @Nachricht := GetProcAddress(lib, 'GibtnachrichtAus'); irgenwas schiefläuft.
Kann mir jemand sagen was ich falsch mache ?
mein ziel ist es eine eigne klasse in ein
DLL zu packen - eigentlich nicht weiter schwirig trotzdem habe ich probleme damit - leider -
Vielen dank im voraus für eure Hilfe