![]() |
Zufall generieren dauert lange
Hallo!
Ich habe jetzt ein Verschlüsselungsprogramm geschrieben. Ich bin auch ziemlich weit, aber jetzt wirft sich eine Frage auf: Wenn ich für einen Text ein Zufallspasswort generieren lassen will, und der Text recht lang (>200 Zeichen) ist, dann dauert das. Sogar sehr lange. So, nun möxhte ich dem Benutzer die Möglichkeit geben, den ganzen Vorgang abzubrechen, doch wie mache ich das? |
Re: Zufall generieren dauert lange
poste doch mal den entsprechenden source teil. prinzipiell hilft
![]() ![]() |
Re: Zufall generieren dauert lange
Application.Processmessagen hab ich schon an allen möglichen und unmöglichen Stellen eingefügt, aber hier trotzdem mal der Code zum generieren des Passwortes:
Delphi-Quellcode:
Ich hoffe, ihr könnt mir helfen. :pale:
procedure TForm1.CreateOTP(OriginalText: string);
var i: integer; begin for i := 1 to length(OriginalText) do begin Memo3.Text := Memo3.Text + inttostr(random(255)); Application.ProcessMessages; end; end; |
Re: Zufall generieren dauert lange
dann muss da noch in die schleife sowas rein wie if blAbbruch = true then break; blAbbruch muss dann natürlich boolean sein. wenn du dann per buttonclick blAbbruch 8globale variable) auf true setzt, stoppt die schleife!
|
Re: Zufall generieren dauert lange
OK, danke! Hat mir gehlofen :thuimb:
Aber warum dauert es so lange, 200 Zufallszahlen zu finden? |
Re: Zufall generieren dauert lange
kann ich dir auch nicht sagen. aber mir fällt gerade auf, dass du scheinbar kein randomize verwendest, was du tun solltest, da sonst random immer die gleichen zufallszahlen liefert!
|
Re: Zufall generieren dauert lange
Doch, ich hab ein randomize im FormCreate. :wink:
|
Re: Zufall generieren dauert lange
achso, dann passts ja! wär eher kontraproduktiv wenn dus nicht drin hättest :wink:
|
Re: Zufall generieren dauert lange
Zitat:
Besser so (braucht nur wenige ms):
Delphi-Quellcode:
Siehe:
Memo3.Text := RandomString(Length(OriginalText));
![]() |
Re: Zufall generieren dauert lange
Oh, hehe. Muss ich übersehen haben :oops:
Ist das dann auch echter Zufall oder wieder nur Pseudo-Zufall? |
Re: Zufall generieren dauert lange
Juhu, danke! Jetzt geht's endlich. :party:
|
Re: Zufall generieren dauert lange
Zitat:
Nur mit entsprechender Hardware, die sich Quanteneffekte zunutze macht, ist echter Zufall möglich. Zumindest falls unser phsyikalisches Weltbild der Realität entspricht. |
Re: Zufall generieren dauert lange
Ok, naja. Es wird wahrscheinlich eh keiner hergehen und versuchen, einen Text zu knacken, der mit Hilfe meines Programms verschlüsselt wurde :mrgreen:
Und, bitte! Keine Grundsatzdiskussionen wegen dem hier: Zitat:
Für mich jedenfalls reicht Pseudo-Zufall und wahrscheinlich für jeden hier im Forum auch (außer negaH vielleicht :mrgreen: ) |
Re: Zufall generieren dauert lange
Delphi-Quellcode:
procedure TForm1.CreateOTP(OriginalText: string);
var i: integer; begin for i := 1 to length(OriginalText) do begin Memo3.Text := Memo3.Text + inttostr(random(255)); if (i mod 25 = 0) then Application.ProcessMessages; end; end; probier mal ob das schneller ist. (ich gehe davon aus dass du einen 200 Byte Langen OriginalText hast, bzw. dieser nicht um größenordnungen Größer ist. |
Re: Zufall generieren dauert lange
Nö, danke. Ist auch nicht schneller, eher im Gegenteil.
Außerdem soll der User ja auch Texte >200 Zeichen verschlüsseln können. |
Re: Zufall generieren dauert lange
mach dir ne lokale variable, und mach das nicht direkt mit "Edit3.Text"! dann geht das vieeeeeeeeeel schneller, weil die Lese und Schreib Methode nur je einmal und nicht 255 mal durchgeführt wird.
|
Re: Zufall generieren dauert lange
Ich versteh jetzt nicht ganz, was du von mir willst? :gruebel:
Erklär bitte nochmal genauer. |
Re: Zufall generieren dauert lange
Delphi-Quellcode:
guckst du da^^
procedure TForm1.CreateOTP(OriginalText: string);
var i: integer; temp: string; begin temp = ''; for i := 1 to length(OriginalText) do begin temp := temp + inttostr(random(255)); end; Memo3.Text := temp; end; |
Re: Zufall generieren dauert lange
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 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-2025 by Thomas Breitkreuz