![]() |
Random mit LongWord anstatt Integer liefert Exception
Der Random-Befehl erlaubt ja die Übergabe eines Inteer-Wertes, um das Maximum zu deklarieren. Der Integer-Befehl definiert laut Online-Hilfe einen Wertebereich von -2147483648..2147483647.
Nun benötige ich aber ein LongWord und einen Wertebereich von 0..4294967295. Das scheint der Random-Befehl unter Delphi 2007 aber nicht zu wollen und ich erhalte eine Exception. Gibt es hierfür eine Alternative oder einen Trick? |
AW: Random mit LongWord anstatt Integer liefert Exception
Das einfachste wäre 2 Randoms zu addieren.
|
AW: Random mit LongWord anstatt Integer liefert Exception
Hallo,
vielleicht hilft Dir dieser Ansatz:
Delphi-Quellcode:
Grüße
type
Tint2LongWord = record case boolean of true:( int : Integer); false :( lw : LongWord); end; // ... min.lw := 0; max.lw := 4294967295; res.int := randomRange(min.int,max.int); // res.lw benutzen Klaus |
AW: Random mit LongWord anstatt Integer liefert Exception
Ich nehme an, min/max/res müssen wiefolgt deklariert werden:
Delphi-Quellcode:
var min, max, res : Tint2LongWord;
Wenn ich davor noch ein Randomize einfüge und abschließend res.lw auswerte, erhalte ich immer 4294967295. Da stimmt irgendwas nicht... |
AW: Random mit LongWord anstatt Integer liefert Exception
Nimm ein Dummy-Random und einen Typecast:
Delphi-Quellcode:
lw := random(1); //Dummy
lw := longword(Randseed); |
AW: Random mit LongWord anstatt Integer liefert Exception
Danke, jetzt habe ich die Lösung.
|
AW: Random mit LongWord anstatt Integer liefert Exception
Random erzeugt eigentlich keine Exceptions.
OK, ich hab (leider) auch schon sehr sehr lange keinen mehr gesehn, der mit aktiver Überlaufprüfung und vielleicht sogar auch noch mit Bereichs-/Indexprüfung arbeitet. :stupid: Aber im Prinzip könnte sowas auch gehn
Delphi-Quellcode:
:gruebel:
LongWord(Random($FFFFFFFF))
|
AW: Random mit LongWord anstatt Integer liefert Exception
Zitat:
Delphi-Quellcode:
das liefert allerdings eine Warnung und wird wohl als random(0) interpretiert.
LongWord(Random($100000000));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:40 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