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 vor a: 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.

InformationsquelleAutor CyprUS | 2011-07-07
Schreibe einen Kommentar