Autor Beitrag
Farhan
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Fr 01.08.08 01:12 
Servus,

Ich habe momentan ein Verständnisproblem mit den sogenannten ,, Arrays ".
Folgendes ist mir unklar:

High(my2DIntArray);
Dieser Aufruf liefert 2 zurück, denn das Array enthält ja drei Zeilen! Ein
Aufruf von
ʺLengthʺ würde 3 zurück geben. Um den höchsten zulässigen Index der
ʺUnterarraysʺ
herauszufinden, wendet man High einfach auf sie an:

High(my2DIntArray[0]);
liefert 0 zurück (weil es ja nur ein Element enthält) und

High(my2DIntArray[3]);
liefert 6 zurück. ʺLengthʺ würde 1 bzw. 7 zurückliefern

Ich verstehe nämlich nicht, wie man darauf gekommen ist, wieviele Zeilen
und Elemente das Array hat und wie man darauf kommt, wieviel
zurückgeliefert wurde. Ich wäre dankbar, wenn ihr mir helfen könntet.

MfG,
Farhan
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Fr 01.08.08 02:51 
Wie du schon geagt hast liefert High den größten Wert im Bereich des Arrays zurück.
Und Length gibt Anzahl der Elemente eines Arrays zurück.
Wenn du jetzt Length oder High auf ein Element des Arrays anwendest, dann bekommst du das Ergebniss, für den Integer, der im Array gespeichert is. Und da kann ja nur Mist raus kommen, weil ein Integer hat ja keine Länge, oder einen größtmöglichen Wert.
Hilft dir das, oder meinst du was anderes?

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Fr 01.08.08 03:20 
Wieviele Zeilen und Spalten dein Array hat kannst du mit SetLength festlegen, z.B. setLength(my2DIntArray,50,50); um ein Array mit 50x50 Integern zu erhalten. high(my2DIntArray[0]); müsste dann - genauso wie high(my2DIntArray[3]); oder auch jeder andere Wert zwischen 0 und 49 - als höchsten Wert 49 zurückgeben.

Wenn du wirklich verschiedene Werte zurückbekommst, dann hast du möglicherweise setLength auf die einzelnen Zeilen angewendet, was vermutlich nicht von dir beabsichtigt ist.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 01.08.08 07:59 
:welcome: im Forum erstmal!

Das tolle ist, dass sein Post wahrscheinlich ein Zitat aus irgendeinem Kurs ist. Google sagt mir, dass er aus einem im Delphi-Treff stammt. (HTML-Version, die PDF geht bei mir nicht...)

Seite 24/25 ist seine Quelle. Und wenn er etwas logisch denken und bei Seite 23, letzter Absatz anfangen würde zu lesen (und dann bei dem Folgenden ankommt) wäre alles klar ;)

ausblenden Delphi-Quelltext
1:
2:
3:
4:
SetLength(my2DIntArray, 3);
SetLength(my2DIntArray[0], 1);
SetLength(my2DIntArray[1], 5);
SetLength(my2DIntArray[2], 7);


@Farhan: dass immer einer Googled und für dich liest ist aber relativ selten, liegt nur da dran dass ich grad Langeweile hatte :P

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Farhan Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 02.08.08 18:28 
@Martok: Sorry, ich habe es durchgelesen bis zu diesem Absatz, den du meintest und habe es auch verstanden, aber ich verstehe leider immernoch nicht wie man da auf diese Ergebnise kommt. Kannst du mir es bitte vielleicht ausführlich erklären ? Oder andere? :)

Haben vielleicht diese Beispiele, die ich vorhin aufgezählt habe, mit diesem Code zu tun, den du hervorgehoben hast. Sind sie auf den bezogen oder sind das unabhängige Beispiele?

PS: Ja, sie sind aus diesem Delphi-Kurs. ;)
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: So 03.08.08 02:14 
HI,

der Code den Martok geposted hat legt die Länge der Arrays fest. Und wenn du nun die Länge des Arrays mit "Length" abrufst, dann kommt das raus, was du vorher mit SetLength festgelegt hast: also 1, 5 und 7!

Mfg Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^