Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.034 Beiträge
 
Delphi 12 Athens
 
#7

AW: Probleme mit Übergabe in DLL

  Alt 11. Okt 2010, 09:03
Zitat:
Hilf mir bitte einfach mit einem Stück Code weiter.(Wäre jedenfalls nett)
Es wurde doch ganz klar und deutlich gesagt, wo das Problem liegt?

Deine Parameterdeklaration ist falsch.
> DWORD statt PDWORD
(wobei LPLONG eigenlich ein PLongInt wäre, aber egal)

Delphi-Quellcode:
function FT_GetComPortNumber(ftHandle: THandle; ComPortNumber: PLongWord): FT_Result; stdcall;
// oder
function FT_GetComPortNumber(ftHandle: THandle; var ComPortNumber: LongWord): FT_Result; stdcall;
[edit]
nja, ob das so unbedingt besser ist?

PCHAR in C++ = Zeiger auf ein CHAR (1 unsigned Byte in C++)
PCHAR in Delphi = Zeiger auf ein Char (1 Zeichen eines Strings dynamischer Größe ... ANSI(bis D2007) = 1 Byte, Unicode(ab D2009) = 2 Byte)

Es ist ja schließlich bekannt, was es für ein Typ sein soll > ein Zeiger auf DWORD/LongWord

[add]
Delphi-Quellcode:
Function GetFTComPortNumber: String;
var Port: LongWord;
  Res: FT_Result;
begin
  //Res := FT_GetComportNumber(FT_handle, Port);
  Res := FT_GetComportNumber(FT_handle, @Port);
  If Res = FT_OK then Result := 'COM' + IntToStr(Post)
  Else {Fehlermeldung oder Standardwert zurückgeben}
end;
GetFTComPortNumber diese Funktion soll also, laut ihrem Namen den COM-Port zurückliefern, macht sie aber nicht.
In deinem Fall wäre wohl ReadFTComPortNumber o.Ä. besser.

PS: Globale Variablen?
Verpack besser alles schön in eine Klasse, mit Feldern(Variablen) und Methoden(Funktionen).
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Okt 2010 um 09:12 Uhr)
  Mit Zitat antworten Zitat