GLBasic forum

Main forum => Bug Reports => Topic started by: Topzombie on 2010-Mar-02

Title: RND() in Konsolenanwendungen
Post by: Topzombie on 2010-Mar-02
RND() gibt bei Konsolenanwendungen immer die gleiche Zahl aus   :help:
Hier ist ein Beispielprogramm:

Code (glbasic) Select
// --------------------------------- //
// Project: Name Generator
// Start: Tuesday, March 02, 2010
// IDE Version: 7.250


// SETCURRENTDIR("Media") // seperate media and binaries?
INIOPEN "names.txt"
GLOBAL FEname$, MAname$, FAMname$
GLOBAL FEcount, MAcount, FAMcount
FEcount=INIGET$("Female", "Count")
MAcount=INIGET$("Male", "Count")
FAMcount=INIGET$("Family", "Count")
DIM FEnameList$[1000]
DIM MAnameList$[1000]
DIM FAMnameList$[1000]
FOR I=0 TO INIGET$("Female", "Count")-1
FEnameList$[I]=INIGET$("Female",I)
NEXT
FOR I=0 TO INIGET$("Male", "Count")-1
MAnameList$[I]=INIGET$("Male",I)
NEXT
FOR I=0 TO INIGET$("Family", "Count")-1
FAMnameList$[I]=INIGET$("Family",I)
NEXT
FEname$=FEnameList$[RND(FEcount-1)+1]
MAname$=MAnameList$[RND(MAcount-1)+1]
FAMname$=FAMnameList$[RND(FAMcount-1)+1]
STDOUT "Female Name: "+FEname$+" "+FAMname$+"\n"
STDOUT "Male Name: "+MAname$+" "+FAMname$+"\n"
STDOUT "Press any key to continue \n"
///PRINT "Female Name: "+FEname$+" "+FAMname$, 10, 10
///PRINT "Male Name: "+MAname$+" "+FAMname$, 10, 50
///SHOWSCREEN
KEYWAIT


Das fertig kompilierte Programm mit dem names.txt gibts hier: http://remixshare.com/dl/9e67v/Name Generator.app.zip (http://remixshare.com/dl/9e67v/Name%20Generator.app.zip)

Wenn ich das Programm als ein "Fensterprogramm" kompiliere dann funktioniert es, aber ich brauche eine Konsolenanwendung  :|
Meine GLBasic Version ist 7.250
Title: Re: RND() in Konsolenanwendungen
Post by: Schranz0r on 2010-Mar-02
QuoteSEEDRND start%
Initialisiert den Zufallszahlgenerator für RND() mit einem Startwert. Beim Programmstart verwendet GLBasic SEEDRND(GETTIMERALL()).
Title: Re: RND() in Konsolenanwendungen
Post by: Topzombie on 2010-Mar-02
Das hab ich auch schon gelesen aber es hat mich nicht weitergebracht   :(
Edit: Würde es funktionieren wenn ich statt GETTIMERALL() die Systemzeit einfüge?
Title: Re: RND() in Konsolenanwendungen
Post by: Schranz0r on 2010-Mar-02
versuchs einfach mal...
Title: Re: RND() in Konsolenanwendungen
Post by: Topzombie on 2010-Mar-02
Ja es hat funktioniert
Code (glbasic) Select
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)

ps: Hattest du heute nen schlechten Tag oder so?
Title: Re: RND() in Konsolenanwendungen
Post by: Schranz0r on 2010-Mar-03
Ne du, war in der Arbeit und da sollte man nicht so "Privat" auf Seiten rumspringen :D
Waren grad lange Tage ;)
Title: Re: RND() in Konsolenanwendungen
Post by: Topzombie on 2010-Mar-03
Ja das verstehe ich...   :D

Nochmal zu SEEDRND
Code (glbasic) Select
SEEDRND MID$(PLATFORMINFO$("time"), 17, 2)

Das funktioniert zwar teilweise aber es kommen trotzdem oft die gleichen Ergebnisse.
Gibt es dafür eine bessere Lösung?   O_O

Edit:
Ich habs  :enc:

Code (glbasic) Select
LOCAL TickCount
INLINE
DECLARE_C_ALIAS(GLBGetTickCount,"kernel32.dll", "GetTickCount",(),int);
TickCount = GLBGetTickCount();
ENDINLINE
SEEDRND TickCount
Title: Re: RND() in Konsolenanwendungen
Post by: Topzombie on 2010-Mar-10
Sry. Doppelpost
Title: Re: RND() in Konsolenanwendungen
Post by: Schranz0r on 2010-Mar-11
Sauber :)