Autor Beitrag
Windkind
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 17.02.09 13:52 
Hallo,

ich bin neu hier und habe mich angemeldet, da ich ein Problem mit einem Delphi-Programm habe, welches ich momentan bearbeite.

Und zwar geht es hierbei darum, einen Text, der in ein Memo-Feld eingegeben wird, per Skytalaverschlüsselung zu verschlüsseln (Dabei soll selbst gewählt werden, wie viele Zeilen verwendet werden sollen).

Beispiel:
Hallo ich bin ein Testtext.
Wird zu (Leerzeichen durch * ersetzt; Code = 5):
H*bistaiint.lcn*t*lh*Te*o*eex*

In meinem geschriebenen Programm kommt jedoch nur folgendes heraus:
H*bistaiint.lcn*t

D.h. die letzten 13 Zeichen fehlen.
Hier nun einmal der Programmcode:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
var
        text, verschluesselt: string;
        schluessel, i, k, laenge, key, ascii: integer;
        buchstabe: char;
begin
        text            := Memo1.Text;
        schluessel      := StrToInt(Edit1.Text);
        verschluesselt  := '';

        laenge := length(text);


        if laenge MOD schluessel = 0 then
                key := (laenge DIV schluessel)
        else
                key := (laenge DIV schluessel) + 1;


        for i := 1 to key do
                for k := 0 to schluessel do
                        begin
                        buchstabe := text[(k*schluessel)+i];

                        ascii := ord(buchstabe);
                        if ascii = 32 then
                                ascii := 42;

                        buchstabe := chr(ascii);

                        if buchstabe = ' ' then
                                buchstabe := '*';

                        verschluesselt := verschluesselt + buchstabe;
                        Memo2.Text := verschluesselt;
                        end;
 end;


Im Anhang die Exe-Datei (als Zip)

Ich hoffe, jemand kann mir helfen.

Liebe Grüße,
Windkind
Einloggen, um Attachments anzusehen!
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: Di 17.02.09 14:52 
Bei mir funktioniert dein Quellext (Delphi 7). Mir fallen da aber ein paar "Schönheitsfehler" auf:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
var 
  Text, Verschluesselt: String;
  Schluessel, K:  Integer;
  Laenge, Key, I: Integer;
  Buchstabe: Char;
begin
  Text   := Memo1.Text;
  Laenge := Length(Text);
  Schluessel := StrToInt(Edit1.Text);
  Verschluesselt := '';

  Key := Ceil(Laenge / Schluessel);       // Rundet auf, wie deine mod-Version, Unit Math einbinden

  for I := 1 to Key do
    for K := 0 to Schluessel do
    begin
      Buchstabe := Text[(K * Schluessel) + I];

      if Ord(Buchstabe) = 32 then        // Reicht um aus dem Leerzeichen ein Asterisk (*) zu machen
        Buchstabe := Chr(42);

      Verschluesselt := Verschluesselt + Buchstabe;
    end;

  Memo2.Text := Verschluesselt;
end;

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