AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Randomize o.O

Ein Thema von himitsu · begonnen am 25. Feb 2011 · letzter Beitrag vom 27. Feb 2011
Antwort Antwort
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.221 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Randomize o.O

  Alt 26. Feb 2011, 09:54
Allerdings nicht in einer ganz einfachen Konsolenanwendung, also wenn, dann währe der Übeltäter wohl irgendwie die böse VCL.
Kompilier doch mal mit Debug-DCU's und häng einen Brechpunkt auf die Randomize-Funktion. Dann sieht du ja wer hier voreilig zuschlägt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#2

AW: Randomize o.O

  Alt 26. Feb 2011, 14:50
Jetzt wo du's sagts ... hatte doch gestern eine Suche danach losgelassen und dann ganz vergessen nachzusehn wo dieses passiert

*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.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Feb 2011 um 14:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Randomize o.O

  Alt 26. Feb 2011, 15:21
Also bei meinem Delphi 2009 Professional muss man Randomize nicht aufrufen
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.

Geändert von Muellermilchtrinker (26. Feb 2011 um 15:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: Randomize o.O

  Alt 26. Feb 2011, 16:57
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
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: Randomize o.O

  Alt 26. Feb 2011, 18:49
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#6

AW: Randomize o.O

  Alt 26. Feb 2011, 20:03
Randomize als leere Funktion ohne Funktion,
für RandSeed eine ThreadVar, statt einem normalen Var
und beim ThreadInit jeweils das eigentliche Randomize.

Keine Änderung an alten Programmen, die neuen Programme sind automatisch threadsicher und mehrfache Aufrufe von Randomize haben keine Auswirkung.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Randomize o.O

  Alt 26. Feb 2011, 22:17
Wenn man sich die Implenetierung von Randomize ansieht verstehe ich das "Gewese" im Sinne von "Nur einmal aufrufen" ohnehin nicht.
Wenn man keine Loops in der Art
Delphi-Quellcode:
For i := x to y do
begin
   Randomize;
  x := Random(z);
  Use(x)
end
kann man IMHO Randomize so oft aufrufen wie man will.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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