AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mehrere Objekte in einer Schleife erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Objekte in einer Schleife erzeugen

Ein Thema von Flogo · begonnen am 4. Apr 2003 · letzter Beitrag vom 16. Okt 2014
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#1

Mehrere Objekte in einer Schleife erzeugen

  Alt 4. Apr 2003, 16:18
Hi Leute ich würde gern sowas hier machen:

Code:
  for i := 1 to LevelZahl do
    Levels[i] := (TLevel + IntToStr(i)).Create;
TLevel1 bis TLevel20 (oder mehr) sind alles Klassen vom Typ TLevel von dem auch das Array ist.

Geht das irgendwie?
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 4. Apr 2003, 16:39
Mir ist leider keine Möglichkeit bekannt. Das hört sich aber auch nicht unbedingt nach einem durchdachten Konzept an. Sind die Level denn wirklich alle so unterschiedlich, dass jedes eine eigene Klasse benötigt?

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 4. Apr 2003, 16:47
Ich hab leider keine Idee wie ichs sonst machen soll (das mit den Klassen nicht das mit dem erstellen) in den Klassen steht drin was bei einem Klick passiert (ist für ein Point-n-Klick-Adventure) außerdem sind da alle Variablen von dem Level drin.
Im der Klasse steht also sowas wie

Code:
  if HaveRedKey then OpenDoor(2)
also unterscheiden sich die LevelKlassen schon stark.

Das mit dem Erstellen kann ich zur Not auch "von Hand" machen
also

Code:
Levels[1] := TLevel1.Create;
Levels[2] := TLevel2.Create;
Levels[4] := TLevel3.Create;
...
aber für die Levelklassen fällt mir nichts anderes ein
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#4
  Alt 4. Apr 2003, 18:04
Warum einfach wenns auch kompliziert geht.

Versuch mal das und hin und wieder F1


Delphi-Quellcode:
Liste : TObjectlist; // irgendwo public
Level : TLevel; // irgendwo lokal wenn möglich
for i := 0 to sovielLevelwieduhast -1 do
begin
  Level := TLevel.create; / so sind natürlich alle vom gleichen Typ
  Liste.add(Level);
end;
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 4. Apr 2003, 18:23
Ich kann nicht alle vom gleichen typ machen weil ja in jedem was anderes passiert (andere Variablen + if verschachtelungen)
Aber mal abgesehen davon was für einen Vorteil hat die ObjectList gegenüber einem array of TOjekt??
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 4. Apr 2003, 19:50
Moin Flogo,

eine Idee noch:

Benutze immer die gleich Klasse, und übergebe beim Constructor die erforderliche Nummer als Paramter.

So kannst Du dann innerhalb der Kompo anhand des Parameters entscheiden, was passieren soll.

Das würde vor allem dann Sinn machen, wenn die Masse der Methoden bei allen TLevelXX Klassen ansonsten gleich ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#7
  Alt 4. Apr 2003, 22:41
Einfach 'TObjectlist' in Delphi eingeben und F1 drücken, dann siehst du die Vorteile (ich könnte auch copy-paste machen )

Array of TObject = Prozedurale Programmierung mit dem Deckmantel der OOP! (etwas übertrieben aber stimmt im Grunde). Noch schlimmer sind Records und Co!
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#8
  Alt 5. Apr 2003, 08:58
gut ich hab versucht auf die TObjectList umzusteigen
aber bei meinem array konnte ich sagen
Code:
Levels[5].load
Bei der Liste geht das nicht mehr. brauch ich da ne eigene function, die mir das richtige object und die richtige klasse zurückgibt?
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#9
  Alt 5. Apr 2003, 14:42
Also erstmal, die Hilfe kann man über F1 aufrufen, F1 befindet sich neben der Taste 'ESC'. Da du damit offensichtlich Probleme damit hast hier ein Copy-Paste aus meiner Hilfe

Mit TObjectList können Sie eine Liste von Objekten speichern und verwalten. Die Komponente stellt Eigenschaften und Methoden für das Hinzufügen, Löschen, Umsortieren, Suchen, Zugreifen und Sortieren von Objekten zur Verfügung. Ist die Eigenschaft OwnsObjects auf true gesetzt (Voreinstellung), verwaltet TObjectList den Speicher seiner Objekte, das heißt, ein Objekt wird freigegeben, wenn sein Index neu zugewiesen wird, wenn es mit der Methode Delete, Remove oder Clear aus der Liste entfernt wird oder wenn die Instanz TObjectList selbst aufgelöst wird.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#10
  Alt 5. Apr 2003, 18:18
Ok Ok Ich hab die Hilfe schon gefunden (Die F1 Taste auch. war neben der F2 Taste )
Aber hast du meinen Thread gelesen??

Code:

Levels.Items[2].load; //Levels ist eine TObjectList
//funktioniert nicht

Levels[2].load; //Hier ist Levels ein Array of TLevel
//funktioniert
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 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