Erstmal danke DeddyH für deine Antwort.
Ja, das mit dem Array hab ich auch schon probiert, nur das Problem ist, dass ich wie im VB Besipiel 2 Zeichen in 1 Byte quetschen muss.
Ich weiss nicht wie es VB intern funktioniert, weil ja die Typkonvertierung der Variablen dort autom. geschieht - auf jedenfalls geht es dort. Nur wenn ich das Ganze in Delphi umschreiben möchte, dann bringt er mir einen Fehler.
Anbei mal mein Delphi Code:
Delphi-Quellcode:
procedure ByteCrc(data:byte;var crc:word);
var i:BYTE;
Begin
for i:=0 to 7 do
begin
if (( data and $01) xor ( crc and $0001) <> 0 ) then
begin
crc:=crc shr 1; //1 Pos nach rechts schieben
crc:=crc xor $A001;
end
else crc:=crc shr 1;
data:=data shr 1;
end;
end;
function StringCrc(s:shortstring):word;
var len,i:integer;
begin
result:=0;
len:=length(s);
for i:=1 to len do
if i mod 2 = 0 then //alle 2 Zeichen
ByteCrc(ord(s[i]),result); // CRC Byteweise bilden << Hier sollten 2 Zeichen als Byte der Prozedur ByteCRC übergeben werden.
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:shortstring;
h:word;
begin
s:=edit1.Text;
h:=StringCrc(s);
Edit2.Text:=IntToHex(h,4);
end;
Ich weiss es hört sich komisch an mit 2 Zeichen in einem Byte, aber in VB funktionierts.
Vielleicht weisst jemand weiter.