Hallo cRayZo,
immer wenn ich in diesem Thread das Wort Gleitkommafehler lese, dann frage ich mich, warum du überhaupt mit der Gleitkomma-Division arbeitest, schließlich ist deine ganze Ver- und Entschlüsselung doch ein reiner Ganzzahl-Algorithmus. Hier bekommst du noch eine Funktion Decode(), die den Ansatz von Hawkeye demonstriert. An der Funktion Encode() kannst du dich mal versuchen.
Delphi-Quellcode:
uses
Types; // TIntegerDynArray
const
Alphabet
= 'abcdefghijklmnopq<rstuvwxyz!"§$%&/()=?*+#-'
+ '_:.,; ABCDEFGHIJKLMNOPQ>RSTUVWXYZ'
;
Chiffre
= '0;207:3|8;108:20|2;1342:67|3;339:16|3;2019:42|0;2397:47|'
+ '0;1260:84|0;116:29|9;189:36|7;1543:32|6;5802:84|7;1597:3'
+ '0|1;2177:32|4;1660:24|8;1304:27|4;718:14|8;1772:28|7;505'
+ '1:97|4;4668:88|'
;
{$I Proc.ExtractNumbers.pas}
function Decode(ida: TIntegerDynArray): string;
var
i, n: Integer;
begin
SetLength(Result, Length(ida) div 3);
for i := 1 to Length(Result) do
begin
n := Pred(i) * 3;
Result[i] := Alphabet[(ida[n + 1] - ida[n]) div ida[n + 2]];
end;
end;
procedure TDemoForm.ButtonClick(Sender: TObject);
var
ida: TIntegerDynArray;
begin
ExtractNumbers(Chiffre, ida);
ShowMessage(Decode(ida));
end;
Freundliche Grüße