PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : delphiabturzprob



Floydpower
17.03.2004, 19:32
also das delphiprob ist das hier :/

procedure mischen;
var pos1,pos2:integer;
speicher:string;
KarteZahl: Array[1..35] of string;

begin
pos1 := random(35);
pos2 := random(35);
speicher := karteZahl[pos1];
karteZahl[pos1] := KarteZahl[pos2];
KarteZahl[pos2] := speicher;

end;

naja leicht umgeschrieben
soll sowas wie n mischprogramm sein (jaja die shcleife fehlt ^^)
das programm mag nicht dass als pos1 udn pos2 als passende Karte da sind :/ wenn da fetse werte sien würden gehts wieder sonst gibts einfahc nur ne Fehlermeldung

[merke grad, dass hier viele rechtschreibfehler sind LALA]

Ineluki
17.03.2004, 22:29
R:=Random(X) spuckt Integerzahlen im Bereich 0<= r <x aus
Deshalb wuerde dein Random(35( zahlen von 0 bis 34 auswerfen.
Ich nehme mal einfach an, der wird zwischenzeitlich mal eine 0 als Zufallszahl auswerfen und da dein Array nur von 1 bis 35 geht, ist da keine 0 drinn ..

Loesung des Problems :

Array als 0..34 definieren
oder
pos1:=Random(35)+1;
pos2:=Random(35)+1;

Gruss Ineluki

Freezy
17.03.2004, 23:14
Auserdem solltest du noch den Random befehl mit "Randomize()" Initzialisieren. Wo zu es gut ist weis ich nicht, ob man es braucht auch net ^^

Ineluki
18.03.2004, 07:29
Der Computer kann keine echten Zufallszahlen erzeugen. Er hat intern eine sehr lange liste mit pseudozufallszahlen. Wenn ein Programm gestartet wird, so spuckt es in der Regel immer die selbe folge von Zufallszahlen aus. Mit Randomize wird der Beginn dieser Liste, von wo angefangen wird, die Zufallszahlen auszugeben, mit der aktuellen Uhrzeit gesetzt, so das bei jedem Programmstart auch wirklich andre Zufallszahlen kommen.

Wuerde er jetzt nur Randomize machen, waere der Fehler vielleicht kurzfristig weg, da grade keine 0 kommt, aber dennoch noch lange nicht behoben. Deshalb hab ich zu Randomize vorhin nix gesagt ^^

Floydpower
18.03.2004, 22:06
Thanks Leute geht jetzt ^^