AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi TObjectList-Object da, aber beim Zugriff Stack-Overflow
Thema durchsuchen
Ansicht
Themen-Optionen

TObjectList-Object da, aber beim Zugriff Stack-Overflow

Ein Thema von Captnemo · begonnen am 18. Jan 2016 · letzter Beitrag vom 3. Feb 2016
Antwort Antwort
Seite 1 von 2  1 2      
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 18. Jan 2016, 15:12
Da der TE wohl XE4 verwendet, wäre sicher auch die generische Objektliste aus der Unit System.Generics.Collections einen Blick Wert.
Damit könnte man sich die Schreibarbeit für Add/Remove/IndexOf etc. ersparen.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#2

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 18. Jan 2016, 15:25
@mjustin:
das Private fehlt tatsächlich. Eigentlich kommen bei mir die Getter und Setter immer in Private, hatte ich lediglich vergessen. (hätte bei dem fehlenden Inherited aber nichts geändert).
Aber ich weiß jetzt was du meinst.

Klar kann man das auch über Generics verwenden. Aber ich habe mich so an meine ObjectList gewöhnt....

Und, zugegeben, der Variablenname Temp ist sicherlich nicht der schlaueste, aber man kann das schon lesen
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 18. Jan 2016, 15:50
Nur so als Tip:

Wenn man Klassen mit Stream-Funktionen ausstattet, dann sollte man auch immer das Interface Delphi-Referenz durchsuchenIStreamPersist an die Klasse heften.

Macht auf jeden Fall das Leben leichter
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#4

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 2. Feb 2016, 22:54
Wenn man Klassen mit Stream-Funktionen ausstattet, dann sollte man auch immer das Interface Delphi-Referenz durchsuchenIStreamPersist an die Klasse heften.Macht auf jeden Fall das Leben leichter
Könntest du mal ausführen, in welchen praktischen Fällen dieses Interface das Leben leichter machen würde? Habe mich ein bisschen in Interfaces eingelesen und bin leicht ratlos, welchen Nutzen man eigentlich von Interfaces hat, wenn man nicht gerade komplexe Klassenstrukturen hat oder externe Schnittstellen ansprechen will.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 3. Feb 2016, 11:30
Hi Benmik,

ich habe mal ein kleines Einsteigertutorial für Interfaces erstellt.
Vielleicht hilft es Dir ja etwas: http://www.delphipraxis.net/183702-i...-factorys.html

Interfaces sind hilfreich, wenn man gleiche Funktionalitäten in unterschiedlichen Klassen unterbringen will.
Es erspart einem das Prüfen und Casten von vorliegenden Objekten wie
Delphi-Quellcode:
if (MyObj is ClassA) then
  (MyObj as ClassA).DoX
else if (MyObj is ClassB) then
  (MyObj as ClassB).DoX;
Statt dessen schreibt man einfach
Delphi-Quellcode:
var
lDoX: IDoX;
...
if Supports(MyIntf, IDoX, lDoX)
  lDoX.DoX;
Dan ist völlig egal, was da für ein Objekt dahinter steckt. Wichtig ist nur noch, ob DoX unterstützt wird oder nicht.


Fluch und Segen (und außerhalb von Delphi unüblich) ist die automatische Referenzzählung. Objekte hinter Schnittstellen werden automatisch freigegeben, wenn es keine Referenzen mehr darauf gibt.
Das kann man als positiv oder auch negativ bewerten - je nach den vorliegenden Bedürfnissen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#6

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 3. Feb 2016, 11:58
Hallo Stahli, deine Produktionen waren für mich sozusagen erste Anlaufstelle. Ich habe zum ersten Mal im Groben kapiert, was Interfaces überhaupt sind. Jetzt stehe ich vor der moralischen Entscheidung : Muss ich die auch verwenden? Die meisten Tutorial-Autoren machen eine Bemerkung, dass für "einfache" Delphi-Programme Interfaces meist nicht notwendig sind. Deshalb hat mich Sir Rufos Bemerkung verwirrt: Warum sollte mann immer das Interface "anheften"? Ist das wirklich die Regel, dass man so viele Objekte hat, die man unter einem Interface versammeln muss?
Und was ich über die Tücken der Referenzzählung gelesen habe: Da sträuben sich die Haare. Also, selbst wenn ich drei Objekte hätte, ich würde die Klassen einzeln erstellen und gut ist. Voraussetzung natürlich: Ich habe weder Schnittstellen nach außen noch irgendwelche Plugins oder Ähnliches.
Aber vielleicht übersehe ich da was. Daher die Bitte um eine praktische Verwendung.

Geändert von Benmik ( 3. Feb 2016 um 12:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 3. Feb 2016, 12:11
Fluch und Segen (und außerhalb von Delphi unüblich) ist die automatische Referenzzählung. Objekte hinter Schnittstellen werden automatisch freigegeben, wenn es keine Referenzen mehr darauf gibt.
Das kann man als positiv oder auch negativ bewerten - je nach den vorliegenden Bedürfnissen.
Das ist leider total falsch.
  1. Die Referenz-Zählung ist keine Erfindung von Delphi
  2. Eine Instanz kann sich automatisch freigeben, wenn der Referenz-Zähler auf 0 geht. Ob das passiert hängt von der Implementierung ab ... und die hat man ja selber in der Hand.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#8

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 3. Feb 2016, 12:26
Und könntest du neben Stahli auch mich mit einer Antwort bedenken?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 3. Feb 2016, 12:31
Wenn man Klassen mit Stream-Funktionen ausstattet, dann sollte man auch immer das Interface Delphi-Referenz durchsuchenIStreamPersist an die Klasse heften.Macht auf jeden Fall das Leben leichter
Könntest du mal ausführen, in welchen praktischen Fällen dieses Interface das Leben leichter machen würde? Habe mich ein bisschen in Interfaces eingelesen und bin leicht ratlos, welchen Nutzen man eigentlich von Interfaces hat, wenn man nicht gerade komplexe Klassenstrukturen hat oder externe Schnittstellen ansprechen will.
Wenn du da so eine schöne Klasse hast, die sich in einen Stream schreiben kann, dann könnte man eines schönen Tages auf die Idee kommen, diese in einer Datenbank in einem Blob-Feld abzulegen.

Habe ich damals beim designen der Klasse nachgedacht und das Interface IStreamPersist implementiert, dann sieht mein Code so aus
Delphi-Quellcode:
MyDataSet.Append;
MyDataSet.FieldByName( 'BlobData' ).Assign( MyInstance );
MyDataSet.Post;
Und wenn ich es wieder zurück haben möchte?
Delphi-Quellcode:
// leider nur sehr kurz
MyInstance.Assign( MyDataSet.FieldByName( 'BlobData' ) );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
570 Beiträge
 
Delphi 12 Athens
 
#10

AW: TObjectList-Object da, aber beim Zugriff Stack-Overflow

  Alt 3. Feb 2016, 12:44
Hab Dank. Das muss ich mir erstmal zu Gemüte führen. Vermutlich liegt für mich der Punkt, an dem ich mal Interfaces brauchen kann, in einiger Ferne. Das war bei generischen Objektlisten allerdings auch mal so, und heute kann ich mir ein Leben ohne sie gar nicht mehr vorstellen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:28 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