Autor Beitrag
walter_b
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 135

Windows Vista/XP
Delphi 6
BeitragVerfasst: Mi 16.07.08 18:50 
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:
ausblenden 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:
ausblenden 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 :P
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Mi 16.07.08 20:26 
user profile iconwalter_b hat folgendes geschrieben:
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.


Weil Strings in Delphi immer mit Index 1 beginnen. Part[0] ist damit ungültig, Part[1] ist der erste Char.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)