AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie arbeite ich mit "Klassen"-Listen

Ein Thema von EccoBravo · begonnen am 24. Apr 2008 · letzter Beitrag vom 26. Apr 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#11

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 12:46
Hallo Pfoto,

Wie erstelle ich dann eine Objektliste und kein Object?

Danke

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 13:02
Hi,

hoffe das hilft dir.


Delphi-Quellcode:

type
  TMyObject = class(TObject)
  private
    FNAme: String;
  public
    property Name: String read FName write FName;
  end;

type
  TMyObjectList = class(TObjectList)
  private
    function GetItem(ndx: Integer): TMyObject;
    procedure SetItem(ndx: Integer; AValue: TMyObject);
  public
    property items[ndx: Integer]:TMyObject read GetItem write SetItem;
    
  end;
  
  
implementation

function TMyObjectList.GetItem(ndx: Integer): TMyObject;
begin
  Result := TMyObject(inherited items[ndx]);
end;

procedure TMyObjectList.SetItem(ndx: Integer; AValue: TMyObject);
begin
  items[ndx] := AValue;
end;
Mit dem Konstrukt kannst du dann zb sowas machen
Delphi-Quellcode:
procedure irgendwas;
var
 aList: TMyObjectList;
begin
  aList := TMyOBjectList.Create;
  aList.Add(TMyObject.Create);

  aList.items[0].Name := 'Hello World';
end;
Grüße
Ansgar
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#13

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 13:13
Hi,

Ich hab das bei meinem Spiel sogemacht

Delphi-Quellcode:
//als erstes von TCollectionItem ableiten
//beispiel von mir
TLager = class(TCollectionItem)
//eigene Eigenschaften
end;

//dann hab ich eine Klasse wo die Variable gespeichert ist
TSchiff = class(TGlFreeForm) //einge klasse von meiner Engien hatt nicht damit zutun
private
FLagerliste : TCollection //kann auch eine Variable sein
published
property Lagerliste : TCollection read FLagerliste write FLagerliste;
end;

//im Creater dann
FLagerliste := TCollection.Create(TLager) //die abgeleitete TCollectionItem Klasse
//dann for-Schleife
for I := 0 to 4 do
with FLagerliste.Add as TLager do //kannst du direkt auf die neue Klasse zugreifen
//sachen, die du verändern willst
So ich hoffe ich habe es richtig verstahnden, was du willst und wenn, dann hoffe ich das es dir hilft.
Nickel
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#14

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 15:39
Hallo angos und Danke an alle,

angos,
soweit so gut, compilieren soweit ohne Mecker,
angos, Deine Lösung gefällt mir am besten.

beim Ausführen des Programms kommt dann aber eine Meldung;

Zitat:
Im Project EB_Pat_Foto_Project1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei der Adresse 00419F9E in Modul EB_Pat_FotoProject1.exe'. 'Lesen von Adresse 00000008' aufgetreten.
Erste Frage:
Ich weiss nicht, was da los ist (Antwort auf diese Frage kann ich wohl nicht erwarten)

Zweite Frage:
Wie kann ich bei Form1.close die Objectliste wieder frei geben?

Also nochmals vielen Dank.
Ihr tragt nicht nur mit Töpfen Licht ins Dunkle.

Grüße

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 15:49
ich habe mal kurz mein minitool angeschmissen.

Delphi-Quellcode:
unit SatzList;
                                                                                        
interface
                                                                                        
uses
  Contnrs,
  Satz;
                                                                                        
type
  TSatzList = class( TObjectList )
  protected
    //* Protected functions..
    function GetItem(Index: Integer): TSatz; reintroduce;
    procedure SetItem(Index: Integer; const Value: TSatz); reintroduce;
  public
    //* Constructors.. don't forget to call "inherited"
    //constructor Create; overload;
    //constructor Create(AOwnsObjects: Boolean); overload;
                                                                                        
    //* List Functions & Propertys
    function Add(AObject: TSatz): Integer; reintroduce;
    function Extract(Item: TSatz): TSatz; reintroduce;
    function Remove(AObject: TSatz): Integer; reintroduce;
    function IndexOf(AObject: TSatz): Integer; reintroduce;
    procedure Insert(Index: Integer; AObject: TSatz); reintroduce;
    function First: TSatz; reintroduce;
    function Last: TSatz; reintroduce;
                                                                                        
    property Items[Index: Integer]: TSatz read GetItem write SetItem; default;
                                                                                        
    //* Insert your own functions here...
  end;
                                                                                        
