Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Der neue und die Probleme... (https://www.delphipraxis.net/7963-der-neue-und-die-probleme.html)

Carbrögen 26. Aug 2003 12:01

Re: Der neue und die Probleme...
 
Ahm wenn ich mit SetLenght() festlegen kann wie groß der Array ist ist er doch eigentlich nich mehr Dynamisch.... okay ich kann SetLength zur Laufzeit ändern aber wenn ics festleg isser Schwachsinnig oder!?


Mfg

S - tefano 26. Aug 2003 13:11

Re: Der neue und die Probleme...
 
Naja, wenn du einen dynamischen Array hast, musst du ihm ja irgendwie sagen können wieviele Elemente es haben soll...
Wenn du den Array einfach deklarierst und zur Laufzeit Elemente hinzufügst, bekommst du ne Exception.
Bevor du also Elemente hinzufügst musst du die größe des Arrays verstellen.
Deshalb ist es ja auch ein dynamischer Array. Du kannst ihn zur Laufzeit verlängern, aber auch verkürzen.
Mit SetLength legst du den Array ja nicht wirklich fest, du bestimmst nur seine Länge. Und die gilt so lange, bis du sie mit SetLength wieder änderst.

Bis dann,

S - tefano

Helpliner 26. Aug 2003 13:15

Re: Der neue und die Probleme...
 
Der Vorteil ist, das du zur Laufzeit auf Eingaben von extern oder auf Ergebnisse von Berechnungen reagieren, und das Array dann dynamisch anpassen kannst.

Alexander 26. Aug 2003 13:18

Re: Der neue und die Probleme...
 
Jupp stimmt.
Als ergänzung habe ich noch ein kleines Tutorial (allerdings nicht von mir ;-)) parat:
http://www.delphi-forum.de/viewtopic.php?t=7204 (mal ein kleiner Verweis zum "Partner"forum)

Carbrögen 26. Aug 2003 17:13

Re: Der neue und die Probleme...
 
Aaaah Ok.

Das heist das ich sage: So du bist jetz ein zweidimensionales array (z.B. regal: array of array of string) und du kannst maximal 10 Elemente aufnehmen (SetLength(regal, 10)). Oder?



Ich Garantiere icht für die richtigkeit des Codes ich wollte es nur veranschaulichen :freak:

Alexander 26. Aug 2003 18:23

Re: Der neue und die Probleme...
 
Jupp. Stimmt so :thuimb:

Carbrögen 26. Aug 2003 21:36

Re: Der neue und die Probleme...
 
Ich sag ja:
:wiejetzt: Geht nicht - Gibts nicht :hello:


Und ich bin Happy das ich das jetz gerallt hab :dance:


Dank DP :dp: ... :-)


Ahm ja gut also das hab ich Intus dann kann ich ja getrost ans Coden gehen
:coder:

Danke =)


Wenn ich Probleme hab (wie im Andern Themenraum) komm ich zu euch 8)

Mfg Marc

Snoop007 26. Aug 2003 22:29

Re: Der neue und die Probleme...
 
hi,
ich hab die beiträge alle mal kurz überflogen, ich gebs ja zu ;)

was ist ein array ( wie kann man sich das vorstellen )

du weisst was variablen sind ?
einfach eine speicheradresse die vom typ string ( zeichenkette ) oder integer ( ganzezahlen ) oder sonstwas ist

eine varible deklarieren wir mit
Code:
var
  hallo : string;
wir haben eine variable vom typ string deklariert
nun können wir einen Wert der Variablen zuweisen bsp. "A1"
Code:
  begin
    hallo := 'A1';
  end;
was ist aber wenn wir mehrere werte speichern müssen, von denen wir die anzahl nicht kennen oder aber die einen einheitlichen namen verwenden sollen oder oder oder ... dann benutzen wir arrays
arrays sind quasie viele einzelne variablen
um ein dynamisches(sprich unbestimmte länge) array zu erzeugen geben wir dies an
Code:
var
  hallo : array of string;
nun müssen wir nur noch sagen, wie gross das dynamische array sein soll.
wir bereiten das array auf einen wert vor
Code:
begin
  SetLength(hallo,1);
end;
wir haben nun eine stelle im array "frei gestellt" ein array fängt immer bei 0 an zu zählen, also greifen wir mit
Code:
  hallo[0] := 'a';
auf den platz im array zu und weisen das zeichen a hinzu. genau wie bei variablen

statische arrays haben eine feste länge
Code:
var
  hallo : array[0..9] of string;
hier wurde ein array erzeugt, welches 10 felder hat der zugriff erfolgt wie bei einfachen variablen oder dynamischen arrays
Code:
  hallo[0] := 'a';
um die länge eines array rauszufinden, kannst du length() oder high() aufrufen, wobei length() auch bei mehr demensionalen array funktioniert.
achte darauf, wenn du length() verwendest und eine speicherstelle ansprechen willst, das ergebnis length() -1 zu nehem !
SetLength() benutzt du um die länge eines dynamischen array zu ändern, verbraucht viel speicher klingt komisch ist aber so ;)

kurz zu mehr demensionalen arrays
Code:
var
  hallo : array[0..9] of array[0..9] of string;
wieviele demensionen hat hallo ?

2, weil jedes array of eine denemsion ist, gleiches gilt für dynamische arrays
Code:
var
  hallo : array of array of string;
ich hoffe, ich konnte helfen,

grüsse

Carbrögen 27. Aug 2003 08:59

Re: Der neue und die Probleme...
 
Konntest du nur wurde mir schon geholfen danke :mrgreen:

Taladan 27. Aug 2003 09:39

Re: Der neue und die Probleme...
 
@Carbrögen
Kleine berichtigung. Du hast ein zweidimensionales Array geschaffen

Delphi-Quellcode:
Array of Array of string //zwei dimensionen
Du hast aber mit deiner SetLength(regal, 10) nur EINE Dimension festgelegt. Du mußt immer alle Dimensionen Festlegen. Also

Delphi-Quellcode:
SetLength(Regal, 10, 10) //für zwei dimensionen
Ein zweidimensionales Array kannst du gut mit einen Güterbahnhof vergleichen. Ein Güterbahnhof (wo ja in der Regel in seiner Struktur identisch aufgebaut) hat einen Namen oder eine Bezeichnung, das ist der Name des Arrays. Dieser Güterbahnhof hat mehrere Bereiche (1 Dimension). Jede Bereich hat die selbe Anzahl an Stellplätzen (2 Dimension). Diese Stellpätze können durch die Cargoboxen auch aufeinander gestellt werden.(3 Dimension).

Wie gesagt, bei mehr Diemensionen wird es echt schwer das ganze Logisch darzustellen. Versuch immer, so wenig wie möglich Dimensionen zu verwenden. Ab drei wird es echt schwer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.
Seite 2 von 3     12 3      

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