okay klappt alles soweit, vielen Dank nochmal.
ich hab jetzt weitergearbeitet, stoße jetzt aber auf den Fehler
ungültige Gleitkommaoperation
Zitat:
procedure ExtractNumbers(const s: string; var ida: TIntegerDynArray);
var
i, n: Integer;
isNum: Boolean;
begin
SetLength(ida, 0);
n := 0;
isNum := False;
for i := 1 to Succ(Length(s)) do
begin
if (i > Length(s)) and not isNum
then Break
else isNum := s[i] in ['0'..'9'];
if isNum then
n := n * 10 + Ord(s[i]) - Ord('0')
else
begin
SetLength(ida, Succ(Length(ida)));
ida[High(ida)] := n;
n := 0;
end;
end;
end;
procedure TGeheimcodeForm.BitButtonEntschluesselnClick(Sende r: TObject);
var
numbers: TIntegerDynArray;
i,i2: Integer;
s: TStrings;
x, buffer2: string;
Zahl1, Zahl2, Zahl3: integer;
Zahl1count, Zahl2count, Zahl3count, buffer: integer;
begin
Form2.OriginalText.Text:='';
x:=GeheimcodeText.Text;
ExtractNumbers(x, numbers);
s := TStringList.Create;
for i := Low(numbers) to High(numbers) do
s.Add(IntToStr(numbers[i]));
showmessage(s.Text);
s.Free;
-------------------------------------------------------------------------------------------
Zahl1count:=0; Zahl2count:=1; Zahl3count:=2;
for i2:=1 to trunc(length(x)) do begin
Zahl1:=numbers[Zahl1count];
Zahl2:=numbers[Zahl2count];
Zahl3:=numbers[zahl3count];
buffer:=trunc((Zahl2 - Zahl1)/ Zahl3);
//Zahlen in Zeichen konvertieren
if buffer=1 then Buffer2:='a' else if buffer=2 then Buffer2:='b' else if buffer=3 then Buffer2:='c' else
// usw...
if buffer=73 then Buffer2:='X' else if buffer=74 then Buffer2:='Y' else if buffer=75 then Buffer2:='Z' else
buffer2:='?';
Form2.OriginalText.Text:= Form2.OriginalText.Text + Buffer2;
Zahl1count:= Zahl1count+3;
Zahl2count:= Zahl2count+3;
Zahl3count:= Zahl3count+3;
end;
end;
Der Fehler müsste unter der gestrichelten Linie sein.
Die ersten, schät mal so 30 buchstaben wandelt er auch wieder völlig korrekt um, aber danach kommt eben der Fehler..