implementation
                                                                                        
{ TSatzList }                                                                  
                                                                                        
function TSatzList.Add(AObject: TSatz): Integer;
begin
  result := inherited Add( AObject );
end;
                                                                                        
function TSatzList.Extract(Item: TSatz): TSatz;
begin
  result := inherited Extract( Item ) as TSatz;
end;
                                                                                        
function TSatzList.First: TSatz;
begin
  result := inherited First as TSatz;
end;
                                                                                        
function TSatzList.GetItem(Index: Integer): TSatz;
begin
  result := inherited GetItem( Index ) as TSatz;
end;
                                                                                        
function TSatzList.IndexOf(AObject: TSatz): Integer;
begin
  result := inherited IndexOf( AObject );
end;
                                                                                        
procedure TSatzList.Insert(Index: Integer; AObject: TSatz);
begin
  inherited Insert(Index,AObject);
end;
                                                                                        
function TSatzList.Last: TSatz;
begin
  result := inherited Last as TSatz;
end;
                                                                                        
function TSatzList.Remove(AObject: TSatz): Integer;
begin
  result := inherited Remove(AObject);
end;
                                                                                        
procedure TSatzList.SetItem(Index: Integer;
  const Value: TSatz);
begin
  inherited SetItem(Index,Value);
end;
                                                                                        
end.
That's the way i alway do. eine typisierte TObjectList. Finde ist das einfachste was man machen kann.
habe mir das tool "mal eben" geschrieben weil ich keine lust auf das dauernde ersetzen etc hatte. basisklasse eingeben start drücken fertig werden daher mal schnell die "lösung" bereitstell

gruß
reli
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 15:52
Zitat von Luckie:
Das scheint irgendwie jeder zu irgnorieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 15:53
Zitat:
Erste Frage:
Ich weiss nicht, was da los ist (Antwort auf diese Frage kann ich wohl nicht erwarten)
entweder ist die liste oder das objekt was du da rein gepackt hast nicht initialisiert worden. oder du greifst auf kA position 4 zu, hast aber nur 4 objekte in der liste (0..3) ohne meine glaskugel komm ich da gerade auch ned weiter.

Zitat:
Zweite Frage:
Wie kann ich bei Form1.close die Objectliste wieder frei geben?
die liste einfach über die variable mit FreeAndNil( FMeineListe ); freigeben.

gruß
reli


edit: Luckie das is doch oversized :-p *duck*
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 16:01
Das ist nicht oversized, das ist genau das, was ihr heir die ganze zeit zu erklären versucht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 16:08
ah sorry. ja ich hab dir gerade unrecht getan. ich hatte noch im hinterkopf dass hier jemand an einem "generics for win32" ähnlichem gerüst gearbeitet hat. oder es jedenfalls hier diskutiert wurde. und als ich dann kurz den thread überflogen habe sah ich den D.NET ansatz von elvis und ich dachte mir: "generics sind genau das richtige was ein anfänger braucht - bei uns in der firma hatten bei der schulung von bernd ua schon einige alteingesessene leute probleme mit den dingern" und äußerte mich deshalb mit oversized. aber du hast recht. das ist genau was er braucht und wie immer auf die gute luckie art erklärt.
  Mit Zitat antworten Zitat
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#20

Re: Wie arbeite ich mit "Klassen"-Listen

  Alt 25. Apr 2008, 17:45
Prima allerseits,

es funktioniert,
Danke für alle für die Hilfe.

Der Vorschlag von angos war mir am sympatischten,
Den Fehler habe ich übringens auch gefunden, die Initialisierung der SatzList:TSatzList in der Form.Create war am Emde der Methode und mußte an den Anfang der Methode, weil in dieser schon gebraucht.

Nun habe ich die Vorzüge des RAD2007 Together voll genossen.
Nachdem ich das alles fertig hatte habe ich mit einem Federstreich zuerst die Klasse TSatz in eine neue Unit ausgelagert und dann auch die ganze Klasse TSatzList.
Nun ist das eigentliche Programm ein kleiner Vers geworden und läßt sich prima pflegen.

Nun bin ich zufrieden und gehe nach haus.

Euch allen ein schönes Wochenende

E. B.
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 21:38 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