AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tag-Benutzung in einer Schleife

Offene Frage von "Nikolas"
Ein Thema von Nikolas · begonnen am 23. Sep 2005 · letzter Beitrag vom 23. Sep 2005
Antwort Antwort
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Tag-Benutzung in einer Schleife

  Alt 23. Sep 2005, 13:49
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:
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;
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.
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...
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Tag-Benutzung in einer Schleife

  Alt 23. Sep 2005, 14:04
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:
// Der Aufruf:
sg1.tag := 0;
for i := 0 to 5 do
begin
  schreiben(sg1);
  {showmessage(inttostr(i))};
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Tag-Benutzung in einer Schleife

  Alt 23. Sep 2005, 14:07
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...
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Icarus666
Icarus666

Registriert seit: 17. Sep 2005
10 Beiträge
 
#4

Re: Tag-Benutzung in einer Schleife

  Alt 23. Sep 2005, 14:15
Ohne jetzt den Quellcode näher betrachtet zu haben, würde ich sagen, du hast vergessen

randomize; aufzurufen, bevor du die Zufallszahl benutzt.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Tag-Benutzung in einer Schleife

  Alt 23. Sep 2005, 14:21
Zitat von Toxman:
Mir gehr es primär um die Erhöhung des Tags.
Zwischen meinen Zeilen darfst du lesen, dass dein Code in Ordnung ist. Wenn etwas schief geht, dann in der Prozedur Foo!!

Zitat von Toxman:
Das einfachste wäre natürlich eine globale Variable, aber ich glaube die sind nicht so beliebt hier...
Lass dich nicht einschüchtern. Wenn du weißt, was du tust, dann darfst du alles.

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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz