![]() |
Wo kommt die $33 her?
Hallo zusammen,
ein aktuelles Datum soll (ohne den Punkt dazwischen) nach HEX konvertiert und in eine Textdatei geschrieben werden. Im ersten Schritt wird das aktuelle Datum in einen String transferiert mit
Delphi-Quellcode:
Im zweiten Schritt erfolgt die Umwandlung nach Hex via
var DTStr: string;
begin DateTimeToString(DTStr, 'ddmmyyyyhhmmss', Now)
Delphi-Quellcode:
und im letzten Schritt wird DTStr in eine Textdatei geschrieben
DTStr:= StrToHex(DTStr);
Delphi-Quellcode:
Ausgehend vom heutigen Datum (14.01.2009) sehe ich in der Datei, wenn ich sie mit einem Texteditor öffne (Windows Editor, TextPad, MED) die Zeile:
{$I-}
System.AssignFile(FOut, FILENAME); System.Rewrite(FOut); {$I+} if System.IOResult = 0 then begin System.Writeln(FOut, DTStr); System.CloseFile(FOut); end; 3134303132303039 Besser lesbar: 31 34 30 31 32 30 30 39 Passt. Schaue ich mir hingegen die Inhalt der Textdatei mit einem Hex-Editor (HexEdit) an, sehe ich dort: 33313334333033313332333033303339 Besser lesbar: 33 31 33 34 33 30 33 31 33 32 33 30 33 30 33 39 Fragen: 1) Woher kommt immer diese 33? 2) Kann man das "Dazwischenschreiben" der 33 unterbinden? Dank vorab und Gruß, Carsten |
Re: Wo kommt die $33 her?
Hallo,
das sieht mir erstmal so aus, als würde das Unicode geschrieben. Jedes Zeichen belegt vier Byte? |
Re: Wo kommt die $33 her?
Warum konvertierst du das Datum in einen String, um es zu speichern?
|
Re: Wo kommt die $33 her?
Zitat:
ganz einfach: ASCII-Code für "3" ist hex 33 (für "4" hex 34 usw.). Also belegt eine "3" im Text in der Datei ein Byte mit hex 33 (in Delphi $33). Ist schon seit 50 Jahren so und hat mit Unicode nix zu tun. Also:
Delphi-Quellcode:
Wenn du Dateien hex lesen willst, brauchst du eine ASCII-Tabelle, aber die meisten Hex-Editoren zeigen alternativ ASCII-Text an.
Besser lesbar:
ASCII hex 33 31 33 34 33 30 33 31 33 32 33 30 33 30 33 39 Text 3 1 3 4 3 0 3 1 3 2 3 0 3 0 3 9 Gruss Reinhard Edit: Scheissfont - geändert in Code zur Tabellierung |
Re: Wo kommt die $33 her?
wenn du strtohex verwendest werden die binär information
31 34 30 31 32 30 30 39 ^- hexcodes vom string: 14012009 in Zahlen um gewandelt. was du in deinen hexeditor siehts ist genau die ascii code welche das oben ergeben. 33 31 33 34 33 30 33 31 33 32 33 30 33 30 33 39 ist in string Darstellung: 3 1 3 4 3 0 3 1 3 2 3 0 3 0 3 9 also alles so wie es sein sollte bzw wie du es programmiert hast. vieleicht erklärst du uns nochmal dein ziel. was möchtest du mit der hex zahl erreichen? |
Re: Wo kommt die $33 her?
Zitat:
3134303132303039 Wie könnte ich das - wenn überhaupt - erreichen? Gruß, Carsten |
Re: Wo kommt die $33 her?
Hallo,
Zitat:
Gruß xaromz |
Re: Wo kommt die $33 her?
Dein Formatstring passt nicht!
Delphi-Quellcode:
muss heißen
DateTimeToString(DTStr, 'ddmmyyyyhhmmss', Now)
Delphi-Quellcode:
Die Minuten werden mit n bzw. nn angesprochen, mm ist schon für den Monat reserviert.
DateTimeToString(DTStr, 'ddmmyyyyhhnnss', Now)
|
Re: Wo kommt die $33 her?
Zitat:
:wall: :wall: :wall: |
Re: Wo kommt die $33 her?
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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