kostenloser Webspace werbefrei: lima-city


Free Pascal dynamische Arrays

lima-cityForumProgrammiersprachenDelphi & Pascal

  1. Autor dieses Themas

    clee1994

    Kostenloser Webspace von clee1994

    clee1994 hat kostenlosen Webspace.

    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 ! :)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    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
    ,
    dispose
    und
    freemem
    , mit denen der Speicher dynamisch verwaltet werden kann… mit Google wirst du näheres zu den Funktionen und deren Benutzung finden.

    Beitrag zuletzt geändert: 4.11.2012 13:12:35 von hackyourlife
  4. 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.
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    toolz schrieb:
    Schlüsselwörter wie "new" kenne ich aus Pascal nicht.
    Das gibt es (sogar schon im uralten Turbo Pascal 3 für DOS-Rechner ;-)), wenn du es nicht glaubst: Pointer, New, Dispose, GetMem, FreeMem

    toolz schrieb:
    es handelt sich immerhin um keine objektorientierte Programmiersprache.
    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.

    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
  6. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    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
    SetLength
    gesetzt wird.
    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
    SetLength
    wiederverwenden.
  7. 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.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!