Einzelnen Beitrag anzeigen

Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Konvertierungsproblem C++/VB nach Delphi. Buffer als var Parameter in/aus DLL

  Alt 24. Sep 2010, 11:34
Hallo...

Ich beiss mir grad die Zähne an ner VB-Übersetzung aus.

Code:
Private Declare Function MCardGetAttrib Lib "MCSCM.DLL" (ByVal hMCardContext As Long, ByVal dwAttrId As Long, ByVal pbAttr As String, ByRef pcbAttrLen As Long) As Long

[..]

  Dim S As String
  Dim lSize As Long
  Dim lReturn As Long
   
  S = String(100, 0)
  lSize = 4
  lReturn = MCardGetAttrib(hMCardContext, dwAttrId, S, lSize)
Delphi-Quellcode:
function MCardGetAttrib(hMCardContext: THandle; dwAttrId: Integer; pbAttr: PAnsiChar; var pcbAttrLen: Integer): Integer; stdcall; external 'MCSCM.DLL';

[..]

var Return: Integer;
    s: AnsiString;
    size: Integer;

[..]

  s := DupeString(Chr(0), 100);
  size:=4;
  Return:=MCardGetAttrib(hMCardContext, MCARD_ATTR_TYPE, PAnsiChar(s), size);
Die Fehlermeldung für MCardGetAttrib aus der DLL lautet "Invalid Parameter".

Die Verwendung von PAnsiChar hat an anderer Stelle schon mal geklappt. Aber hier vermute ich, dass es Probleme mit den Nullchars gibt. Wie geht man hier vor?

Hoffe jemand hat ne zündende Idee.

Gruß,

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?

Geändert von Tonic1024 (24. Sep 2010 um 15:29 Uhr) Grund: Topic hat sich beim Lösungsansatz irgendwie verschoben.
  Mit Zitat antworten Zitat