Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Visuelle Dekodierung (https://www.delphipraxis.net/59683-visuelle-dekodierung.html)

PierreB 27. Dez 2005 10:40


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:
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. :-D

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

Thx

DGL-luke 27. Dez 2005 11:17

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 :)

dahead 27. Dez 2005 11:59

Re: Visuelle Dekodierung
 
Zitat:

Zitat von DGL-luke
was braucht man denn da für einen codec?

den TechSmith Screen Capture Codec

Win32.API 27. Dez 2005 12:01

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

PierreB 27. Dez 2005 12:57

Re: Visuelle Dekodierung
 
Hallo ihr beiden, vielen Dank für eure Antworten, es geht jetzt. :cheers:

Khabarakh 27. Dez 2005 13:28

Re: Visuelle Dekodierung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Will auch :stupid: .

Mit Alpha-Blending und einer Art "Motion Blur"

PierreB 27. Dez 2005 13:43

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. ;)

Khabarakh 27. Dez 2005 14:29

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: .

PierreB 27. Dez 2005 14:31

Re: Visuelle Dekodierung
 
Zitat:

Zitat von Khabarakh
Danke für das Kompliment :) . Du darfst den Code gern in deinem Programm verwenden. Wenn du willst, kann ich ihn auch noch etwas kommentieren [...]

Soweit ich das überblicken konnte sollte ich damit klarkommen, hab zwar noch nicht viel mit der Graphics32 gemacht, aber ich sollte es hinbekommen. ;) Trotzdem danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz