Thema: Delphi Wert aus Array entfernen

Einzelnen Beitrag anzeigen

Walgo

Registriert seit: 1. Mär 2008
5 Beiträge
 
#1

Wert aus Array entfernen

  Alt 1. Mär 2008, 20:42
Guten Abend,
[drei Leerzeilen entfernt, Luckie]
ich mache momentan Delphi in Informatik und habe nebenher angefangen ein-zwei eigene Programme zu schreiben.
[drei Leerzeilen entfernt, Luckie]
Darunter war auch die Idee ein "Lotto-Programm" zu schreiben - also 6 aus 49 Möglichkeiten.
[drei Leerzeilen entfernt, Luckie]
Ich habe einen Array "werte" von 0 bis 48 mit den Werten 1-49 Gefüllt.
[drei Leerzeile entfernt, Luckie]
Nun soll nach jeder Ziehung die gezogene Zahl aus diesem Array entfernt werden, damit sie nicht wieder gezogen werden kann.
[drei Leerzeilen entfernt, Luckie]
Ich habe in dieser For Schleife die Zufallszahlenberechnung und das Entfernen des Wertes geschrieben.

Die Fehlerausgabe spricht von einer "Exception der Klasse EAccessViolation" - so wie ich das Verstanden habe bedeutet das "Übergabe eines ungültigen Wertes"

[drei Leerzeielen entfernt, Luckie]
zw = speichert die gezogene Zahl der "jeweiligen Runde".
Zufall= integer array [0..5], in ihm sollen alle gezogenen Zahlen gespeichert werden
p = ist die Schleifenvariable für die While-Schleife
Delphi-Quellcode:
 for i := 0 to 5 do
        begin

            zw:= RandomFrom (werte);
            zufall[i]:= zw;
            p:=0;
           while (p+zw) <> high(werte) do
             begin

               werte[zw+p-1]:=werte[zw+p];
               p:=p+1;
             end;

          SetLength(werte,length(werte)-1);

        end;
[drei Leerzeielen entfernt, Luckie]
Also die For-Schleife liefert 6 Wiederholungen - für 6 Zahlen.
[eine Leerzeielen entfernt, Luckie]
Die While-schleife soll die Array-Werte verschieben, hier ist ein Beispiel, wie ich mir das gedacht habe:
[eine Leerzeielen entfernt, Luckie]
Code:
zw= 6
->
while (0+6) <> 48 do werte(5):=werte(6)
p:=p+1
(die zweite While runde sollte dann so aussehen:
while ( 1+6) <> 48 do werte(6):=werte(7) usw.)
Aber bei dieser Zeile scheint er ein Problem zu bekommen:

Code:
werte[zw+p-1]:=werte[zw+p];
[drei Leerzeielen entfernt, Luckie] Hat jemand von euch eine Idee wo der Fehler liegt, bzw. hat jemand eine Idee wie ich die gezogene Zahl aus dem Array am besten löschen kann?

[drei Leerzeielen entfernt, Luckie]
Würde mich wirklich sehr freuen
[drei Leerzeielen entfernt, Luckie]
mfg walgo

[edit=Luckie]Jetzt weiß ich auch, wo meine Leerzeilen geblieben sind. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat