![]() |
Pointer zu Word
Ich habe hier ein Problem, das ich nicht verstehe. Ich habe hier einen untypisierten Pointer, von dem ich weiß, dass er auf eine Adresse zeigt, ab der ein UInt16 gespeichert ist. Ich weiß auch, dass ich dort einen Wert zwischen 0 und 8 zu erwarten habe. Bei zwei Testdateien ist Endian einmal Intel und einmal Motorola.
Mir gelingt es aber nicht, im Debugger den korrekten Wert zu ermitteln. UInt16(Ptr) ergibt bei jedem Durchlauf andere, beliebige Werte. PAnsiChar(ptr) ergibt bei zwei Dateien die quasi richtigen Werte #1 oder #6; aber bei anderen Variablen mit gleichem Datentyp, die typischerweise vierstellige Werte haben, völligen Blödsinn. Wie macht man's richtig? |
AW: Pointer zu Word
Müsste es nicht Uint16(Ptr^) heißen? Du willst ja nicht den Zeiger selbst, sondern die Daten, auf die er zeigt.
|
AW: Pointer zu Word
Das ist jetzt ein wenig wirr.
Zeig doch mal den Sourcecode. Gruß K-H |
AW: Pointer zu Word
Zitat:
|
AW: Pointer zu Word
Zitat:
@K-H: Es handelt sich um einen Aufruf der FreeImage-DLL, mit der die EXIF-Daten von JPG eingelesen werden. Die Funktion heißt
Delphi-Quellcode:
;
function FreeImage_GetTagValue(tag: PFITAG): Pointer; stdcall; external FIDLL {$IFDEF WIN32}name '_FreeImage_GetTagValue@4'{$ENDIF};
PFITAG ist definiert als
Delphi-Quellcode:
Der Werttyp ist
// Handle to a metadata tag
FITAG = record data: Pointer; end; PFITAG = ^FITAG;
Delphi-Quellcode:
FIDT_SHORT = FREE_IMAGE_MDTYPE(3); // 16-bit unsigned integer
PS:
Delphi-Quellcode:
geht auch.
PWord(Ptr)^
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz