Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Vermutlich Hex Daten Umwandeln (https://www.delphipraxis.net/200226-vermutlich-hex-daten-umwandeln.html)

Gausi 1. Apr 2019 19:07

AW: Vermutlich Hex Daten Umwandeln
 
Zitat:

Zitat von freimatz (Beitrag 1429266)
Dachte ich zuerst auch, war früher vielleicht auch so. Nach https://de.wikipedia.org/wiki/Unicode gehört die Kodierung aber auch dazu.

Nuja, wenn man sich das Ziel setzt, einen globalen, allgemein gültigen Standard bzgl. aller Schriftzeichen zu etablieren, dann muss man sich auch darum kümmern, wie man diese Nummern am Ende tatsächlich in einer Datei als Bytefolge ablegt. Daher gehören die Kodierungen zu Unicode dazu. Aber eine Kodierung wie UTF-16 ist nicht Unicode, sie ist (ein wichtiger) Teil des Gesamtkonzepts, bzw. eine Möglichkeit, wie man die Unicode-Nummerierung abspeichert. UTF-8 ist eine weitere, und beide haben ihre Vor- und Nachteile.

Aber ich glaube, wir schweifen vom Thema ab. ;-)

Ydobon 1. Apr 2019 19:10

AW: Vermutlich Hex Daten Umwandeln
 
Also wenn, dann hier: http://unicode.org/ Aber Änderungen gab es tatsächlich, der allgemeine Standard wurde auf die Beschränkungen von UTF-16 und UCS mit UTF somit praktisch gleich gesetzt.

Dumpfbacke 1. Apr 2019 19:15

AW: Vermutlich Hex Daten Umwandeln
 
Hallo Delphianer,
als erstes habe ich mal mein Delphi angepasst. Ich habe etwas neuers als D7. Sorry hate ich gar nicht mehr im Auge.

Zitat:

Zitat von Redeemer (Beitrag 1429190)
Das ist kein UTF-8. Das ist UCS-2LE oder UTF-16LE (kann man am Beispiel nicht erkennen, ist den meisten Usern aber auch egal), das wird gerne falsch als Unicode bezeichnet. Bei Delphi ab Version 2009 geht so etwas:
Delphi-Quellcode:
var
  bs: TByteStream;
  sl: TStringList;
begin
  bs := TByteStream.Create(FieldByName('bla').AsBytes);
  try
    sl := TStringList.Create();
    try
      sl.LoadFoomStream(bs, TEncoding.Unicode);
      // tu was
    finally
      sl.Free();
    end;
  finally
    bs.Free();
  end;
end;


Das ganze funktioniert leider nicht so. Ich habe bei tu was eingetragehn Hstring := SL[0]. Hier kommen nur die ersten 6 Stellen raus und nicht mehr. Das ganze fängt am mit 050301. Nur das wird angezeigt. Bei IBExpert funktioniert es komplett. Es ist dort noch bedeutend mehr an Daten vorhanden

Hat eventuell noch jemand für micht ein Tip ??

Ydobon 1. Apr 2019 19:27

AW: Vermutlich Hex Daten Umwandeln
 
Wenn du ein aktuelles Delphi hast, warum nicht einfach:
Delphi-Quellcode:
sl.Text:=FieldByName('bla').AsString

Delphi.Narium 1. Apr 2019 19:42

AW: Vermutlich Hex Daten Umwandeln
 
Bitte grab Dich mal durch IBExpert und schau nach, ob da irgendwo eine Zeichensatz-...-Einstellung vorhanden ist und wie sie ggfls. konfiguriert ist. Kenne die Software nicht und kann von daher nix genaueres dazu sagen.

Dann schau Dir bitte mal die Datenbank und / oder die Tabellen- bzw. Spaltendefinitionen an. Was ist da bezüglich Zeichensatz angegeben?

Eine Kombination dieser Infos müsste Dir dann eigentlich (hoffentlich) einen Hinweis darauf geben, wie die Daten in Delphi zu verarbeiten sind.

Firebirddatenbank: "Default Character Set" = ?

Jede Spalte kann (zumindest theoretisch) über 'nen anderen CharSet verfügen.

