Delphi-PRAXiS

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 25. Aug 2003 17:17


Der neue und die Probleme...
 
Servus

Ja also ich bin der neue. Ich hab mein neues Hobby das µC Programmieren jetzt endgültig beschlossen auszuführen.

Ich habe angefangen ein ISP Programmiersystem zu entwickeln (mit Hilfe der website Microcontroller.net) und mir das Buch
"Programmieren lernen in Borland Delphi 7" vom Hanser Verlag (Walter Doberenz und Thomas Kowalski)
gekauft.


Jetzt entstehen erste Probleme mit den Arrays...

Okay ich fag mal an das hier zu Erklären - so wie ich es verstanden habt, es wäre lieb wenn ihr mich korrigieren könnte :-=').
Also:
Ein array ist eine Variable die wie eine Tabelle aufgebaut ist, eine Tabelle mit zwei Spalten (name der "Untervariable" und wert dieser) und beliebig vielen Zellen. Auch Konstanten können als Array Fungieren.

Sie werden wie folgt Deklariert:
Code:
var arr: array of [I]datentyp[/I]
// oder
const monate: array[1...12] of [I]datentyp[/I] = ([I]Daten[/I])
Ah eben hab ich es verstanden... Ersteres ist ein Dynamischer Array, zweites ein Konstanter. Asonsten gibts noch die Typen IntListe; Zeichen und Matrix welche man wie folgt deklariert:
Code:
type TIntListe = array[1...10] of Integer;
type TZeichen = array['a'..'z'] of Byte;
type TMatrix = array[10..20, 0..5] of Single;
obwohl ich letzteres nich Rall..

Korrigiert mich oder Erklärt es mir nochmal neu...

Mfg Marc

alcaeus 25. Aug 2003 17:27

Re: Der neue und die Probleme...
 
Was genau verstehst du nicht? Es sind doch alles nur eindimensionale arrays, bis auf das letzte. Wenn du nun den Typ TMatrix verwenden willst, geht das so:

Delphi-Quellcode:
var
  Matrix: TMatrix;
begin
  Matrix[10,0] := 0;
  Matrix[10,1] := 4;
  ...
  Matrix[20,5] := 235;
end;
Ist doch nicht schwer oder? Falls das nicht die Antwort war die du wolltest, sag es mir.

PS: :hi: Willkommen in der DP

Alexander 25. Aug 2003 17:32

Re: Der neue und die Probleme...
 
Zitat:

Ein array ist eine Variable die wie eine Tabelle aufgebaut ist, eine Tabelle mit zwei Spalten (name der "Untervariable" und wert dieser) und beliebig vielen Zellen. Auch Konstanten können als Array Fungieren.
Nur so zur Information :
Ein Array kann auch mehrere Spalten haben, man spricht auch von dimensionen...

PS: Herzlich willkommen in der Delphi-PRaXiS :party:

Luckie 25. Aug 2003 19:21

Re: Der neue und die Probleme...
 
Ich darf dein Topic mal ergänzen?

Der neue und die Probleme mit einem aussagekräftigen Topic :zwinker:

Bitte lies dir die Do's und Dont's noch mal durch und achte beim nächten mal bitte darauf ein aussagekräftiges Topic zu vergeben. Sonst findet man nämlich irgendwann gar nichts mehr wieder und das wäre nicht der Sinn eines Forums.

Carbrögen 25. Aug 2003 20:08

Re: Der neue und die Probleme...
 
Das ist Forum 2 in dem ich rumwerkel und insgesamt das 8te Forum in dem ich "Arbeite" (die adern sind verworfen ...)...

Also ich weis das schon :D aber zur Begrüßung hab ich das mal so geschriebe (kommt nit mehr vor keine Angst).



Ja ich rall die Arrays allgemein nicht irgendwie, das Buch vom Doberenz kratzt die An, in Lektion 4 mit den Records und so vertieft er das ei klein wenig aber auch nich großartig.

Also ich mach das Easy: Erlärt mir grad ma nochma alles über die Arrays bitte dann dürfte ich das Itus haben :freak: .


Mfg Marc

:dp:

Gandalfus 25. Aug 2003 21:13

Re: Der neue und die Probleme...
 
vieleicht hilft das
http://www.delphi-treff.de/content/t...dex.php4?kat=6

Carbrögen 25. Aug 2003 21:20

Re: Der neue und die Probleme...
 
Japp das stimmt :-) danke dich


Wenn ich weitere Hilfe Brauch meld ich mic =)

Carbrögen 26. Aug 2003 09:53

Re: Der neue und die Probleme...
 
:wiejezt: das mit den Statischen Arrays Rall ich so langsam - muss nur mal ein paar Beispiele Proggen.
Aber das mit den Dynamischen Arrays und dem SetLegth :wall:...

Einen Dynamischen Array Deklarier ich wie einen Statischen mnunr mit weglassen des [x...y] (also
Code:
var punkte: array of integer
Aber wie is das mit SetLength?
Was meinen die mit "Länge eines Elementes"?

Kann ich dann in (ich nehme ma den array von oben), wenn ich punkte[3] die Länge 20 zuweise, maximal eine Zahl mit 20 Nummern zuweisen oder wie ist das??


Mfg
Marc

Illuminator-23-5 26. Aug 2003 10:12

Re: Der neue und die Probleme...
 
letLength setzt die länge des arrays
z.B.:
var
liste: array of integer;
...
setLength(liste, 6);

damit wird die länge des Arrays auf 6 gesetzt und entspricht sozusagen dem:
liste: array[0..5] of integer;

mit length() erhälst du die aktuelle länge des arrays

Taladan 26. Aug 2003 10:37

Re: Der neue und die Probleme...
 
Du kannst übrigens auch mehrdimensionale dynamische Arrays erstellen.

Delphi-Quellcode:
  var   list : array of array of integer //2 dimensionen
         kiste : array of array of array of inter //3 dimensionen


 in der procedure;
   setlength(list, 6, 2); //also Liste(0-5, 0-1);
   setlength(kiste, 8, 6, 9) //also kiste (0-7, 0-5 , 0-8);
Von mehr als drei dimensionen kann ich nur abraten. Da man sie nur schwer logisch darstellen kann und somit das handling SEHR schwer wird.

(ich in einen programmm arbeite mit sechs Dimensionen, was meinen kopf immer zum Qualmen bringt, wenn ich die Werte zuweisen muß. Nur zur info, es ist ein Programm, um Kundenresunanzen, Werbewirksamkeit und vieles mehr auf einen punkt zu bringen).

Der Speicherbedarf ist bei dynamsichen Arrays übrigens ungleich höher als bei festegelegten. Versuche immer, wo auch nur möglich mit statischen Arrays zu arbeiten. Das beschläunigt auch den Programmcode.

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.

Leuselator 27. Aug 2003 09:55

Re: Der neue und die Probleme...
 
Abzählreime sind immer das Schwerste am coden (für mich jedenfalls)

Ich helfe mir bei mehreren Dimensionen immer so:

pseudo,statisch:

Array[0..a][0..b][0..c][0..d][0..e][0..f][0..g][0..h]

a Strassen haben je
b Häuser welche je
c Etagen mit
d Zimmern und je
e Schränken darin besitzen, in denen jeweils
f Fächer sind, in denen jeweils
g Ordner stehen, von denen jeder
h Seiten enthält
usw.

Carbrögen 27. Aug 2003 10:12

Re: Der neue und die Probleme...
 
Ja ist klar. Ich hab damit ich sagen wollen das das so stimmt - der Code war jetz egal. Ich wollte nur das Prinzip Verstanden gewusst haben =)


Das war mir die Hauptsache.


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