Delphi 7 Frage

Razyl

Raid-Boss
Registriert
04.04.2007
Beiträge
24.316
Reaktionspunkte
163
Kommentare
775
Buffs erhalten
842
Ahoi,

das Forum passt hier wohl nicht zu 100%, aber ich bin mir sicher hier gibt es auch ein paar Leute, die Ahnung von Delphi (7) haben.

Im Grunde geht es darum: Ich muss/soll/will bis morgen einen Vortrag in Informatik zusammenstellen über Schleifen in Delphi. Gut, die wichtigsten Schleifenarten habe ich alles zusammen, was mir aber jetzt noch fehlt sind Verschachtelte Schleifen. Natürlich habe ich ihm Lehrbuch nachgeschaut, doch so richtig steht da nicht, was diese Verschachtelten Schleifen genau sind bzw. was sie bewirken. Das Einzige was dort gegeben ist, ist ein ein kleines "1x1"-Programm, wo eine verschachtelte Schleife im Quelltext gegeben ist. Geholfen hat mir das allerdings auch nicht viel.

"Befrage ich halt Google", dachte ich mir und suchte mit Google. Gefunden habe ich da allerdings auch nicht viel, weshalb ich nun hier diesen Text schreibe: Kann mir bitte jemand, möglichst genau Verschachtelte Schleifen in Delphi 7 erklären und was sie bringen? Das wäre wirklich genial und würde mir sehr weiterhelfen.

Danke im voraus

Razyl
 
Na das Beispielprogram ging vermutlich doch in diese Richtung:

Für i=1 Bis i=100
für j=1 bis j=100
Gebe aus i * j
nächstes j
nächstes i

Und das Program macht dann 1*1 1*2 1*3 .... usw. bis 100*100.
Die beiden Schleifen sind verschachtelt, ist die eine durchgelaufen geht die andere einen Schritt weiter.

Versuch dieses 1x1 Programm doch mal ohne diese beiden Schleifen zu schreiben , spätestens dann sollte der Nutzen klar sein.
 
Verschachtelte Schleifen können auch sowas sein:
Code:
procedure RecursiveDir(Path: String);
var
 sr: TSearchRec;
begin
 x := FindFirst(..., sr);
 while x = 0 do
 begin
	if (sr.Attribute = Verzeichnis) then
 	RecursiveDir(Path + sr.Name);
	...
 end;
end;
Also sich selbst-aufrufende Prozeduren.
 
Zuletzt bearbeitet von einem Moderator:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var x,y : Integer;
begin
 for y:=1 to 10 do
	for x:=1 to 10 do
 	StringGrid1.Cells[x-1,y-1]:=
 	IntToStr(x*y);
end;

So sieht dieses 1x1-Programm im Quellcode aus mit den verschachtelten Schleifen. Im StrinGrid sieht das dann normal aus, so dass alle Tabellenfelder belegt sind mit der richtigen Zahl.

Ohne die Verschachtelte Schleife müsste das ja dann so aussehen:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var x,y : Integer;
begin
 for y:=1 to 10 do
 	StringGrid1.Cells[0,y-1]:=IntToStr(y);
	for x:=1 to 10 do
 	StringGrid1.Cells[x-1,0]:=IntToStr(x);
end;

Und damit wäre das 1x1 nicht mehr gegeben, da ich ja die anderen Tabellenfelder nie erreichen würde.

Um es auf das Beispiel zu beziehen: Ich könnte ohne diese verschachtelten Schleifen das volle 1x1 im StringGrid nie voll erreichen, denn ansonsten belege ich ja nur die äußersten Tabellenränder links und oben.

Sehe ich das richtig? :S
 
Auch wenn die Variablen x/y für die Tabellenpositionierungen genutzt werden hat das ja erstmal nichts mit dem 1x1 an sich zu tun.
Im zweiten Beispiel versuchst du ja nicht mal x*y auszurechnen.
 
Im zweiten Beispiel versuchst du ja nicht mal x*y auszurechnen.

Wie denn auch? Weder vor der Schleifensetzung noch nach der Schleife bringt das ausrechnen nichts. Direkt in die 1. Schleife kann ich es nicht setzen und setze ich es in die X-Schleife, bringt es nichts, da dann die y-Schleife schon vollständig durchgelaufen ist.
 
Das Ganze wäre weitaus übersichtlicher wenn man auch den Endpunkt jederSchleife definieren würde (Begin .. End).
Das scheint zwar in Delphi aoch ohne zu gehen, aber glücklich finde ich diese Konstrukte nicht grade.
Dafür hat man ja die Einrückung.
tongue.gif
 
Zurück