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).