Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekte gezielt aufrufen (https://www.delphipraxis.net/124246-objekte-gezielt-aufrufen.html)

Tod787 17. Nov 2008 14:34


Objekte gezielt aufrufen
 
Hallo, habe folgendes Problemchen:

Ich habe eine Klasse mit Feldern

Zitat:

TMyclass (Field1, Field2, Field3)
und mehrere Objekte davon

Zitat:

Objekt1 := TMyclass.create
Objekt2 := TMyclass.create mit Feldern
Object3 := TMyclase.create mit Feldern
Wenn ich jetzt eine Variable y habe die von 1-3 geht... Wie schaffe ich das richtige Objekt aufzurufen?

sprich wenn
Zitat:

y = 3
soll
Zitat:

Object3
aufgerufen werden. Da ich mehrere 100 Objekte habe möchte ich auf Verzweigungen verzichten.

Kurz: Gibt es eine Methode mit der man das Ganze so ähnlich schreiben kann wie
Zitat:

object + y.field1 := true;

Luckie 17. Nov 2008 14:38

Re: Objekte gezielt aufrufen
 
Pack deine Objekte in eine Delphi-Referenz durchsuchenTObjectList, dann kannst du sie über einen Index ansprechen.

Tod787 18. Nov 2008 08:11

Re: Objekte gezielt aufrufen
 
Erstmal danke!

Möchte mich an ein Beispiel hier aus dem Forum richten.

Delphi-Quellcode:
var
   liste:TObjectlist;
begin
  liste.add(TObjekt.create('Test1'));
  liste.add(TObjekt.create('Test2'));
end;
Bei mir kommt allerdings eine Fehlermeldung bei der Deklaration.
Was muss denn noch in den "Uses-Teil" damit TObjectlist deklariert werden kann?

Edit: Hat sich erledigt!

Delphi-Quellcode:
type TObjectList = class (Classes.TList);
Also nix uses ;)

automatix 18. Nov 2008 08:25

Re: Objekte gezielt aufrufen
 
Hallo!

Zuerst sollte irgendwo bevor auf die Liste zugegriffen wird ein
Delphi-Quellcode:
list := TObjectList.Create;
stehen.

Die uses Anweisung sollte um Contnrs erweitert werden.

Grüße

DeddyH 18. Nov 2008 08:26

Re: Objekte gezielt aufrufen
 
Delphi-Quellcode:
uses Contnrs;
Also doch uses ;)

Sherlock 18. Nov 2008 08:28

Re: Objekte gezielt aufrufen
 
Wenn in einem Beitrag etwas so hervorgehoben wird: Delphi-Referenz durchsuchenTObjectList, dann bedeutet es, daß Du dazu etwas in der Onlinehilfe Deines Delphi findest. Wenn du dort nach TObjectList suchst, dann findest Du ganz schnell alle nötigen Informationen. ;)

Sherlock

Tod787 18. Nov 2008 08:51

Re: Objekte gezielt aufrufen
 
Guten Morgen Sherlock, danke, hab es dann auch gemerkt :)

Jetzt hab ich allerdings doch noch ein Problem das in der Hilfe nciht geschildert wird.

Ich möchte nämlich in jeder Zeile der Liste ein Array of TObject haben.

Delphi-Quellcode:
Interface

(...)

type TObject = class(TObject)
    // Felder
    Field1: Single;
    Field2: Single;
    Field3: Integer;
    Field4: Integer;
end;

(...)

var

   MyObject1: array[0..20] of TObject;
   MyObject2: array[0..20] of TObject;
   MyObject3: array[0..20] of TObject;
   MyObject3: ...
   

   liste: TObjectlist;

Implemetation:
   MyObject1 := TObject.create;
   MyObject2 := TObject.create;
   MyObject3 := TObject.create;
   MyObject4 := ...

Wie kann ich das jetzt mit einer Objectlist realisieren?

Meine bescheide Anfänge wären:

Delphi-Quellcode:
Interface

(...)

type TObjectList = class (Classes.TList)
    // Felder
    Field1: Single;
    Field2: Single;
    Field3: Integer;
    Field4: Integer;
end;

(...)

var

   liste: TObjectlist;

Implemetation:

(...)   

begin
    liste.add(TObjekt.create('Test1'));
    liste.add(TObjekt.create('Test2'));
end;
Aber wie bekomme ich das mit Arrays hin?

Sherlock 18. Nov 2008 09:15

Re: Objekte gezielt aufrufen
 
Also, leg doch in die ObjectList weitere ObjectLists.

Sherlock

DeddyH 18. Nov 2008 09:20

Re: Objekte gezielt aufrufen
 
Und nimm die aus der Unit Contnrs statt einer eigenen Implementierung. Btw: "TObject" als eigener Klassenname ist mehr als unglücklich.

Sherlock 18. Nov 2008 09:26

Re: Objekte gezielt aufrufen
 
Delphi-Quellcode:
liste.add(TObjekt.create('Test1'));
liste.add(TObjekt.create('Test2'));
Allein wegen dieser beiden Zeilen ist das ganze bisher doch sowieso eher akademischer Natur.

;)

Sherlock


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Seite 1 von 2  1 2      

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