Liste mit Objekten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Liste mit Objekten

Beitrag von programmingpony »

Hallo,

Ich würde gerne wissen wie ich eine Liste erstelle , mit Objekten , sagen wir das Objekt hat als Eigenschaft X und Y (Double) und wie ich in einer Schleife zB für jedes Element die X und Y Daten verändern kann

Danke im Vorraus

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Liste mit Objekten

Beitrag von Mathias »

Am besten mit einer Array.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Re: Liste mit Objekten

Beitrag von programmingpony »

Wie oder was soll ih mit einem Array wenn die Anzahl von Objekten unbekannt ist? Ein Array hat dich eine feste Länge,oder?

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Liste mit Objekten

Beitrag von Mathias »

Dynamische Array :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2815
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Liste mit Objekten

Beitrag von m.fuchs »

Nicht unbedingt, es gibt ja auch dynamische Arrays.

Wenn du aber wirklich Objekte hast, solltest du eine Liste nehmen. Zum Beispiel eine generische:

Code: Alles auswählen

program Project1;
{$mode objfpc}{$H+}
 
uses
  Classes, SysUtils, Fgl;
 
type
  // Deine Klasse
  TMyClass = class(TObject)
    private
      FX: Integer;
      FY: Integer;
    public
      property X: Integer read FX write FX;
      property Y: Integer read FY write FY;
  end;
 
  // Die Spezialisierung einer generischen Objektliste für deine Klasse
  TMyList = specialize TFPGObjectList<TMyClass>;
 
 
var
  MyList: TMyList;
  o: TMyClass;
 
begin
  try
    // Erzeuge eine neue Listeninstanz
    MyList := TMyList.Create();
    // Füge der Liste drei neue Elemente hinzu
    MyList.Add(TMyClass.Create);
    MyList.Add(TMyClass.Create);
    MyList.Add(TMyClass.Create);
    // durchlaufe die Liste und setze für jedes Objekt X=10 und Y=9
    for o in MyList do begin
      o.X := 10;
      o.Y := 9;
    end;
  finally
    FreeAndNil(MyList);
  end;
end.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Re: Liste mit Objekten

Beitrag von programmingpony »

// Die Spezialisierung einer generischen Objektliste für deine Klasse
TMyList = specialize TFPGObjectList<TMyClass>;
Gesundheit :D

programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Re: Liste mit Objekten

Beitrag von programmingpony »

Kann ich beim Erstellen schon parameter wie X oder Y mit angeben?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2815
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Liste mit Objekten

Beitrag von m.fuchs »

Ja, definiere einen eigenen Konstruktor:

Code: Alles auswählen

constructor TMyClass.Create(AX, AY: Integer);
begin
  inherited Create;
  FX := AX;
  FY := AY;
end;
Dann kannst du das im Aufruf machen:

Code: Alles auswählen

MyList.Add(TMyClass.Create(10, 9));
MyList.Add(TMyClass.Create(0, 0));
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Re: Liste mit Objekten

Beitrag von programmingpony »

Wie/Wo binde ich das ein? bzw ich bekomme einen fehler

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2815
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Liste mit Objekten

Beitrag von m.fuchs »

Dazu schau doch mal hier rein: http://de.wikibooks.org/wiki/Programmie ... struktoren

Idealerweise liest du dir das ganze eBook mal durch. Das dürfte viele Fragen schon klären.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Re: Liste mit Objekten

Beitrag von programmingpony »

Werd mich nachher mal durch arbeiten danke schon mal

Und wo genau muss nun TMyList = specialize TFPGObjectList<TMyClass>; hin ohne dass es einen fehler verursacht?

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2815
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Liste mit Objekten

Beitrag von m.fuchs »

Ich habe dir doch oben ein komplettes Beispiel gegeben. Selbst wenn du noch nciht den grundlegenden Aufbau eines FPC-Programms verstanden hast, sollte das deine Frage beantworten.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

programmingpony
Beiträge: 18
Registriert: Do 26. Mär 2015, 14:45

Re: Liste mit Objekten

Beitrag von programmingpony »

Lag wohl daran das mir ein end; abhanden gekommen ist im unteren Programmteil

Antworten