AGB  ·  Datenschutz  ·  Impressum  







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

Wo kommt die $33 her?

Ein Thema von Carsten1234 · begonnen am 14. Jan 2009 · letzter Beitrag vom 14. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#1

Wo kommt die $33 her?

  Alt 14. Jan 2009, 11:27
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
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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 11:35
Hallo,

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

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 11:47
Warum konvertierst du das Datum in einen String, um es zu speichern?
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#4

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 11:48
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
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 11:50
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?
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#6

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 11:58
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
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 12:06
Hallo,
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#8

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 12:10
Dein Formatstring passt nicht!

DateTimeToString(DTStr, 'ddmmyyyyhhmmss', Now) muss heißen

DateTimeToString(DTStr, 'ddmmyyyyhhnnss', Now) Die Minuten werden mit n bzw. nn angesprochen, mm ist schon für den Monat reserviert.
Uwe Raabe
  Mit Zitat antworten Zitat
Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#9

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 12:14
Zitat von xaromz:
Hallo,
indem Du einfach den String in die Datei schreibst, ohne in vorher nach Hex zu wandeln.

  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Wo kommt die $33 her?

  Alt 14. Jan 2009, 12:15
Zitat von Uwe Raabe:
Die Minuten werden mit n bzw. nn angesprochen, mm ist schon für den Monat reserviert.
Nicht ganz
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.
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
Antwort Antwort
Seite 1 von 2  1 2      


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 20:35 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