Ich brauch schon wieder professionelle Hilfe...
Ich habe einen Teil aus einem PHP-Skript in Pascal übersetzt, aber irgendwie muess es wohl mindestens einen Fehler drin haben, aber ich weiss mir nicht zu helfen.
PHP-Teil:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| function abc($string) { $ret = ""; $prev = 0; for($i=0; $i<8; $i++) { $val = ($prev|ord($string[$i]))>>$i; $val &= 0xfe; $prev = ord($string[$i])<<8; $bp = ($val^($val>>4)); $bp ^= $bp>>2; $bp ^= $bp>>1; $bp &= 1; $val ^= $bp; $ret .= chr($val); } return $ret; } |
Delphi:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| function abc(part: string): string; var ret: string; prev, val, bp, I: integer; begin ret:=''; prev:=0; for I:=0 to 7 do begin val:=(prev or ord(part[I])) shr I; val:= val and $fe; prev:=ord(part[I]) shl 8; bp:= (val xor (val shr 4)); bp:= bp xor (bp shr 2); bp:= bp xor (bp shr 1); bp:= bp and 1; val:= val xor bp; ret:=ret+chr(val); end; Result:=ret; end; |
Wäre euch wirklich sehr dankbar, falls ihr euch das mal anschauen könnt. Habe für das I=0 einmal bei beiden alle Werte auslesen lassen. Bei meinem Delphiteil sind alle Variabeln 0, bei PHP sind zuerst ret, prev und i 0, danach 49, 48, 12544, 51, 63, 32, 0, 48.
Vielen Dank.
----------------
Edith: Hat sich erledigt. Aus einem für mich unerklärlichen Grund habe ich nach 2h debuggen jetzt doch noch rausgefunden, dass es bei part[i] eigentlich part[i+1] (warum auch immer) heissen müsste.
Hiermit: CLOSED
