AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Universale ToHex und FromHex procedure/function
Thema durchsuchen
Ansicht
Themen-Optionen

Universale ToHex und FromHex procedure/function

Ein Thema von yankee · begonnen am 5. Mär 2007 · letzter Beitrag vom 6. Mär 2007
 
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#1

Universale ToHex und FromHex procedure/function

  Alt 5. Mär 2007, 19:15
Hi @ll,

ich habe diese Funktionen geschrieben um ein set of xy abzuspeichern, aber eigentlich müssten diese Funktionen mit jedem "normalen" Datentyp funktionieren:+

Delphi-Quellcode:
function ToHex(data: PChar; bytes: integer):string;
var i: integer;
    res: string;
begin
  setlength(res, bytes*2);
  res :='';
  for i:=1 to bytes do
  begin
    res :=res+IntToHex(byte(data^),2);
    inc(data);
  end;
  result :=res;
end;

procedure FromHex(data: PChar; hex: string);
var i: integer;
begin
  for i:=0 to length(hex) div 2-2 do
  begin
    if i>=1 then inc(data);
    data^ :=char(StrToInt('$'+hex[i*2+1]+hex[i*2+2]));
  end;
end;
Anwendungsbeispiel:
Delphi-Quellcode:
procedure Beispiel;
var str: string;
    aSet; set of byte;
begin
  aSet :=[1,2,3,109,250];
  str :=ToHex(@aSet,sizeof(aSet));

  //Jetzt kann man str gemütlich in einer Datei speichern und später wieder laden:

  FromHex(@aSet,str);
end;
Natürlich solltet iohr gewarnt sein, dass man sich mit diesen zwei Funktionen auch was kaputt machen kann, wenn beispielsweise byte inkorrekt übergeben wurde oder man versucht mit FromHex In eine Variable zu schreiben, die zu klein ist um die Daten aufzunehmen.
Ausserdem könnt ihr die Funktion natürlich nur auf Variabeln anweden, die hintereinander weg im ram sind. Das auf ein Objekt anzuwenden könnte lustige Effekte haben.
Ausserdem bewart euch diese Funktion auch nicht vor Inkompatibilitäten zwsischen Systemen. Ein integer auf einem 64bit-System hat... naja... eben 64 bit und auf einem 32 bitsystem nur 32. Beim Speichern von einem Integer auf 64 bit und laden auf 32 bit kann also auch lustige Effekte haben. Umgekehr natürlich genauso, nur dass ihr umgekehrt wahrscheinlich deutlich länger brauchen werdet, bis ihr den Bug gefunden habt.

Aber wenn ihr wisst, was ihr tut, könnten diese zwei Funktionen durchaus nützlich sein .
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
 


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 06:42 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