Avatar billede mulle_hansen Nybegynder
25. februar 2002 - 15:10 Der er 9 kommentarer og
1 løsning

Problemer med kode

Når jeg prøver at bruge koden fra:
http://www.swissdelphicenter.ch/torry/showcode.php?id=673
får jeg en masse fejl...

Hvad går der galt?
Avatar billede cautoo Nybegynder
25. februar 2002 - 15:22 #1
hmm, virker fint hos mig, hvordan kalder du den
Avatar billede mulle_hansen Nybegynder
25. februar 2002 - 15:25 #2
F.eks.:

Memo1.Text := Encrypt(Memo1.Text,12345,678910,11121314,15161718);
Avatar billede mulle_hansen Nybegynder
25. februar 2002 - 15:39 #3
Det virker stadig ikke hos mig...
Avatar billede hreiff Nybegynder
25. februar 2002 - 15:42 #4
Der er f.eks ikke noget som hedder Encrypt i den delpi som jeg bruger (1). Måske er koden lavet til en nyere version end den du bruger. Hvilken delphi bruger du?
Avatar billede cautoo Nybegynder
25. februar 2002 - 15:42 #5
oki jeg fant ud af at det kun var decrypt der virkede, sorry :-(
Avatar billede mulle_hansen Nybegynder
25. februar 2002 - 15:43 #6
Avatar billede stoney Nybegynder
25. februar 2002 - 15:58 #7
function Encrypt(Text: string; Key1, Key2, Key3, Key4: Integer): string;
var
  BufS, Hexa, Hexa1, Hexa2: string;
  BufI, BufI2, Sc, Sl, Num1, Num2, Num3, Num4, Res1, Res2, Res3, Res4: Integer;
begin
  Sl  := Length(Text);
  Sc  := 0;
  BufS := '';
  if (Key1 in [1..120]) and (Key2 in [1..120]) and (Key3 in [1..120]) and
    (Key4 in [1..120]) then
  begin
    BufI  := Key1 * Key4;
    BufI2 := Key3 * Key2;
    BufI  := BufI - BufI2;
    if BufI = 0 then
    begin
      Result := '';
      Exit;
    end;
  end
  else
  begin
    Result := '';
    Exit;
  end;
  repeat
    Inc(Sc);
    if Sc =  Sl then Num1 := 0
    else
      Num1 := Ord(Text[Sc]);
    Inc(Sc);
    if Sc = Sl then Num2 := 0
    else
      Num2 := Ord(Text[Sc]);
    Inc(Sc);
    if Sc = Sl then Num3 := 0
    else
      Num3 := Ord(Text[Sc]);
    Inc(sc);
    if Sc = Sl then Num4 := 0
    else
      Num4 := Ord(Text[Sc]);
    Res1 := Num1 * Key1;
    BufI := Num2 * Key3;
    Res1 := Res1 + BufI;
    Res2 := Num1 * Key2;
    BufI := Num2 * Key4;
    Res2 := Res2 + BufI;
    Res3 := Num3 * Key1;
    BufI := Num4 * Key3;
    Res3 := Res3 + BufI;
    Res4 := Num3 * Key2;
    BufI := Num4 * Key4;
    Res4 := Res4 + BufI;
    for BufI := 1 to 4 do
    begin
      case BufI of
        1: Hexa := IntToHex(Res1, 4);
        2: Hexa := IntToHex(Res2, 4);
        3: Hexa := IntToHex(Res3, 4);
        4: Hexa := IntToHex(Res4, 4);
      end;
      Hexa1 := '$' + Hexa[1] + Hexa[2];
      Hexa2 := '$' + Hexa[3] + Hexa[4];
      if (Hexa1 = '$00') and (Hexa2 = '$00') then
      begin
        Hexa1 := '$FF';
        Hexa2 := '$FF';
      end;
      if Hexa1 = '$00' then Hexa1 := '$FE';
      if Hexa2 = '$00' then
      begin
        Hexa2 := Hexa1;
        Hexa1 := '$FD';
      end;
      BufS := BufS + Chr(StrToInt(Hexa1)) + Chr(StrToInt(Hexa2));
    end;
  until Sc = Sl;
  Result := BufS;
end;
function Decrypt(Text: string; Key1, Key2, Key3, Key4: Integer): string;
var
  BufS, Hexa1, Hexa2: string;
  BufI, BufI2, Divzr, Sc, Sl, Num1, Num2, Num3, Num4, Res1, Res2, Res3, Res4: Integer;
begin
  Sl  := Length(Text);
  Sc  := 0;
  BufS := '';
  if (Key1 in [1..120]) and (Key2 in [1..120]) and (Key3 in [1..120]) and
    (Key4 in [1..120]) then
  begin
    Divzr := Key1 * Key4;
    BufI2 := Key3 * Key2;
    Divzr := Divzr - BufI2;
    if Divzr = 0 then
    begin
      Result := '';
      Exit;
    end;
  end
  else
  begin
    Result := '';
    Exit;
  end;
  repeat
    for BufI := 1 to 4 do
    begin
      Inc(Sc);
      Hexa1 := IntToHex(Ord(Text[Sc]), 2);
      Inc(Sc);
      Hexa2 := IntToHex(Ord(Text[Sc]), 2);
      if Hexa1 = 'FF' then
      begin
        Hexa1 := '00';
        Hexa2 := '00';
      end;
      if Hexa1 = 'FE' then Hexa1 := '00';
      if Hexa1 = 'FD' then
      begin
        Hexa1 := Hexa2;
        Hexa2 := '00';
      end;
      case BufI of
        1: Res1 := StrToInt('$' + Hexa1 + Hexa2);
        2: Res2 := StrToInt('$' + Hexa1 + Hexa2);
        3: Res3 := StrToInt('$' + Hexa1 + Hexa2);
        4: Res4 := StrToInt('$' + Hexa1 + Hexa2);
      end;
    end;
    BufI  := Res1 * Key4;
    BufI2 := Res2 * Key3;
    Num1  := BufI - BufI2;
    Num1  := Num1 div Divzr;
    BufI  := Res2 * Key1;
    BufI2 := Res1 * Key2;
    Num2  := BufI - BufI2;
    Num2  := Num2 div Divzr;
    BufI  := Res3 * Key4;
    BufI2 := Res4 * Key3;
    Num3  := BufI - BufI2;
    Num3  := Num3 div Divzr;
    BufI  := Res4 * Key1;
    BufI2 := Res3 * Key2;
    Num4  := BufI - BufI2;
    Num4  := Num4 div Divzr;
    BufS  := BufS + Chr(Num1) + Chr(Num2) + Chr(Num3) + Chr(Num4);
  until Sc = Sl;
  Result := BufS;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
decrypt('weert',11034,53430,33460,1232305);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
encrypt('weert',11034,53430,33460,1232305);
end;


Stoney
Avatar billede mulle_hansen Nybegynder
25. februar 2002 - 16:19 #8
Hmm.. det gir en tom string ligegyldig hvad jeg gør...
Avatar billede cluq Nybegynder
26. februar 2002 - 09:18 #9
Måske er dette problemet:

"The four entries Key1, Key2, Key3 and Key4 are numbers
that can range from 1 to 120."

Bare et forslag :)
Avatar billede mulle_hansen Nybegynder
28. februar 2002 - 23:03 #10
Nope - den vil sq ikke...
Gi'r op...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester