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
Benutzerbild von Sir Rufo
Sir Rufo

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

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
578 Beiträge
 
Delphi 12 Athens
 
#2

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
Benutzerbild von stahli
stahli

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

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

  Alt 3. Feb 2016, 13:01
@Benmik

Also grundsätzlich würde ich bei einem überschaubaren Projekt keine Interfaces verwenden. Erst mal bringt das Dir nämlich nichts.

Interfaces bringen Dir nur etwas, wenn sie Vorteile bringen.

Wenn die Wahrscheinlichkeit besteht, dass Du später verschiedene Klassen dynamisch tauschen möchtest, dann machen Interfaces (und der etwas höhere Aufwand) Sinn. Man kann dann eher in "Funtionalitäten" denken und die Klassen sind dann "Funktionalitätenblöcke" (IkannA, IkannB, IkannC).

Wenn Du mit Klassen nicht mehr weiter kommst und andauernd casten musst, dann denke halt über den Einsatz von Interfaces nach. Als reinen Selbstzweck macht das wenig Sinn.


@Sir Rufo
Oh, ich sehe gerade, man kann Interfaces offenbar auch TObject zuweisen und nicht nur TInterfacedObject und somit ohne Referenzzählung arbeiten. War mir noch gar nicht klar. Werde ich heute Abend gleich mal versuchen.
Ich dachte es geht nur mit (Leer-)Überschreiben der Referenzzählung.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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
 
#4

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

  Alt 3. Feb 2016, 13:12
Mit einem Interface legt man fest, was die Klasse implementieren muss.

Basis für jedes Interface ist dabei IInterface und das legt 3 Methoden fest, die also immer wie auch immer vorhanden sein müssen.

Wie diese Implementierung und das Verhalten aussieht ... bleibt dem Klassen-Designer überlassen.

TInterfacedObject hat diese 3 Methoden schon implementiert und ich kann von da meine Klasse ableiten ... wenn die Implementierung von TInterfacedObject auch passt.

Und es gibt noch eine Menge mehr Spielarten gerade im Bezug auf Interfaces, die das ganze dann auch sehr flexibel machen.
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
Benutzerbild von stahli
stahli

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

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

  Alt 3. Feb 2016, 13:22
Stimmt, ich hatte mich hier von einem anderen Thread in die Irre führen lassen. Aber Das Überschreiben (Stillegen) der Referenzzählung werde ich nochmal versuchen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  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
 
#6

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

  Alt 3. Feb 2016, 13:24
Stimmt, ich hatte mich hier von einem anderen Thread in die Irre führen lassen. Aber Das Überschreiben (Stillegen) der Referenzzählung werde ich nochmal versuchen.
Einfach von Delphi-Referenz durchsuchenTInterfacedPersistent ableiten
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
578 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 3. Feb 2016, 14:17
Naja, die Delphi-Gurus drohen mit Exkommunikation, wenn man sich nicht an ihre Bibeln hält (Nick Hodges: "If I could teach a new programmer one thing it would be this: Program to an interface, not an implementation."; "A good developer codes against abstractions, and not implementations."). Da ist es ein Vorteil, wenn man kein zertifizierter Delphi-Priester ist: Man kommt nicht in den Olymp, kann aber auch nicht auf dem Scheiterhaufen landen.
  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
 
#8

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

  Alt 3. Feb 2016, 15:14
@Benmik

Mach dir da nichts draus. Der Nick versteckt die implementierenden Klassen auch gerne mal im implementation Teil und erzeugt Instanzen im initialization Abschnitt.

Da kenne ich wiederum einige, die ihm dafür die Büßer-Kutte umhängen würden.
(Ja, ich auch)
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
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 01:59 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