Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie wird die Array aufgefüllt ? (https://www.delphipraxis.net/3389-wie-wird-die-array-aufgefuellt.html)

Darty 10. Mär 2003 00:09


Wie wird die Array aufgefüllt ?
 
Ich wusste nicht so recht wie ich die Frage stellen sollte bzw in welcher Sparte. Hoffe aber richig getroffen zu haben :)

Ich habe einen fremden Code vor mir, den ich zur Zeit Analysiere wie der genau funktioniert. Und der sieht ein wenig verwirrend aus. Zum Beispiel diese Stelle:
Code:
begin
  For i := 1 to MaxRounds do
  For ii := 1 to MaxGames do
  For iii := 1 to 2 do
    RoundRobinAry[i][ii][iii] := 0;
IF ((Teams < 2) OR (Teams > MaxTeams)) Then exit;
Oder bräuchte man mehr von den gesamten Code um es besser zu verstehen ?
Wenn ich richig verstanden habe, dann macht dieser ungefähr so
Code:
RoundRobinAry[1][1][1] := 0;
RoundRobinAry[2][2][2] := 0;
u.s.w.
Oder wie genau läuft dies ab ?

Luckie 10. Mär 2003 03:51

RoundRobinArray ist ein dreidimensionales Array. Und die Elemente eines Arrays spricht man über deren Index an. Näheres dazu in der Hilfe oder in jeden guten Grundlagenbuch.

MrSpock 10. Mär 2003 07:09

Mallo M.Knebel,

das hast du absolut richtig verstanden. Der gesamte Array wird mit Nullen gefüllt.

Ich ziehe aber folgende Notation vor (ist aber wohl Geschmackssache):

Delphi-Quellcode:
RoundRobinAry[i, j, k] := 0;

Darty 10. Mär 2003 11:14

Zitat:

Zitat von Luckie
RoundRobinArray ist ein dreidimensionales Array. Und die Elemente eines Arrays spricht man über deren Index an. Näheres dazu in der Hilfe oder in jeden guten Grundlagenbuch.

Danke für die Belehrung, aber dass wollte ich nicht wissen :warn:

Zitat:

Zitat von MrSpock
Ich ziehe aber folgende Notation vor (ist aber wohl Geschmackssache):

Dieser Code habe ich ja nur rausgeschnitten. So würde ich es auch nie machen, dass verwirrt nur :D


Was mich eigentlich verwirrt ist die verschachtelung. Ich habe nähmlich in der Regel Eine Schleife dann mit Begin und End programmiert. In den oben stehenden Fall heisst das Die Schleife nur das RobinRoundArry betrifft, und die letzte Zeile mit den "If .." nicht von der Schleife betroffen ist. Richtig ?
Und was mich interessieren würde wie sieht die Reihenfolge aus wie das Array angesprochen wird ?
Code:
begin
  For a := 1 to 10 do
  For b := 1 to 10 do
  For c := 1 to 2 do
    RoundRobinAry[a][b][c] := 0;
...


Das Ergebnis wäre

RoundRobinAry[1][1][1] := 0;
RoundRobinAry[1][1][2] := 0;
RoundRobinAry[1][2][1] := 0;
RoundRobinAry[1][2][2] := 0;
RoundRobinAry[1][3][1] := 0;
u.s.w.
und die letzte wöre
RoundRobinAry[10][10][2] := 0;

ist dass richtig ?

sakura 10. Mär 2003 11:27

Richtig. Dadurch, dass die begin...end Blöcke weggelassen wurden, bezieht sich jede Schleife immer nur auf die nächste und die letzte auf das Löschen des Array.

...:cat:...

P.S. Alles geht etwas performanter mit FillChar(...).

Darty 10. Mär 2003 11:40

Zitat:

Zitat von sakura
Richtig. Dadurch, dass die begin...end Blöcke weggelassen wurden, bezieht sich jede Schleife immer nur auf die nächste und die letzte auf das Löschen des Array.

Danke, dann habe ich jetzt Gewissheit :thuimb:
Zitat:

Zitat von sakura
P.S. Alles geht etwas performanter mit FillChar(...).

Ich kenne das noch nicht, aber ich will sowieso wenn ich den langen fremden Code verstanden habe für mich verständlicher programmieren. In Prinzip will ich den Algorythmus (schreibt man es so ?) rauskriegen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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