![]() |
Visuelle Dekodierung
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,
als erstes mal entschuldige ich mich für den schlecht gewählten Titel, etwas besseres ist mir aber nicht eingefallen. :oops: 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:
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. :-D
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; P.S.: Solltet ihr meinen Code testen wollen, stellt Timer1 auf ein Interval von 105, Timer2 auf 1000. Thx |
Re: Visuelle Dekodierung
Liste der Anhänge anzeigen (Anzahl: 1)
was braucht man denn da für einen codec?
EDIT: ich hab da mal schnell was gemacht.... einfach ausführen und sehen, obs weiterhilft :) |
Re: Visuelle Dekodierung
|
Re: Visuelle Dekodierung
Hi,
Ich auch mal :D
Delphi-Quellcode:
const charset : string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; ... function RandomString(const len: Integer; const CharSet: string): string; var i: Integer; begin SetLength(Result,len); for i := 1 to len do begin Result[i] := CharSet[1+Random(Length(CharSet))]; end; end; function RandomChar(const CharSet: string): char; begin Result := CharSet[1 + Random(Length(CharSet))]; end; procedure TForm1.Button1Click(Sender: TObject); const Text: string = 'DelphiPraxis'; var i: Integer; temp: string; begin label1.Caption := RandomString(length(text), charset); repeat sleep(20); for i := 1 to length(text) do begin application.ProcessMessages; if label1.Caption[i] <> text[i] then begin temp := label1.Caption; temp[i] := RandomChar(charset); label1.Caption := temp; end; end; application.ProcessMessages; until label1.Caption = text; end; hogge es hilft greetz |
Re: Visuelle Dekodierung
Hallo ihr beiden, vielen Dank für eure Antworten, es geht jetzt. :cheers:
|
Re: Visuelle Dekodierung
Liste der Anhänge anzeigen (Anzahl: 1)
Will auch :stupid: .
Mit Alpha-Blending und einer Art "Motion Blur" |
Re: Visuelle Dekodierung
Hallo Sebastian,
das sieht wirklich hammer-mäßig geil aus, mit deiner Erlaubnis baue ich das in mein Programm ein (natürlich erscheinst du in den Credits), ja ? Vielen Dank. ;) |
Re: Visuelle Dekodierung
Danke für das Kompliment :) . Du darfst den Code gern in deinem Programm verwenden. Wenn du willst, kann ich ihn auch noch etwas kommentieren; ich habe so auf dem Keyboard herumgehackt, dass ich ihn auf den ersten Blick selbst nicht mehr verstehe :stupid: .
|
Re: Visuelle Dekodierung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz