wie rufen Sie eine Dll und Parameter übergeben, um es in delphi 7
Bin ich delphi-noob, also bitte helfen Sie mir mit diesem. Habe ich eine DLL mit dem folgenden code:
library PRdll;
uses
ExceptionLog, SysUtils,Classes,Dialogs;
{$R *.res}
function DllMessage(var a:integer):Integer;stdcall;export;
begin
Showmessage('GHelloa');//this is displayed
ShowMessage(IntToStr(a));//I get the error at this point
Result:=5;
end;
exports DllMessage;
begin
end.
Den entsprechenden Aufruf der DLL wird durch diesen code:
var
FDll: TFDll;
function DllMessage(var a:integer):integer;stdcall;external 'PRDll.dll';
implementation
{$R *.dfm}
procedure TFDll.btnCallDllClick(Sender: TObject);
var
i:integer;
s1:string;
begin
i:=5;
s1:=IntToStr(DllMessage(i));
//ShowMessage(s1);
end;
Bekomme ich einen Zugriffsfehler. Warum geschieht dies . Irgendjemand ? Hilfe!!!!!
Vielen Dank im Voraus
- Gut der code ist groß, das ist, warum ich mich nicht per post. Auf jeden Fall bin ich die Buchung jetzt
- Sorry, habe ich falsch gelesen. Ich sehe keinen Grund für den Fehler.
- Können Sie überprüfen die Deklaration der DllMessage in beiden DLL-und EXE-Datei. Sind Sie sicher, es ist, wie Sie es hier haben. Als ein beiseite, ich denke nicht, dass Sie brauchen
export
aber ich glaube, dass ist harmlos. - Ich habe versucht (im wesentlichen) den obigen code, und es funktioniert. Möchten Sie vielleicht versuchen Sie, nicht zu
var
vora: integer
. Vielleicht die alte Delphi 7 nicht so. - Es ist ein Fehler im code, der du bist, NICHT zeigen. Ich ging gerade durch die Mühe, tatsächlich den Aufbau Ihrer DLL (wie angezeigt) mit Delphi 7 dann schriftlich ein 11-Linien-Konsole-Anwendung testen Sie die Funktion aufrufen, zeigen Sie uns. Es ging alles in Ordnung, funktioniert wie erwartet. Für die Platte, die ich zusammengestellt mit ExceptionLog und ohne ShareMem, in anderen Worten, genau der code, wie gepostet.
- Und die DLL in den gleichen Ordner wie die ausführbare Datei ?
var
Parameter in DLLs gearbeitet haben, seit Delphi 1!- OK, ich war mir nicht sicher, aber das wäre meine Vermutung.
- Ansonsten ist der Fehler erschienen wäre früher als die OP Ansprüche...
- -1. Code nicht zeigt die Fehler gemeldet. Echten code wurde veröffentlicht, "jetzt", aber das war über 45 Minuten vor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie Hinzugefügt sharemem Einheit?
Finden Sie in der Hilfe.
Zweite option: Kommentar der ExceptionLog Linie und versuchen Sie es erneut.
Es arbeiten fein.
Grüße.
Wird der richtige code unten geschrieben; ich bin überrascht, warum niemand konnte mir sagen, diese einfache Sache
Dieser code hat bei mir gut gearbeitet.