Wie sieht die genaue Definition der Tabellenspalte aus? Irgendsowas wie
SQL-Code:
IMAGE BLOB SUB_TYPE 0
?

Und Ydobon hat eigentlich recht, wenn der Inhalt der Spalte ein Text ist, sollte AsString funktionieren. Probleme kenne ich in diesem Zusammenhang eigentlich nur, wenn in der Datenbank etwas steht, was die genutzte Delphiversion nicht beherrscht, also z. B. Delphi 7 und UTF8.

Dumpfbacke 2. Apr 2019 19:25

AW: Vermutlich Hex Daten Umwandeln (IBExpert)
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo Delphianer,
also fangen wir mal an das Feld ist ein Blob Feld Sub_Type 1 Segement Size 8192 und der Subtype ist Text. Als Zeichensatz ist hier ISO8859_1 angewählt. Als Text kann ich mir den Inhalt nicht anzeigen lassen. Da stene am Anfang nur einige Rechtecke drin mehr kann man da icht erkennen. Wenn ich mir das ganze in IBExpert als Hex anzeigen lassen dann kann man sehen das dort Hexwerte irgendie gespeicher sind. Im Bild 1 ist zu erkennen wie das ganze anfängt. Im Bild 2 kann man erkennen das hier mein Privat steht. Das möchte ich irgenbwie auslesen. Hier können auch noch andere Daten stehen. Ich hänge Euch mal die beiden Bilder an wo man erkennen wie es IBExpert darstellt.

Habt Ihr noch ein Tip für micht ??

Danke Euch schon mal Tanja

Schokohase 2. Apr 2019 19:33

AW: Vermutlich Hex Daten Umwandeln
 
Wer oder was schreibt denn diese Daten dort rein?

Dort musst du nachfragen was das bedeuten soll. In so einem Blob-Feld stehen binäre Daten drin, die alles und nichts bedeuten können. Ohne einen Hinweis, wie man diese Daten zu deuten hat wird es schwierig.

Delphi.Narium 2. Apr 2019 20:02

AW: Vermutlich Hex Daten Umwandeln
 
Code:
50 00 72 00 69 00 76 00 61 00 74
P  .  r  .  i  .  v  .  a  .  t
IBExpert interpretiert die Zahlen hexadezimal und zeigt das passenden ASCII-Zeichen an. Nicht anzeigbare Werte werden als . dargestellt.

Irgendwie sieht mir das so aus, als wären hier Texte im Textblob, die nicht kompatibel mit dem Zeichensatz ISO8859_1 der Tabelle / Datenbank sind.

Also Aufgabe
  • Prüfen, was für Daten das sind.
  • Welcher Zeichensatz steht hinter diesen Daten im Original?
  • Testdatenbank mit dem entsprechenden Zeichensatz anlegen.
  • Ein paar Testdaten einlesen.
  • Daten anzeigen / ausgeben.
Hoffentlich hilft das ein bisserl weiter und bringt Dich Deinem Ziel näher.

Gausi 3. Apr 2019 06:59

AW: Vermutlich Hex Daten Umwandeln
 
ISO8859-1 ist der 1-Byte-Zeichensatz, den wir hier in Westeuropa üblicherweise nutzen. In dem Bild sieht man aber deutlich, dass "Privat" mit einem 2-Byte-Zeichensatz gespeichert wurde. Und wie schon gesagt, ist das UTF16. Da in dem Beispiel nur Zeichen verwendet werden, die auch mit ihrer Unicode-Nummer in 1 Byte passen, ist hier jedes zweite Byte 0.

Warum das nicht mit der Spezifikation der DB übereinstimmt - keine Ahnung.

Schokohase 3. Apr 2019 07:12

AW: Vermutlich Hex Daten Umwandeln
 
Zitat:

Zitat von Gausi (Beitrag 1429393)
In dem Bild sieht man aber deutlich, dass

sich dieser Text mitten in einem Byte-Haufen befindet, somit kann es sich bei dem Inhalt nicht nur um reinen Text handeln, sondern eben um ein Haufen von Bytes wo sich zwischendrin hier und da Text befindet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:45 Uhr.
Seite 2 von 4     12 34      

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