Thema: Delphi Visuelle Dekodierung

Einzelnen Beitrag anzeigen

PierreB
(Gast)

n/a Beiträge
 
#1

Visuelle Dekodierung

  Alt 27. Dez 2005, 11:40
Guten Morgen,

als erstes mal entschuldige ich mich für den schlecht gewählten Titel, etwas besseres ist mir aber nicht eingefallen.

Jetzt zu meinem Problem:
Ich möchte für den About-Dialog meines Programmes eine kleine Spielerei machen, d.h. genau genommen sollen wild wechselnde Buchstaben nach einander in den richtigen Text umgewandelt werden, wir man es vielleicht aus "Hacker-Filmen" her kennt, oder bei Entschlüsselungen. Ich weiß das hört sich kompliziert an, im Anhang findet ihr eine Demo wie es aussehen soll.

Das ganze habe ich wie folgt versucht:
Delphi-Quellcode:
var
Letters : array[1..12] of Boolean;
x : Integer;

function Chaos : String;
var
  buchstabe, s, t: String;
  i : Integer;
begin
 for i := 0 to 6 do
  begin
   buchstabe := Chr((Random (26) + 65));
   if (Boolean(Random(2))) then
    begin
     buchstabe := LowerCase(buchstabe);
    end;
  s := form1.label1.caption;
  if Pos(buchstabe, s) <> 0 then begin
  buchstabe := Chr((Random (26) + 65));
  if (Boolean(Random(2))) then
  begin
    buchstabe := LowerCase(buchstabe);
  end;
  end
  else
 result := buchstabe;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Letters[1] = false then label1.Caption := Chaos;
if Letters[2] = false then label2.Caption := Chaos;
if Letters[3] = false then label3.Caption := Chaos;
if Letters[4] = false then label4.Caption := Chaos;
if Letters[5] = false then label5.Caption := Chaos;
if Letters[6] = false then label6.Caption := Chaos;
if Letters[7] = false then label7.Caption := Chaos;
if Letters[8] = false then label8.Caption := Chaos;
if Letters[9] = false then label9.Caption := Chaos;
if Letters[10] = false then label10.Caption := Chaos;
if Letters[11] = false then label11.Caption := Chaos;
if Letters[12] = false then label12.Caption := Chaos;

end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
 i : Integer;
 txt : String;
begin
txt := 'DelphiPraxis';
for x := 0 to 1 do
begin
 i := Random(12)+1;
 if Letters[i] = false then
   begin
   TLabel(Form1.Components[i]).Caption := txt[i];
   Letters[i] := true;
   Application.ProcessMessages;
   end
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 q : Integer;
begin
Randomize;
Timer1.Enabled := true;
Timer2.Enabled := true;
end;
Der erste Timer prüft ob die Boolean-Variablen den wert false haben, wenn ja wird wieder Chaos ausgeführt, d.h. ein neuer Buchstabe wird eingesetzt. Der zweite Timer generiert eine Zufallszahl von 1-12, weißt dann dem Label mit der generierten Nummer den Buchstaben aus der Variable txt zu. So sollte es jedenfalls sein. Leider jedoch kommen beim ausführen des Programmes alle Buchstaben durcheinander und auch andere Buchstaben wie z erscheinen. Weiß jemand was ich falsch mache oder wie man sowas sonst machen könnte ? Ich bin für jegliche Hilfe sehr dankbar.

P.S.: Solltet ihr meinen Code testen wollen, stellt Timer1 auf ein Interval von 105, Timer2 auf 1000.

Thx
Angehängte Dateien
Dateityp: rar tre_641.rar (46,4 KB, 34x aufgerufen)
  Mit Zitat antworten Zitat