Free Pascal dynamische Arrays
lima-city → Forum → Programmiersprachen → Delphi & Pascal
array
code
dynamische speicher
erweiterung
funktion
high
http
implementierung
integer variablen code
list
listen
pointer
programmiersprache
system
turbo
uralten turbo
url
verwaltung
wissen
zeiger
-
Hallo alle zusammen,
ich versuche gerade mein Schulpascal wissen etwas auf zu bessern. In meiner Schule lernt man klassischerweise nur statische Arrays, was mir aber im vergleich zu C oder anderen Hochsprache sehr eintönig vorkommt. Wenn es dann um dynamische Speicher verwaltung geht, bekommt man List beigebracht. Ich finde diese Weg relativ umständlich, deswegen wollte ich Fragen ob es auch einen komfortableren Weg gibt um dynamische Speicher verwaltung im Pascal zu realisieren.
Vielen Dank ! :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Auch wenn mein Wissen bei Turbo-Pascal 3 endet…
Es gibt Zeiger, so wie es sie in C auch gibt. Dazu gibt es dann noch Funktionen wie
,new
,getmem
unddispose
, mit denen der Speicher dynamisch verwaltet werden kann… mit Google wirst du näheres zu den Funktionen und deren Benutzung finden.freemem
Beitrag zuletzt geändert: 4.11.2012 13:12:35 von hackyourlife -
Die einzige Möglichkeit in Pascal dynamische Felder zu erzeugen ist das Verwenden von Listen. Pascal ist eine stark beschränkte Programmiersprache - Was auch immer man mit Pascal programmieren möchte lässt sich von vornherein meist mit begrenzten Feldern abhandeln.
Schlüsselwörter wie "new" kenne ich aus Pascal nicht - es handelt sich immerhin um keine objektorientierte Programmiersprache.
Auch wenn die Implementierung einer Liste in Pascal unkonfortabel erscheint, gibt es keine andere Möglichkeit. -
toolz schrieb:
Das gibt es (sogar schon im uralten Turbo Pascal 3 für DOS-Rechner ), wenn du es nicht glaubst: Pointer, New, Dispose, GetMem, FreeMem
Schlüsselwörter wie "new" kenne ich aus Pascal nicht.
toolz schrieb:
Das stimmt für das ursprüngliche Pascal. Mittlerweile gibt es aber Erweiterungen (siehe Delphi, Turbo Pascal oder Free Pascal) die Pascal in eine objektorientierte Sprache verwandeln.
es handelt sich immerhin um keine objektorientierte Programmiersprache.
Aus dem Free Pascal-Wiki (Free Pascal weil es im Titel des Threads vorkommt): OOP mit Pascal
Beitrag zuletzt geändert: 4.11.2012 13:23:45 von hackyourlife -
Für dynamische Arrays braucht man kein OOP, das geht sehr viel einfacher:
http://wiki.freepascal.org/DYNAMIC_ARRAY
Der Unterschied bei dyn. Arrays besteht darin, dass bei der Deklaration die Länge des Arrays nicht angegeben wird, und danach mit
gesetzt wird.SetLength
Beispielsweise deklarierst du ein Array von Integer-Variablen:
... var MyArray: array of Integer; ...
Wenn du später mit dem Array arbeiten willst, setzt du erst die Länge:
SetLength(MyArray, 5);
Dein Array kann nun 5 Integervariablen halten, nämlich von MyArray[0] bis MyArray[4].
Du kannst dann zu einem späteren Zeitpunkt
wiederverwenden.SetLength
-
Ich bin nicht sicher, ob das unter FreePascal genauso geht, aber unter Delphi würde ich sicherheitshalber immer über Low(), High() und Length() auf Arrays zugreifen.
SetLength(Array, 5); for i := Low(Array) to High(Array) do MachwasmitElement(Array[i]);
Das funktioniert immer, egal, ob es sich um ein statisches oder dynamisches Array handelt und wie es indiziert wurde. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage