Einzelnen Beitrag anzeigen

NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#1

DLL / C-Header einbinden - Zugriffsverletzung

  Alt 20. Mai 2009, 16:46
Hallo zusammen!

Ich habe folgenden C-Header:

Delphi-Quellcode:
ISMM_API HANDLE ISMM_Open(void);
ISMM_API BOOL ISMM_Close(HANDLE hIsmm);
ISMM_API BOOL DIO_GetConfig(HANDLE hIsmm, PWORD pwDioConfig);
ISMM_API BOOL DIO_GetInput(HANDLE hIsmm, PWORD pwDioData);
ISMM_API BOOL DIO_SetOutput(HANDLE hIsmm, WORD wDioData);
ISMM_API BOOL DIO_GetOutput(HANDLE hIsmm, PWORD pwDioData);
Diese "Funktionen" werden von einer DLL (ISMM.DLL) bereitgestellt. Nun muss ich diese in Delphi einbinden, das sieht so aus...

Delphi-Quellcode:
function ISMM_Open(): THandle; stdcall; external 'dll\ISMM.dll';
function ISMM_Close(Handle: THandle): Boolean; stdcall; external 'dll\ISMM.dll';
function DIO_GetInput(Handle: THandle; Pointer: Pointer): Boolean; stdcall; external 'dll\ISMM.dll';
und klappt bis hierher auch. Jetzt will ich in einer Prozedur mit DIO_GetInput einen Rückgabewert auslesen, also mache ich folgendes...

Delphi-Quellcode:
procedure TfrmRun.Button1Click(Sender: TObject);
var
     IO_Handle: THandle;
     IO_Result: Word;
begin
     IO_Handle := ISMM_Open();
     if not (IO_Handle = INVALID_HANDLE_VALUE) then
     begin
          MessageDlg('Handle OK', mtWarning, [mbOK], 0);
          if (DIO_GetInput(IO_Handle, @IO_Result) = True) then
          begin
               MessageDlg('IO True', mtWarning, [mbOK], 0);
          end
          else begin
               MessageDlg('IO False', mtWarning, [mbOK], 0);
          end;
          MessageDlg(IntToStr(Integer(IO_Result)), mtWarning, [mbOK], 0);
     end
     else begin
          MessageDlg('Kein gueltiges Handle', mtWarning, [mbOK], 0);
     end;
end;
Das Handle ist OK und er springt zum Funktionsaufruf "DIO_GetInput". Dort bekomme ich einen Rückgabewert. Anschließend beendet sich aber mein Programm... also vermute ich eine Zugriffsverletzung! Was hab ich falsch gemacht?
  Mit Zitat antworten Zitat