AGB  ·  Datenschutz  ·  Impressum  







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

Fragen zu Generic TList

Ein Thema von norwegen60 · begonnen am 25. Jan 2017 · letzter Beitrag vom 26. Jan 2017
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#1

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 08:56
Die Kopie-Liste kann doch auch eine TObjectList sein, nur eben mit OwnsObjects auf false, oder mache ich gerade einen Denkfehler?
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
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 09:00
Zitat:
Die Kopie-Liste kann doch auch eine TObjectList sein, nur eben mit OwnsObjects auf false, oder mache ich gerade einen Denkfehler?
...nö. Es ging auch darum die Unterschiede von TObjectList und TList gegenüberzustellen...
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
514 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 09:19
Das mit den TObjectList hatte ich schon verstanden und will es mir auch noch anschauen. Zuerst wollte ich aber mal die TList verstehen da eine für mich wichtige Anwendung mit TList<> arbeitet und ich noch nicht abschätzen kann welche Auswirkungen ein Wechsel auf TObjectList hat.

Zweifel an meinem Verständnis hatte ich aufgrund der vermeintlich falsch gelöschten Daten in der Kopierliste. Deshalb Dank an Ensaron's Hinweis, dass es sich um einen typischen Paste&Copy Fehler handelt.

Jetzt würde ichnur noch gerne verstehen, wie ich das Notify korrekt implementiere.

Danach stürze ich mich auf TObjectList. Versprochen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.199 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 09:24
Jetzt würde ichnur noch gerne verstehen, wie ich das Notify korrekt implementiere.
Schau mal in die WARNUNG-Meldungen des Compilers. Da steht's eigentlich
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 10:04
Zitat:
Schau mal in die WARNUNG-Meldungen des Compilers. Da steht's eigentlich
[dcc32 Warnung] fo_Tlist.pas(56): W1010 Methode 'Notify' verbirgt virtuelle Methode vom Basistyp 'System.Generics.Collections.TList<fo_Tlist.TMyCla ss>'

Du erzeugst eine neue Notify Procedure

mach es so:

Delphi-Quellcode:
 TMyList = class(TList<TMyClass>)
  private
    FFreeOnDelete: Boolean;
// Die Notify ist protected
   protected
    procedure Notify(const Ptr: tMyclass; Action: TCollectionNotification); override; // Überschreiben nicht virtual
  public
    constructor Create(bValue: Boolean = true);
  end;
Fritz Westermann

Geändert von Fritzew (26. Jan 2017 um 10:07 Uhr)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
514 Beiträge
 
Delphi 12 Athens
 
#6

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 10:16
Die Warnmedlung hatte ich gesehen, nur wusste ich nichts damit anzufangen. Auch nachdem ich noch mal in Netz gesucht habe. Gut dass du mich direkt darauf gelüpft hast.

Viel weiter gekommen bin ich aber noch nicht, denn jetzt bin ich wieder bei
Zitat:
[dcc32 Fehler] fo_Tlist.pas(67): E2037 Deklaration von 'Notify' unterscheidet sich von vorheriger Deklaration
und wenn ich es auf procedure Notify(const Item: T; Action: TCollectionNotification); override; ändere mag er den Typ T nicht.
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 10:19
Ich hatte die Signatur noch mal geändert, (war nur so aus dem Kopf),
mit der aktuellen Signatur sollte es gehen siehe oben
Fritz Westermann
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
514 Beiträge
 
Delphi 12 Athens
 
#8

AW: Fragen zu Generic TList

  Alt 26. Jan 2017, 11:32
Noch mal 1mm weiter aber immer noch nicht am Ziel.

Jetzt streikt der Aufruf
Delphi-Quellcode:
procedure TMyList.Notify(const Ptr: TMyclass; Action: TCollectionNotification); // Überschreiben nicht virtual
begin
  if (FFreeOnDelete) and (Ptr<>nil) and (Action = cnRemoved) then
    Ptr.Free; // Ungültige Zeigeroperation
  inherited Notify(Ptr, Action);
end;
Beim Aufruf von Ptr.Free kommt es zu einer Exception "Ungültige Zeigeroperation". Dispose(Ptr) ging auch nicht.

Ausserdem:
Ich bin dr Meinung, dass inherited nach meiner Aktion erfolgen soll aber auf der Suche fan ich auch Beispiele, wo zuerst inherited aufgerufen wurde. Spielt es eine Rolle?
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz