Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

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)

Redeemer 3. Apr 2019 20:04

AW: Vermutlich Hex Daten Umwandeln
 
So wie ich die Daten auf dem Screenshot sehe, würde ich sagen, dass IBExpert einfach die Steuerzeichen ausblendet. Irgendwie so:
Delphi-Quellcode:
var
  b: Byte;
  s: string
begin
  for b in FieldByName('bla').AsBytes do
  if b < 32 then
  s := s + Char(b);
end;
Die in Westeuropa verwendete 8-Bit-Kodierung („ANSI“) ist übrigens Windows-1252 und nicht ISO-8859-1, weil bei letzterer bei $80-$9F noch mehr Steuerzeichen liegen, die keinen interessieren, und man mit ISO-8859-1 nicht in der Lage ist, einen französischen Text oder vernünftige Interpunktion zu speichern. Unicode U+0 bis U+FF entsprechen aber ISO-8859-1.

juergen 3. Apr 2019 21:31

AW: Vermutlich Hex Daten Umwandeln
 
@Dumpfbacke,

Zitat:

Zitat von Dumpfbacke (Beitrag 1429184)
genau das Privat suche ich.

Hattest du mal meinen Vorschlag aus Post#4 probiert?
Da kommt genau Privat raus.

Schokohase 3. Apr 2019 22:32

AW: Vermutlich Hex Daten Umwandeln
 
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

function BytesToHexView(const ABytes: TBytes): string;
var
  hex, str: string;
  idx, len, len2: Integer;
  b: Byte;
begin
  Result := string.Empty;
  len := Length(ABytes);
  hex := string.Empty;
  str := string.Empty;

  if len mod 16 = 0 then
    len2 := len
  else
    len2 := len + 16 - len mod 16;

  for idx := 1 to len2 do
  begin
    if idx <= len then
    begin
      b := ABytes[idx - 1];
      hex := hex + IntToHex(b, 2) + ' ';
      if b < 32 then
        str := str + '.'
      else
        str := str + Chr(b);
    end
    else
    begin
      hex := hex + '  ';
      str := str + ' ';
    end;
    if idx mod 16 = 0 then
    begin
      if not string.IsNullOrEmpty(Result) then
        Result := Result + sLineBreak;
      Result := Result + hex + '| ' + str;

      hex := string.Empty;
      str := string.Empty;
    end;
  end;
end;

begin
  try
    Writeln(BytesToHexView([ //
      $05, $03, $01, $01, $04, $02, $00, $00, $00, $00, $00, $00, $01, $01, $04, $02, //
      $00, $00, $00, $00, $00, $00, $01, $01, $04, $02, $00, $00, $00, $00, $00, $00, //
      $01, $01, $04, $02, $00, $00, $00, $00, $00, $00, $01, $01, $04, $02, $00, $00, //
      $00, $00, $00, $00, $01, $01, $04, $02, $00, $00, $00, $00, $00, $00, $01, $01, //
      $04, $02, $06, $00, $00, $00, $50, $00, $72, $00, $69, $00, $76, $00, $61, $00, //
      $74, $00, $00, $00, $02, $01, $00, $01, $FA, $B8, $8A, $42, $FB, $53, $48, $80]));
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  Readln;

end.
Code:
05 03 01 01 04 02 00 00 00 00 00 00 01 01 04 02 | ................
00 00 00 00 00 00 01 01 04 02 00 00 00 00 00 00 | ................
01 01 04 02 00 00 00 00 00 00 01 01 04 02 00 00 | ................
00 00 00 00 01 01 04 02 00 00 00 00 00 00 01 01 | ................
04 02 06 00 00 00 50 00 72 00 69 00 76 00 61 00 | ......P.r.i.v.a.
74 00 00 00 02 01 00 01 FA B8 8A 42 FB 53 48 80 | t.......ú¸?BûSH?

Dumpfbacke 7. Apr 2019 19:57

AW: Vermutlich Hex Daten Umwandeln
 
Zitat:

Zitat von juergen (Beitrag 1429478)
@Dumpfbacke,

Zitat:

Zitat von Dumpfbacke (Beitrag 1429184)
genau das Privat suche ich.

Hattest du mal meinen Vorschlag aus Post#4 probiert?
Da kommt genau Privat raus.



Ja habe ich funktioniert aber leider auch nicht.

Dumpfbacke 7. Apr 2019 20:04

AW: Vermutlich Hex Daten Umwandeln
 
Zitat:

Zitat von Schokohase (Beitrag 1429481)
Delphi-Quellcode:
Code:
05 03 01 01 04 02 00 00 00 00 00 00 01 01 04 02 | ................
00 00 00 00 00 00 01 01 04 02 00 00 00 00 00 00 | ................
01 01 04 02 00 00 00 00 00 00 01 01 04 02 00 00 | ................
00 00 00 00 01 01 04 02 00 00 00 00 00 00 01 01 | ................
04 02 06 00 00 00 50 00 72 00 69 00 76 00 61 00 | ......P.r.i.v.a.
74 00 00 00 02 01 00 01 FA B8 8A 42 FB 53 48 80 | t.......ú¸?BûSH?


Hallo Schokhase,
vielen Dank für den Code von Dir. Wenn das so gehen würde wäre es einm Traum und ich würde endlich weiterkommen mit meinen Programm. Genau das Ergebnis möchte ich haben. Ich habe jeodch noch ein Problem damit. Wie rufe ich die Funktion denn auf ? Ich hole mit die Daten aus der Datenbank (Memo Feld) und packe die in ein String aber die Funktion erwarete das ganze ja in Byte form. Kannst du mir hier noch mal auf die sprünge helfen ? Ich verzweifele so langsam an dem Problem.

Danke Tanja.

TiGü 8. Apr 2019 08:57

AW: Vermutlich Hex Daten Umwandeln
 
Zitat:

Zitat von Dumpfbacke (Beitrag 1429778)
Ich hole mit die Daten aus der Datenbank (Memo Feld) und packe die in ein String aber die Funktion erwarete das ganze ja in Byte form. Kannst du mir hier noch mal auf die sprünge helfen ? Ich verzweifele so langsam an dem Problem.

Zeig mal bitte die Zeile.
Ist es sowas wie XYZField.AsString?
Wenn ja, versuch mal anstattdessen XYZField.AsBytes.

Delphi.Narium 8. Apr 2019 09:10

AW: Vermutlich Hex Daten Umwandeln
 
Schau Dir bitte mal https://sourceforge.net/projects/atviewer/ an. Die Komponenten bringt das Gewünschte von Haus aus mit.

Daneben enthält sie eine automatische "Inhaltserkennung" und kann von daher auch HTML, Text, Bilder ... ggfls. korrekt anzeigen.

Ihr ist es quasi egal, was man ihr an Inhalt unterschiebt. Sie schaut, ob's was bekanntes ist, wenn nein erfolgt die Anzeige in der von Dir gewünschten Form.

Natürlich ist das konfigurierbar, so dass die Anzeige auch grundsätzlich auf die von Dir gewünschte Form eingeschrämkt werden kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
Seite 4 von 4   « Erste     234   

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