Thema: Delphi Bin2Hex - Probleme

Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#1

Bin2Hex - Probleme

  Alt 22. Dez 2005, 19:59
Hallo, ich habe folgende Bin2Hex-Funktion geschrieben, aber die scheint nicht ganz zu funktionieren. Könnt ihr mir sagen was dabei der Fehler ist?

Hinweis: Aus z.B. i:integer=511 soll s:string='000001FF' werden.

Die Hex2Bin-Funktion schneidet vom zu lesenden String die gelesenen Bytes ab.

Delphi-Quellcode:
const
  hexes:string='0123456789ABCDEF';

function mybin2hex(const data;size:integer):string;
var
  bytes:array of byte;
  i:integer;
begin
  setlength(bytes,size);
  fillchar(bytes[0],length(bytes),#0);
  copymemory(@bytes[0],@data,size);
  result:='';
  for i:=0 to length(bytes)-1 do begin
    result:=result+hexes[1+(bytes[i] div 16)];
    result:=result+hexes[1+(bytes[i] mod 16)];
  end;
  setlength(bytes,0);
end;

//Ermitteln welchen Index der Char im String hat. (C in '0123456789ABCDEF' => 12)
function indexof(s:string;c:char):integer;
var
  i:integer;
begin
  result:=0;
  for i:=1 to length(s) do
    if s[i]=c then
    begin
      result:=i;
      exit;
    end;
end;

procedure myhex2bin(var data; hex:string; const size:integer);
var
  bytes:array of byte;
  i:integer;
  workwith:string;
begin
  workwith:=copy(hex,1,size*2);
  hex:=copy(hex,size*2,length(hex)-size*2);
  setlength(bytes,length(workwith) div 2);
  for i:=0 to (length(workwith) div 2)-1 do
    bytes[i]:=indexof(hexes,workwith[i*2])*16+indexof(hexes,workwith[i*2+1]);
  copymemory(@data,@bytes,length(bytes));
  setlength(bytes,0);
end;
In Realität kommen aber lauter falsche Werte raus (jedes mal dasselbe, hex2bin schneidet String nicht ab)
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat