AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Listenobjekte sortieren

Ein Thema von schuetzejanett · begonnen am 17. Jan 2007 · letzter Beitrag vom 4. Dez 2008
Antwort Antwort
Seite 2 von 2     12
Relicted

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

Re: Listenobjekte sortieren

  Alt 4. Dez 2008, 08:14
Daher empfehle ich immer typisierte Listen...

Mach dir mal nen Project1.dpr und mach nen Loadfromfile in ne Stringliste und mach für jede Zeile nen Format( Liste[i],[Edit1.text] );
In das Edit schreibste dann einfach den Namen der Klasse (ohne das T am Anfang) für die die Liste sein soll... Hier mein "Template"


Delphi-Quellcode:
unit %sList;
                                                                                        
interface
                                                                                        
uses
  Contnrs,
  %s;
                                                                                        
type
  T%sList = class( TObjectList )
  protected
    //* Protected functions..
    function GetItem(Index: Integer): T%s; reintroduce;
    procedure SetItem(Index: Integer; const Value: T%s); reintroduce;
  public
    //* Constructors.. don't forget to call "inherited"
    //constructor Create; overload;
    //constructor Create(AOwnsObjects: Boolean); overload;
                                                                                        
    //* List Functions & Propertys
    function Add(AObject: T%s): Integer; reintroduce;
    function Extract(Item: T%s): T%s; reintroduce;
    function Remove(AObject: T%s): Integer; reintroduce;
    function IndexOf(AObject: T%s): Integer; reintroduce;
    procedure Insert(Index: Integer; AObject: T%s); reintroduce;
    function First: T%s; reintroduce;
    function Last: T%s; reintroduce;
    property Items[Index: Integer]: T%s read GetItem write SetItem; default;
                                                                                        
    //* Insert your own functions here...
  end;
                                                                                        
implementation

uses
  Windows,
  SysUtils;

{ T%sList }                                                                  
                                                                                        
function T%sList.Add(AObject: T%s): Integer;
begin
  result := inherited Add( AObject );
end;
                                                                                        
function T%sList.Extract(Item: T%s): T%s;
begin
  result := inherited Extract( Item ) as T%s;
end;
                                                                                        
function T%sList.First: T%s;
begin
  result := inherited First as T%s;
end;
                                                                                        
function T%sList.GetItem(Index: Integer): T%s;
begin
  result := inherited GetItem( Index ) as T%s;
end;
                                                                                        
function T%sList.IndexOf(AObject: T%s): Integer;
begin
  result := inherited IndexOf( AObject );
end;
                                                                                        
procedure T%sList.Insert(Index: Integer; AObject: T%s);
begin
  inherited Insert(Index,AObject);
end;
                                                                                        
function T%sList.Last: T%s;
begin
  result := inherited Last as T%s;
end;
                                                                                        
function T%sList.Remove(AObject: T%s): Integer;
begin
  result := inherited Remove(AObject);
end;
                                                                                        
procedure T%sList.SetItem(Index: Integer;
  const Value: T%s);
begin
  inherited SetItem(Index,Value);
end;

end.
Damit fällt dann das ekelige Typecasten TMyObject() weg!

Gruß
Reli
  Mit Zitat antworten Zitat
Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#12

Re: Listenobjekte sortieren

  Alt 4. Dez 2008, 08:22
@DeddyH

verstehe nicht was du damit meinst. So hab ich es doch gemacht. Oder haben wir uns zeitlich überschnitten?

Zitat von DeddyH:
Und beiTMyObject(MyObjectlist.Items[i]).Groesse ?
@Relicted
also eigentlich funktioniert das jetzt bei mir aber das mit der Typisierung interessiert mich zwar schon, weiß aber nicht so recht was du mir damit sagen willst. Auf den ersten Blick sieht das für mich komplizierter aus.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.558 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Listenobjekte sortieren

  Alt 4. Dez 2008, 08:26
Jepp, war eine Überschneidung.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Relicted

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

Re: Listenobjekte sortieren

  Alt 4. Dez 2008, 08:34
Hier ich hab das ganze mal schnell in ein "Dreckstool" verpackt.

Es geht einfach darum, dass du den Typecast nicht in jedem Funktionsaufruf machst sondern deine Objekte (TMeinObjekt), die du in die TObjectList reingesteckt hast, auch als TMeinObjekt zurück bekommst anstatt als TObject. Also du nicht immer TMeinObjekt( MeineListe.Items[i] ).Groesse schreiben musst sondern einfach nur noch MeineListe.Items[i].Groesse schreiben kannst.

Führ mal das Programm aus, gib den Namen deiner Klasse ein und erstell ne neue Unit. Die bindest du dann über "uses" bei dir im Projekt ein. Dann ersetzt du überall wo TObjectList vorkommt mit TMeineListe (also so wie du dein objekt benannt hast + liste) und dann kannst du alle TMeinObjekt() wegmachen.

Weiterer Vorteil dieser Liste: du hast immer die Gewissheit dass in der Liste auch wirklich nur "TMeinObjekt"e drinstecken. In eine "normale" TObjectList kannst du halt auch TRelisObjekt, TDeddysObjekt und TIchwaergerneinObjekt reinpacken. Raus bekommste aber immer ein TObject und wenn du dann versuchst TDeddysObjekt auf TMeinObjekt zu casten knallts

Gruß
Reli
Angehängte Dateien
Dateityp: zip listenzeug_727.zip (240,6 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Tod787

Registriert seit: 19. Mai 2008
99 Beiträge
 
#15

Re: Listenobjekte sortieren

  Alt 4. Dez 2008, 09:32
Sehr feine Sache! Jetzt weiß ich auch was du gemeint hast. Getestet, funktioniert und für sehr brauchbar eingestuft!!! Danke für die Geduld! Achja und von wegen "Dreckstool"... also mir gefällts
  Mit Zitat antworten Zitat
Relicted

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

Re: Listenobjekte sortieren

  Alt 4. Dez 2008, 09:33
Kein Problem, naja Dreckstool halt weil Quick and Dirty eben hingeklatscht
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:47 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