AGB  ·  Datenschutz  ·  Impressum  







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

Clear von TList überschreiben mit Objekten

Ein Thema von Luckie · begonnen am 3. Jul 2007 · letzter Beitrag vom 4. Jul 2007
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Luckie
Luckie

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

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 10:25
Ich habe es jetzt so:
Delphi-Quellcode:
procedure TPageCollection.Clear;
var
  i: Integer;
begin
  for i := Self.FInnerList.Count - 1 downto 0 do
  begin
    TObject(Self.FInnerList.Items[i]).Free;
    Self.FInnerList.Items[i] := Nil;
    Self.FInnerList.Delete(i);
  end;
// inherited;
  //FInnerList.Clear;
end;
Aber da bekomme ich in der Assign-Methode auch wieder eine AV.

Die Logdatei von FastMM wird übrigens immer größer.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 10:32
Wieso verwendest Du nicht einfach Delphi-Referenz durchsuchenTObjectList ?

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 10:34
@Luckie: könntest du mal die deklaration von TPageCollection posten?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 10:47
@David: Weil ich damit am Anfang unerklärliche Probleme hatte.

Delphi-Quellcode:
TPageCollection = class(TObject)
  private
    FInnerList: TList;
    FPageParent: TWinControl;
    FPageOptions: TPageProperties;
    FScaleFactor: Double;
    FOnAfterAdd: TOnAfterAdd;
    FOnAfterDelete: TOnAfterDelete;
    FOnProgress: TOnProgress;
    FOnSaveFinish: TOnSaveFinish;
    FOnLoadFinish: TOnLoadFinish;
    { Getter und Setter } {}
    function GetScaleFactor: Double;
    procedure SetScaleFactor(const Value: Double);
    function GetPageParent: TWinControl;
    procedure SetPageParent(const Value: TWinControl);
    function GetItem(Index: Integer): TImageEnVect;
    procedure SetItem(Index: Integer; Item: TImageEnVect);
    function GetPageOptions: TPageProperties;
    procedure SetPageOptions(PageOptions: TPageProperties);
    { Private Methoden } {}
    procedure Renumber;
    procedure RescalePage(Page: TImageEnvect);
  public
    constructor Create; overload;
    destructor Destroy; override;
    { Methode zum "Clonen" der Seitenliste }
    procedure Assign(Source: TPageCollection);
    { TList Methoden } {}
    procedure Add(Item: TImageEnVect);
    procedure Clear;
    function Count: Integer;
    procedure Delete(Index: Integer);
    procedure Insert(Index: Integer; Item: TImageEnVect);
    { Fotobook spezifische Erweiterungen für Liste } {}
    { Aktualisiert Seite in der Liste und skaliert sie zurück. }
    procedure UpdatePage(Page: TImageEnVect);
    { Speichert eine Seite ohne sie zurück zu skalieren. }
    procedure Save(Page: TImageEnVect);
    { Liefert den Index einer Seite nach Namen. }
    function FindItemByName(const Name: WideString): Integer;
    { Speichert die Seiten in einem eignen, komprimierten Dateiformat
      mit Bildern und XML-Datei zur Beschreibung der Seiten.
      Ausgelagert in die Klasse TPagesIO. }

    procedure SavePages(const Filename: WideString);
    { Läd Seiten aus einer Fotobuchdatei.
      Ausgelagert in die Klasse TPagesIO. }

    procedure LoadPages(const Filename: WideString);
    { Öffentliche Eigenschaften }{}
    property ScaleFactor: Double read GetScaleFactor write SetScaleFactor;
    property PageParent: TWinControl read GetPageParent write SetPageParent;
    property Items[Index: Integer]: TImageEnVect read GetItem write SetItem;
    property PageOptions: TPageProperties read GetPageOptions write SetPageOptions;
    property OnAfterAdd: TOnAfterAdd read FOnAfterAdd write FOnAfterAdd;
    property OnAfterDelete: TOnAfterDelete read FOnAfterDelete write FOnAfterDelete;
    property OnProgress: TOnProgress read FOnProgress write FOnProgress;
    property OnSaveFinish: TOnSaveFinish read FOnSaveFinish write FOnSaveFinish;
    property OnLoadFinish: TOnLoadFinish read FOnLoadFinish write FOnLoadFinish;
  end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 11:12
Könnte es sein das:

Page.ObjUserData[hObjSource] := Source.Items[i].ObjUserData[hObjSource]; evtl so aussehen muss?:

Page.ObjUserData[hObj] := Source.Items[i].ObjUserData[hObjSource];
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 11:36
Stimmt, das war ein Fehler, aber der ändert leider nichts an der AV.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 11:41
Geh doch mal mit dem Debugger rein und schau, bei welcher Anweisung er im Assign knallt. Das grenzt die Möglichkeiten doch schon arg ein
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#18

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 12:01
Hallo,

vielleicht liegt es am class(TObject),
dass muss doch nicht rein.

Mach doch mal ein kleines kompilierbares Bsp
und hänge es an dein Posting.


Heiko
Heiko
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#19

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 12:03
Dem Compiler ist es ziemlich egal ob du schreibst =class oder =class(TObject). Das Ergebnis ist das gleiche
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Clear von TList überschreiben mit Objekten

  Alt 3. Jul 2007, 12:06
Mir nicht

cih würde das TObject(XXX).Free ersetzen durch die richtige Klasse.

Die internen Assign's macht mir auch Sorgen,
nicht dass du dort irgendwo direkt Pointer aus Source übergibst.

Wo genau im Assign kommt denn der Fehler ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 18:25 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