Einzelnen Beitrag anzeigen

pantarhei

Registriert seit: 22. Jul 2010
9 Beiträge
 
Delphi 7 Professional
 
#8

AW: String array als Parameter für externe DLL?

  Alt 27. Jul 2010, 14:18
[EDIT]
Ist keine COM-Dll. Ist eine DLL zum ansteuern eines Venescanners.
[/EDIT]

Type
Delphi-Quellcode:
type
  PPchar = ^PChar;
DLL
function Identify(ATemplates: PPChar; ATemplatesCount: Cardinal; var ATemplateIndex: Cardinal; var ARetCode: Cardinal): Integer; cdecl; external 'Identify.dll'; Aufruf
Delphi-Quellcode:
var
  scanIndex, retCode: Cardinal;
  Args: array of PChar;
  PArg: PPChar;
  ArgCount: Cardinal;
begin
  SetLength(Args, 2);
  Args[0] := 'template1';
  Args[1] := 'template2';
  PArg := @Args[0];
  ArgCount := High(Args) + 1;

  Identify(PArg, ArgCount, scanIndex, retCode);
end;
Ergibt dann eine EAccessViolation

=> Acces violation at address 7C80A300 in module 'kernel32.dll'. Read of adress...

Wenn ich jetzt anstelle des von dir vorgeschlagenen ^PChar in der Deklaration einen PWideChar verwende und anstelle eines array of PChar ein array of WideChar verwende kommt es beim Aufruf wenigstens nicht mehr zu einer AV. Allerdings macht die Funktion auch nicht dass was sie soll.

So langsam aber sicher blick ich gar nicht mehr durch.

Geändert von pantarhei (27. Jul 2010 um 14:24 Uhr) Grund: Code-Tags durch Delphi-Tags ersetzt
  Mit Zitat antworten Zitat