Fehler bei zuweisung
Fehler bei zuweisung
Hallo,
bin auf folgendes Problem gestoßen:
Ich habe 10 Werte in ein Memofeld geschrieben, diese Werte möchte ich nun Tagen zuweise, also für ein Jahr.
Das ganze soll nachdem Zufallsprinzip erfolgen.
Das ganze habe ich mit einer For-Schleife versucht.
Hier tritt nun das Problem auf: Ich habe 365 Tage und 10 Werte, also müssen die Werte ja insgesamt jeweils mehr als einmal vorkommen und ich bekomme die Fehlermeldung: List index exceeds bounds (10).
Gibt es da wohl eine Lösung für?
Ach so, Ausgabe auch in einem Memofeld.
LG
bin auf folgendes Problem gestoßen:
Ich habe 10 Werte in ein Memofeld geschrieben, diese Werte möchte ich nun Tagen zuweise, also für ein Jahr.
Das ganze soll nachdem Zufallsprinzip erfolgen.
Das ganze habe ich mit einer For-Schleife versucht.
Hier tritt nun das Problem auf: Ich habe 365 Tage und 10 Werte, also müssen die Werte ja insgesamt jeweils mehr als einmal vorkommen und ich bekomme die Fehlermeldung: List index exceeds bounds (10).
Gibt es da wohl eine Lösung für?
Ach so, Ausgabe auch in einem Memofeld.
LG
Re: Fehler bei zuweisung
Klingt nach "0-Fehler".
Wenn du zehn Werte hast, ist der höchste bei Listeneintag 9 und der erste bei 0.
Du greifst auf den 10ten Eintrag zu, den es gar nicht gibt.
Wenn du zehn Werte hast, ist der höchste bei Listeneintag 9 und der erste bei 0.
Du greifst auf den 10ten Eintrag zu, den es gar nicht gibt.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2816
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Fehler bei zuweisung
Das ist ja schön. Magst du uns den relevanten Quellcode noch zeigen oder sollen wir raten?gillian_x hat geschrieben:Das ganze habe ich mit einer For-Schleife versucht.
Das bedeutet, dass du auf ein Element zugreifst, welches nicht existiert. Da musst du deine For-Schleife wohl anders aufbauen. Wie? Kann man dir sagen, wenn man sie gesehen hat.gillian_x hat geschrieben:List index exceeds bounds (10).
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Fehler bei zuweisung
okay
begin
for i := 0 to 355 do begin
day:=memo1.Lines[random(memo1.lines.count)+1];
memo2.lines.Add('Tag'+IntToStr(i)+' '+day);
end;
Memo2.Lines.SaveToFile('test.txt');
Ja, also muss ich es ja iwie hinbekommen, dass Werte mehrfach genommen werden. Nur weiß ich leider nicht wie

begin
for i := 0 to 355 do begin
day:=memo1.Lines[random(memo1.lines.count)+1];
memo2.lines.Add('Tag'+IntToStr(i)+' '+day);
end;
Memo2.Lines.SaveToFile('test.txt');
Ja, also muss ich es ja iwie hinbekommen, dass Werte mehrfach genommen werden. Nur weiß ich leider nicht wie

Re: Fehler bei zuweisung
Das +1 scheint mir zuviel
day:=memo1.Lines[random(memo1.lines.count)+1];
day:=memo1.Lines[random(memo1.lines.count)+1];
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2816
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Fehler bei zuweisung
Tja, wie von Theo vermutet, du hast das Zaunpfahlproblem.gillian_x hat geschrieben:Code: Alles auswählen
day:=memo1.Lines[random(memo1.lines.count)+1];
Du hast zehn Einträge in deiner Liste. Count ist also 10. Das erste Element ist 0 und das letzte 9. Also mach dein +1 weg und der Fehler wird verschwinden.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Fehler bei zuweisung
ups... Danke!
nun habe ich noch eine weitere Frage!
Gibt es die Möglichkeit festzulegen wie oft ein Wert verwendet wird?
zb Wert 6 insgesamt 100 mal, Wert 2 insgesamt 50 mal, usw...



nun habe ich noch eine weitere Frage!

Gibt es die Möglichkeit festzulegen wie oft ein Wert verwendet wird?
zb Wert 6 insgesamt 100 mal, Wert 2 insgesamt 50 mal, usw...