![]() |
Delphi-Version: 2010
Randomize o.O
n'abend,
sacht ma, kann's sein, daß Random neuerdings automatiosch initialisiert (Randomize) wird? Jedenfalls hab ich das komische Gefühl, als wenn sich in Delphi 2010/XE der Wert ständig ändert, wenn ich im OnCreate mir da eine Zahl geben lasse. :stupid: Allerdings nicht in einer ganz einfachen Konsolenanwendung, also wenn, dann währe der Übeltäter wohl irgendwie die böse VCL. War das im Delphi 7 auch schon so, oder hab ich das nur nie mitbekommen? |
AW: Randomize o.O
Uiuiui ... du hast scheinbar recht. In Delphi 2010 kommt jedesmal beim Start ein neuer Wert.
In Delphi 2007 kommt immer 0! |
AW: Randomize o.O
Na endlich macht die Funktion, was sie soll. ;-)
|
AW: Randomize o.O
:-)
|
AW: Randomize o.O
:lol:
Gut, ich dachte schon ich hab'se nimmer alle. Jetzt hab ich nur noch das Problem, daß Random vermutlich nicht wirklich threadsave ist, aber was soll's. (ein kleiner Integer, welcher zufällig in zwei Threads mal den selben Wert ergeben könnte, weil das zur fast genau selben Zeit mehrmals aufgerufen wurde) |
AW: Randomize o.O
Zitat:
|
AW: Randomize o.O
Jetzt wo du's sagts ... hatte doch gestern eine Suche danach losgelassen und dann ganz vergessen nachzusehn wo dieses passiert :oops:
*stunden später* hier gefunden, wo alles Randomize oder RandSeed gesetzt wird: TSessionIDGen.Create (SessColn) TPath.Create (IOUtils) TServerCollection.GetBalancedName (ObjBrkr) TIdMIMEBoundaryStrings.GenerateRandomChar (IdMessageCoderMIME) TDNSHeader.Create (IdDNSCommon) GetRandomString (IdCustomHTTPServer) Ich dachte man soll Randomize möglichst nur einmal aufrufen? Wie soll man sowas können, wenn es überall gesetzt wird? :? Ach ja, hier die Position, wo das Randomize nun standardmäßig initialisiert wird (StackTrace): System.Randomize IOUtils.TPath.Create System.InitUnits System.StartExe SysInit.InitExe Project3.Project3 Somit ist ein Klassenkonstruktor in der Unit IOUtils schuldig und diese Unit wird irgendwo über die VCL eingebunden wird, bzw die Unit IniFiles, welche diese IOUtils einbindet, aber wer nun die blöde IniFiles einbindet, das hab ich auf die Schnelle nicht rausgefunden. |
AW: Randomize o.O
Also bei meinem Delphi 2009 Professional muss man Randomize nicht aufrufen :D
|
AW: Randomize o.O
Toll wäre es ja gewesen, wenn in der Unit System im INITIALIZATION-Block einfach ein Randomize aufgerufen wird. Da dieser Block standardmäßig ausgeführt wird (alles bindet die Unit System ein) und auch nur genau 1 Mal, ist wenigstens der Ort richtig.
Warum Indy Randomize aufruft, liegt wohl daran, dass sich bestimmt irgendwelche Programmierer beschwert haben, GetRandomString würde keine zufällige Zeichenkette zurückgeben. (Vermutung) Benrhard |
AW: Randomize o.O
Eigentlich sollte ein Zufallszahlengenerator durch eine Klasse gekapselt werden.
Dann könnte man beliebig viele voneinander unabhängige Generatoren bereitstellen und es gäbe keine programmweiten Nebenwirkungen. Ich denke das liegt daran, dass sich die Pogrammierer seit Turbopascal so sehr an Random() und Randomize() gewöhnt haben, dass man sich nicht getraut hat diesen alten Zopf abzuschneiden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:38 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