![]() |
AW: Float Zahlen in Hex Zahlen umwandeln
Hallo Himitsu,
vielen Dank für das Beispiel. Die Sache mit Absolute scheint wirklich sehr interessant zu sein. Das werde ich mir merken. Beim zweiten Beispiel... Nun ja ich finde es trotzdem Merkwürdig, dass der Compiler da meckert. Belegen doch beide Werte gleich viel Speicher. Vermutlich konnte man sich nicht einigen ob man bei diesem Cast nur den Ganzzahligen Wert oder den binär betrachteten Wert des belegten Speichers zurückgibt. Eine Möglichkeit diesen Cast trotzdem auszuführen währe dann aber noch folgende:
Code:
Dabei geht aber leider wieder die Typüberprüfung verloren. Da SingleVar von jedem Typ sein könnte.var SingleVar: Single; begin SingleVar := 1.1234; ShowMessage(IntToHex(Integer(Pointer(SingleVar)),8)); end; Mir persönlich gefällt dann Deine Variante mit Absolute doch besser, wenn keine Bytevertauschungen (Big <-> Little Endian) durgeführt werden müssen. |
AW: Float Zahlen in Hex Zahlen umwandeln
Es kann sein, daß der Compiler dort eine Typprüfung in der Konvertierung vornimmt. Macht die Compilermagic bei einigen Typen.
Wie z.B. auch zwischen ANSI- und UnicodeStrings, wobei dort nur eine Warnung angezeigt wird, daß man da auspassen sollte. Man kann auch ganz "böse" sein und sämtliche Prüfungen umgegehn.
Delphi-Quellcode:
Aber genauso, wie beim Absolute, sollte man beim wilden Rumgepointere unbedingt aufpassen, was man macht und möglichst auch verstehn warum man es so macht.
var
SingleVar: Single; begin SingleVar := 1.1234; ShowMessage(IntToHex(PInteger(@SingleVar)^, 8)); end; PS: [DELPHI]...[/DELPHI] |
AW: Float Zahlen in Hex Zahlen umwandeln
Zitat:
Und im Übrigen gilt natürlich Zitat:
K-H |
AW: Float Zahlen in Hex Zahlen umwandeln
Zitat:
Ja und das Thema Strings ist ja mittlerweile wirklich zu einer Wissenschaft für sich geworden. Ich selbst bin gerade am Umstieg von Delphi6 auf die XE2 dabei und habe noch einige 100000 Zeilen Quellcode zu konvertieren. Im allgemeinen macht Delphi das ja alles von alleine aber gerade Low Level programmierte Sachen, in denen mit String bzw. PChar gearbeitet wurde, ist doch einiges an eingriffen notwendig. Wenn ich das richtig verstanden habe ist der Typ AnsiString in erster Linie für SingleByte Zeichensätze gedacht. Unterstützt aber auch Multibyte, während UnicodeStrings von Vorneherein als Multibytezeichensatz angenommen werden kann. Wobei UnicodeStrings auch AnsiStrings enthalten können. Eine Warnung scheint mir deshalb doch auch ziemlich Sinnvoll. Aber ich glaube ich werde jetzt Off Topic ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 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-2025 by Thomas Breitkreuz