Autor Beitrag
Avalon
Hält's aus hier
Beiträge: 8

Win 98, Win ME, Win XP
D7 Pers
BeitragVerfasst: Mo 15.08.05 22:23 
Hi. Ich hab eine Verschlüsselung nach Vigenere geproggt, die auch bestens funktioniert. ich hab aber das gefühl, da könnte man an einigen stellen noch was Schöner machen, also nicht so "plump" wie ich das gelöst bae. kann mir einer helfen? Ich weiß, das es das Thema schon etliche male gab, aber ich denke, es ist ne konkrete Frage, oder?

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:
37:
38:
39:
40:
41:
const alphabet= 'abcdefghijklmnopqrstuvwxyzäöüß';  //Buchstaben im Alphabet werden definiert

procedure TForm1.Button1Click(Sender: TObject);
var intext, key, key2, outtext, buchstabe: string;
    versch, i, j: integer;
    buf: Char;
begin

intext:=LowerCase(edit1.text);
key:= edit2.text;
        // Key auf Länge des Schlüsselwortes bringen
        if length(intext) > length(key) then  //Schlüssellänge wird mit der Klartextlänge verglichen
        begin
        key2:='';    //Key wird geleert
        repeat
        key2:=key2+key;                   // key wird rekursiv aneinander gehängt
        until length(key2) > length(intext);           // bis er länger ist als der Klartext
        end;
 //Verschlüsselungsvorgang
 for i:= 1 to length(intext)+1 do  //vom ersten bis zum letzen Buchstaben des Klartext
 begin
        buf:= intext[i];                            // wird jeder einzeln in den Buffer geschrieben
        versch:= Ord(key2[i]) - 97;                 // die Differenz von Keybuchstabe zu a ermittelt
                for j:= 1 to versch do              // von 2 bis zur Differenz vird
                begin                                // ein a in ein z umgewandelt
                if buf= 'z' then buf:='a';
                if buf= ' ' then buf:=' '            // eine Leerstelle frei gelassen
                else
                inc(buf);                             //der Buchstabe jeweils um 1 verschoben
                end;
           outtext:= outtext + buf;                  //DEr Ausgabetext wird zusammen gesetzt
        
 end;
  // Ausgabe
 if outtext[length(outtext)] <> alphabet then begin outtext[length(outtext)]:=' ';  //Das letzte Zeichen wird gelöscht, wenn es nicht teil des Alphabets ist
 edit3.text:= outtext; end

 else edit3.text:= outtext;   //sonst wird der Text original wiedergegeben


end;


Danke im Vorraus, Avalon

_________________
All computers wait the same speed ;-)
Harry M.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Di 16.08.05 00:46 

_________________
Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.