Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hex[aus Bytes] To Ascii (https://www.delphipraxis.net/68308-hex%5Baus-bytes%5D-ascii.html)

DarkPressure 27. Apr 2006 17:25


Hex[aus Bytes] To Ascii
 
Hallo erstmal :-D
Ich belästige euch wohl doch häufig mit Fragen, aber nun muss es nochmal sein, weil ich an der Stelle einfach nicht weiterkomme. Und zwar habe ich einen Byte Wert, den ich zu einem String mache:
Delphi-Quellcode:
         for i:=0 to Size - 1 do
         DataStr := DataStr + Chr(DataBytes[i]);
         end;
Aus diesem String mache ich dann einen Hex Wert wie z.B.:
Code:
89 00 00 00 1F 6A 7A 1A 01
Ich möchte aber nun aus diesem Hex Wert den ASCII(ich hoffe das ist richtig)-String erstellen, der in diesem Beispiel so aussehen würde:
Code:
.....jz..
Hat da jeamnd eine Idee, wie man das verwirklicht?

Gruß DarkPressure

Klaus01 27. Apr 2006 17:37

Re: Hex[aus Bytes] To Ascii
 
chr(StrToInt('$'+DeinHexString));

oder habe ich da etwas falsch verstanden?

Grüße
Klaus

shmia 27. Apr 2006 17:54

Re: Hex[aus Bytes] To Ascii
 
Es gibt druckbare/anzeigbare Zeichen und nicht anzeigbare Zeichen.
Durch brauchst einfache eine Funktion, die ungefähr so aussieht:
Delphi-Quellcode:
function VisibleString(const src:string);
var
 i : integer;
begin
   SetLength(result, Length(src));
   for i := 1 to Length(src) do
   begin
      case src[i] of
      #0..#31: // nicht druckbar
         result[i] := '.';  // das Ersatzzeichen
      else
         result[i] := src[i];
      end;
   end;
end;
Du wird natürlich nicht anfangen, den Hexstring wieder zurückzuverwandeln, sondern
nimmst als Parameter src die orginalen Daten.

Die absolut beste Lösung ist aber ein Font, der alle Zeichen anzeigen kann. :idea:
Es gibt Fonts, die zeigen z.B. das Tabulatorzeichen als "TB" an.
Das "TB" sieht aber so aus, dass das T hochgestellt und das B tiefgestellt ist.
Sollte es dir gelingen so einen Zeichensatz im Internet zu finden oder du baust ihn selbst,
dann wäre ich daran stark interessiert.

DarkPressure 27. Apr 2006 18:18

Re: Hex[aus Bytes] To Ascii
 
Erstmal danke für die schnellen Antworten.
Es gibt aber leider noch ein Problem,
Delphi-Quellcode:
function VisibleString(const src:string): string;
var
i : integer;
begin
   SetLength(result, Length(src));
   for i := 1 to Length(src) do
   begin
      case src[i] of
      0..31: // nicht druckbar <<----- [Error] Unit1.pas(122): E2010 Incompatible types: 'Char' and 'Integer'
         result[i] := '.';  // das Ersatzzeichen
      else
         result[i] := src[i];
      end;
   end;
end;

shmia 27. Apr 2006 18:20

Re: Hex[aus Bytes] To Ascii
 
Zitat:

Zitat von DarkPressure
Es gibt aber leider noch ein Problem

Siehe Korrektur oben (die #-Zeichen)

Klaus01 27. Apr 2006 18:24

Re: Hex[aus Bytes] To Ascii
 
Delphi-Quellcode:
function VisibleString(const src:string): string;
var
i : integer;
begin
   SetLength(result, Length(src));
   for i := 1 to Length(src) do
   begin
      case ord(src[i]) of
      0..31: result[i] := '.';  // das Ersatzzeichen
      else
         result[i] := src[i];
      end;
   end;
end;
vielleicht so?

Grüße
Klaus

DarkPressure 27. Apr 2006 18:37

Re: Hex[aus Bytes] To Ascii
 
Funktioniert jetz wunderbar, danke euch beiden für euere Bemühung


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:54 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