我要将一个C语言的简单内加密算法用的Delphi重写,其中有两个地方编译不过去大家帮帮忙!
C中的函数
void InitPassword(char *Key, int num)
{
int i,j,k;
for(i=0;i<4;i++)
{
for(j=0;j<256;j++)
{
S[i][j]=def_S[i][j];
}
}
k=0;
for(i=0;i<18;i++)
{
unsigned int temp=0;
for(j=0;j<4;j++)
{ temp=temp | Key[k];
temp<<=8;
k++;
if(k>=num)
{
k=0;
}
}
P[i]=def_P[i] ^ temp;
}
unsigned long  tl=0,tr=0;
for(i=0;i<18;i+=2)

        encipher(&tl,&tr);
P[i]=tl;
P[i+1]=tr;
}
for(i=0;i<4;i++)
{
for(j=0;j<256;j+=2)
{
encipher(&tl,&tr);
S[i][j]=tl;
S[i][j+1]=tr;
}
}
}
我改的Delphi中的函数
procedure TCompress.InitPassword(Key: PChar; num: integer);
var i,j,k : integer;
    temp : Cardinal;
    tl,tr : Cardinal;
begin
  inherited;
for i := 0 to 3 do
begin
for j := 0 to 255 do
begin
S[i][j] := def_S[i][j];
end;
end;
k := 0;
for i := 0 to 17 do
begin
temp := 0;
for j := 0 to 3 do
begin temp := temp or Key[k];
temp := temp shr 8;
k := k + 1;
if k >= num then
begin
k:=0;
end;
end;
P[i] := def_P[i] xor temp;
end;
  tl := 0;
  tr := 0;
  i := 0;
  while i < 18 do
  begin
    encipher(@tl,@tr);
    p[i] := tl;
    p[i + 1] := tr;
    i := i + 2;
  end; for i := 0 to 3 do
begin
    j := 0;
    while j < 256 do
    begin
      encipher(@tl,@tr);
      S[i][j] := tl;
S[i][j+1] := tr;
      j := j + 2;
    end;
end;
end;其中temp := temp or Key[k];编译不过 提示Operator not applicable to this operand type请高人指点!