Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wo kommt die $33 her? (https://www.delphipraxis.net/127488-wo-kommt-die-%2433-her.html)

Carsten1234 14. Jan 2009 11:27


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:
var DTStr: string;
begin
DateTimeToString(DTStr, 'ddmmyyyyhhmmss', Now)
Im zweiten Schritt erfolgt die Umwandlung nach Hex via
Delphi-Quellcode:
DTStr:= StrToHex(DTStr);
und im letzten Schritt wird DTStr in eine Textdatei geschrieben
Delphi-Quellcode:
{$I-}
  System.AssignFile(FOut, FILENAME);
  System.Rewrite(FOut);
{$I+}
  if System.IOResult = 0 then
  begin
    System.Writeln(FOut, DTStr);
    System.CloseFile(FOut);
  end;
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:

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

nahpets 14. Jan 2009 11:35

Re: Wo kommt die $33 her?
 
Hallo,

das sieht mir erstmal so aus, als würde das Unicode geschrieben. Jedes Zeichen belegt vier Byte?

nuclearping 14. Jan 2009 11:47

Re: Wo kommt die $33 her?
 
Warum konvertierst du das Datum in einen String, um es zu speichern?

Reinhard Kern 14. Jan 2009 11:48

Re: Wo kommt die $33 her?
 
Zitat:

Zitat von Carsten1234
Hallo zusammen,
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:

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

Hallo,

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:
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
Wenn du Dateien hex lesen willst, brauchst du eine ASCII-Tabelle, aber die meisten Hex-Editoren zeigen alternativ ASCII-Text an.

Gruss Reinhard

Edit: Scheissfont - geändert in Code zur Tabellierung

generic 14. Jan 2009 11:50

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?

Carsten1234 14. Jan 2009 11:58

Re: Wo kommt die $33 her?
 
Zitat:

Zitat von generic
vieleicht erklärst du uns nochmal dein ziel.
was möchtest du mit der hex zahl erreichen?

Der Wunsch eines Firmwareentwicklers auf der Gegenseite ist, dass in der Textdatei lediglich
3134303132303039
Wie könnte ich das - wenn überhaupt - erreichen?

Gruß, Carsten

xaromz 14. Jan 2009 12:06

Re: Wo kommt die $33 her?
 
Hallo,
Zitat:

Zitat von Carsten1234
Wie könnte ich das - wenn überhaupt - erreichen?

indem Du einfach den String in die Datei schreibst, ohne in vorher nach Hex zu wandeln.

Gruß
xaromz

Uwe Raabe 14. Jan 2009 12:10

Re: Wo kommt die $33 her?
 
Dein Formatstring passt nicht!

Delphi-Quellcode:
DateTimeToString(DTStr, 'ddmmyyyyhhmmss', Now)
muss heißen

Delphi-Quellcode:
DateTimeToString(DTStr, 'ddmmyyyyhhnnss', Now)
Die Minuten werden mit n bzw. nn angesprochen, mm ist schon für den Monat reserviert.

Carsten1234 14. Jan 2009 12:14

Re: Wo kommt die $33 her?
 
Zitat:

Zitat von xaromz
Hallo,
indem Du einfach den String in die Datei schreibst, ohne in vorher nach Hex zu wandeln.


:wall: :wall: :wall:

DeddyH 14. Jan 2009 12:15

Re: Wo kommt die $33 her?
 
Zitat:

Zitat von Uwe Raabe
Die Minuten werden mit n bzw. nn angesprochen, mm ist schon für den Monat reserviert.

Nicht ganz ;)
Zitat:

Zitat von Delphi 5-Hilfe
mm
Zeigt den Monat als Zahl mit führender Null an (01-12). Folgt der Bezeichner mm direkt nach der Angabe h oder hh, wird statt des Monats die Minute angezeigt.

Sicherheitshalber würde ich aber auch nn verwenden, das ist auf jeden Fall eindeutig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 Uhr.
Seite 1 von 2  1 2      

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