AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer zu Word

Ein Thema von Benmik · begonnen am 7. Apr 2020 · letzter Beitrag vom 7. Apr 2020
Antwort Antwort
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#1

Pointer zu Word

  Alt 7. Apr 2020, 21:29
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Pointer zu Word

  Alt 7. Apr 2020, 21:35
Müsste es nicht Uint16(Ptr^) heißen? Du willst ja nicht den Zeiger selbst, sondern die Daten, auf die er zeigt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Pointer zu Word

  Alt 7. Apr 2020, 21:36
Das ist jetzt ein wenig wirr.
Zeig doch mal den Sourcecode.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.051 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Pointer zu Word

  Alt 7. Apr 2020, 21:48
Müsste es nicht Uint16(Ptr^) heißen? Du willst ja nicht den Zeiger selbst, sondern die Daten, auf die er zeigt.
Ich bin für PWord(Ptr)^.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#5

AW: Pointer zu Word

  Alt 7. Apr 2020, 21:57
Müsste es nicht Uint16(Ptr^) heißen?
Ja verdammich, ganz genauso ist es. Ich bin im Laufe meiner vielen Versuche auch selbst auf die Idee gekommen, weiß der Geier, warum ich das dann nicht weiter verfolgt bzw. gemerkt habe. Danke!

@K-H: Es handelt sich um einen Aufruf der FreeImage-DLL, mit der die EXIF-Daten von JPG eingelesen werden.
Die Funktion heißt
function FreeImage_GetTagValue(tag: PFITAG): Pointer; stdcall; external FIDLL {$IFDEF WIN32}name '_FreeImage_GetTagValue@4'{$ENDIF}; ;
PFITAG ist definiert als
Delphi-Quellcode:
  // Handle to a metadata tag
  FITAG = record
    data: Pointer;
  end;
  PFITAG = ^FITAG;
Der Werttyp ist FIDT_SHORT = FREE_IMAGE_MDTYPE(3); // 16-bit unsigned integer
PS: PWord(Ptr)^ geht auch.

Geändert von Benmik ( 7. Apr 2020 um 21:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz