Hallo!
Entschuldigt bitte meine Frage. Zuerst folgender Qouelltext:
Delphi-Quellcode:
program Project3;
{$APPTYPE CONSOLE}
uses
SysUtils, SysInit, Windows;
procedure Proc1; external 'Project2.exe';
function AValue: Integer; external 'Project2.exe';
procedure Ausgabe(AText: String; AValue: Integer); external 'Project2.exe';
var LibHandle: HINSTANCE; //Wo finde ich diesen Datentyp? Hier bringt der Copiler die
//unten stehende Fehlermeldung!
begin
{ TODO -oUser -cConsole Main : Hier Code einfügen }
LibHandle := LoadLibrary('Projct2.exe');
GetProcAddress(LibHandle,'Ausgabe');
Ausgabe('Dieser Wert lautet: ', 100);
Readln;
end.
Das hier sagt mir die Delphi Hilfe:
Delphi-Quellcode:
HINSTANCE LoadLibrary(
LPCTSTR lpLibFileName // address of filename of executable module
);
In der Windows
Unit scheint der Datentyp nicht definiert zu sein.
Vom Compiler kriege ich folgende Fehlermeldung:
[Fehler] Project3.dpr(12): Konstante oder Typenbezeichner erwartet
Was soll das??? Die Hilfe sagt mir, das dert Typ HINSTANCE in der
Unit System definiert ist und die wird doch eh automatisch mit eingebunden? Aufführen der System-
Unit führt auch nicht zum Erfolg. Was kann ich hier machen, damit der Code funzt.
Hier ist noch der Code für die Bibliothek mit den zu exportierenden Routinen:
Delphi-Quellcode:
program Project2; //Enthält die zu exportierenden Routinen. (als EXE übersetzt)
{$APPTYPE CONSOLE}
uses
SysUtils, SysInit, Windows;
procedure Proc1;
begin
writeln('Aufruf der ersten Prozedur war erfolgreich!');
end;
function AValue: Integer;
begin
Result := 4;
end;
procedure Ausgabe(AText: String; AValue: Integer);
begin
writeln(AText, AValue);
end;
exports
Proc1,
AValue,
Ausgabe;
begin
end.
Wenn ich das ohne LoadLibrary versuche, erhalte ich von Windows folgende Meldung:
"Die Datei Project3.exe ist verknüpft mit dem fehlenden Export Project2.exe Ausgabe".
Deshalb gehe ich davon aus, das ich, wenn ich das mit ner EXE statt mit ner
DLL machen will, unbedingt mit LoadLibrary arbeiten muss. Aber da meckert der Compiler wegen HINSTANCE mit obiger Compilermeldung.
Was mache ich falsch? Weiß nicht mehr weiter.
schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.