![]() |
Tag-Benutzung in einer Schleife
Hi,
Ich habe folgendes Problem: In einer Funktion will ich etwas in eine Zeile eines Stringgrids schreiben. Diese Funktion rufe ich mehrmals hintereinander in einer for-Schleife auf. Um mir zu merken, in welche Zeile die Funktion schreiben soll, erhöhe ich nach dem die Funktion in eine Zeile geschrieben hat, den Tag des Grids. Der Code sieht etwa so aus:
Delphi-Quellcode:
Wenn ich diesen Code ausführe, stehen immer die gleichen Zahlen in den verschiedenen Zellen (kein Zufall). Führe ich das showmessage aus, sind es unterschiedliche Zahlen.
Procedure schreiben(var sg: tStringgrid);
var tag: byte; i: byte; begin i:= random(5); tag:= sg.tag; with sg do begin foo; cells[0,tag]:= inttostr(i); end; sg.tag := sg.tag+1; {sleep(50}); end; // Der Aufruf: for i:=0 to 5 do begin schreiben(sg1); {showmessage(inttostr(i))}; end; Lasse ich nur das sleep ausführen, steht von sleep(0) bis sleep(20) die gleiche Zahl in den Zellen, ab sleep(50) wieder unterschiedliche. Kann mir da jemand helfen? Irgendwie sieht es so aus, als ob das Erhöhen des Tags nur verzögert oder gar nicht wirkt... |
Re: Tag-Benutzung in einer Schleife
Hi,
es gibt bestimmt eine bessere Lösung für die Zeilenaddressierung, aber dein Code funktioniert auch mehr als einmal, wenn du eine zusätzliche Zeile einfügst:
Delphi-Quellcode:
Grüße vom marabu
// Der Aufruf:
sg1.tag := 0; for i := 0 to 5 do begin schreiben(sg1); {showmessage(inttostr(i))}; end; |
Re: Tag-Benutzung in einer Schleife
Darüber wollte ich mir später Gedanken machen. Mir gehr es primär um die Erhöhung des Tags. Das einfachste wäre natürlich eine globale Variable, aber ich glaube die sind nicht so beliebt hier...
|
Re: Tag-Benutzung in einer Schleife
Ohne jetzt den Quellcode näher betrachtet zu haben, würde ich sagen, du hast vergessen
Delphi-Quellcode:
aufzurufen, bevor du die Zufallszahl benutzt.
randomize;
|
Re: Tag-Benutzung in einer Schleife
Zitat:
Zitat:
Grüße vom marabu @icarus666: Randomize() sorgt lediglich dafür, dass der Generator für die Zufallswerte neu initialisiert wird. Auch ohne diese Prozedur werden Werte in pseudo-zufälliger Folge erzeugt, allerdings immer die gleiche Folge nach jedem Programmstart - gut für Tests. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 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-2025 by Thomas Breitkreuz