Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi OmniXML TOmniXMLReader / TOmniXMLWriter (https://www.delphipraxis.net/170278-omnixml-tomnixmlreader-tomnixmlwriter.html)

Adrenalin 9. Sep 2012 20:45

AW: OmniXML TOmniXMLReader / TOmniXMLWriter
 
Zitat:

Zitat von mirage228 (Beitrag 1182256)
Du rufst den falschen Konstruktor in Deinem Code auf.

Du erstellst das Objekt nur im constructor Create(String). In Deinem Code rufst Du aber Create() auf. Das lädt nur den Konstruktor der Parent-Klasse. Dort wird nix erstellt.

Änder Deinen Code ab, sodass auch im Create die StringList erzeugt wird, z.B. über eine Helfer-Methode. Alternativ kannst Du auch Deinen Konstruktur-Aufruf ändern. Dann läufts ;)

Wie meinst du Constructor aendern jetzt genau?
Filename raus und nur Create und Filename dann als Property?

Ok habs gesehen, du hast vollkommen Recht, mit Übergabe des Filenamens gehts.
Vielen Dank!

mirage228 9. Sep 2012 20:48

AW: OmniXML TOmniXMLReader / TOmniXMLWriter
 
Zitat:

Zitat von Adrenalin (Beitrag 1182257)
Zitat:

Zitat von mirage228 (Beitrag 1182256)
Du rufst den falschen Konstruktor in Deinem Code auf.

Du erstellst das Objekt nur im constructor Create(String). In Deinem Code rufst Du aber Create() auf. Das lädt nur den Konstruktor der Parent-Klasse. Dort wird nix erstellt.

Änder Deinen Code ab, sodass auch im Create die StringList erzeugt wird, z.B. über eine Helfer-Methode. Alternativ kannst Du auch Deinen Konstruktur-Aufruf ändern. Dann läufts ;)

Wie meinst du Constructor ndern jetzt genau?
Filename raus und nur Create und Filename dann als Property?

Beispielsweise. Das wäre die einfachste Lösung.
Oder Du machst zwei Konstruktoren explizit in der Klasse.
Der eine ruft dann nur den anderen Konstruktor auf (auch kein "inherited Create"!) und setzt die FileName-Property. Aber auch die Lösung über eine dritte Methode in der Klasse ist möglich, diese übernimmt dann die Erstellung der Objekte und wird von beiden Konstruktoren benutzt.

Adrenalin 9. Sep 2012 20:55

AW: OmniXML TOmniXMLReader / TOmniXMLWriter
 
[QUOTE=mirage228;1182259]
Zitat:

Zitat von Adrenalin (Beitrag 1182257)

Beispielsweise. Das wäre die einfachste Lösung.
Oder Du machst zwei Konstruktoren explizit in der Klasse.
Der eine ruft dann nur den anderen Konstruktor auf (auch kein "inherited Create"!) und setzt die FileName-Property. Aber auch die Lösung über eine dritte Methode in der Klasse ist möglich, diese übernimmt dann die Erstellung der Objekte und wird von beiden Konstruktoren benutzt.

Ich könnte wenn ich das richtig verstehe soviele Constructoren bauen wie ich will, z.B. einmal mit Filename einmal ohne jedoch alle beinhalten dann im Create die Stringliste?

mirage228 9. Sep 2012 21:12

AW: OmniXML TOmniXMLReader / TOmniXMLWriter
 
Ja, also Hauptsache Du erzeugst die StringList irgendwie in jedem Deiner Konstruktoren. Wenn Du das TStringList.Create allerdings nur zentral an einer Stelle hast (bzw. generell solche Initialisierungs-Sachen) erhöht das die Wartbarkeit ungemein :)

Adrenalin 9. Sep 2012 21:15

AW: OmniXML TOmniXMLReader / TOmniXMLWriter
 
Zitat:

Zitat von mirage228 (Beitrag 1182264)
Ja, also Hauptsache Du erzeugst die StringList irgendwie in jedem Deiner Konstruktoren. Wenn Du das TStringList.Create allerdings nur zentral an einer Stelle hast (bzw. generell solche Initialisierungs-Sachen) erhöht das die Wartbarkeit ungemein :)

Verstehe danke nochmal für die Hilfe und Zusatzerklärungen.

mirage228 9. Sep 2012 21:17

AW: OmniXML TOmniXMLReader / TOmniXMLWriter
 
Zitat:

Zitat von Adrenalin (Beitrag 1182265)
Verstehe danke nochmal für die Hilfe und Zusatzerklärungen.

Gern :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.
Seite 3 von 3     123   

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