AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

OmniXML TOmniXMLReader / TOmniXMLWriter

Ein Thema von Adrenalin · begonnen am 9. Sep 2012 · letzter Beitrag vom 9. Sep 2012
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:13
Hi,

Änder mal deine Klasse so ab:

Delphi-Quellcode:
type
  TAppConf = class(TPersistent)
  private
    FFileName: string;
    FTestPropName: string;
    FTestPropType: TTemplateType;
    FMemoInhalt: TStringList;
  public
     constructor Create(const FileName: string); overload;
     destructor Destroy; override;
     procedure LoadConf(const Filename: string);
     procedure SaveConf(const Filename: string);
     property MemoInhalt: TStringList read FMemoInhalt;
  published
     property TestPropName: string read FTestPropName write FTestPropName;
     property TestType: TTestType read FTestType write FTestType;
     property Filename: string read FFilename write FFilename;
     property MemoText: String read GetMemoText write SetMemoText;
  end;
und in GetMemoText udn SetMemoText gibts Du den Inhalt von FMemoInhalt zurück bzw. setzt diesen

Welche Delphiversion verwendest Du?

Grüße
  Mit Zitat antworten Zitat
Adrenalin

Registriert seit: 8. Sep 2012
16 Beiträge
 
#2

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:19
Hi,

Änder mal deine Klasse so ab:

Delphi-Quellcode:
type
  TAppConf = class(TPersistent)
  private
    FFileName: string;
    FTestPropName: string;
    FTestPropType: TTemplateType;
    FMemoInhalt: TStringList;
  public
     constructor Create(const FileName: string); overload;
     destructor Destroy; override;
     procedure LoadConf(const Filename: string);
     procedure SaveConf(const Filename: string);
     property MemoInhalt: TStringList read FMemoInhalt;
  published
     property TestPropName: string read FTestPropName write FTestPropName;
     property TestType: TTestType read FTestType write FTestType;
     property Filename: string read FFilename write FFilename;
     property MemoText: String read GetMemoText write SetMemoText;
  end;
und in GetMemoText udn SetMemoText gibts Du den Inhalt von FMemoInhalt zurück bzw. setzt diesen

Welche Delphiversion verwendest Du?

Grüße
Wie in beiden?
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.388 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:29
Delphi-Quellcode:
procedure SetMemoText(Value: String);
begin
  FMemoInhalt.Text := Value;
end;

function GetMemotext: String;
begin
  result := FMemoInhalt.Text;
end;
einmal lesen, einmal schreiben....
  Mit Zitat antworten Zitat
Adrenalin

Registriert seit: 8. Sep 2012
16 Beiträge
 
#4

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:39
Delphi-Quellcode:
procedure SetMemoText(Value: String);
begin
  FMemoInhalt.Text := Value;
end;

function GetMemotext: String;
begin
  result := FMemoInhalt.Text;
end;
einmal lesen, einmal schreiben....
Gleicher Fehler also nil
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

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

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:40
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
David F.

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

Registriert seit: 8. Sep 2012
16 Beiträge
 
#6

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:45
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!

Geändert von Adrenalin ( 9. Sep 2012 um 21:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

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

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:48
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.
David F.

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

Registriert seit: 8. Sep 2012
16 Beiträge
 
#8

AW: OmniXML TOmniXMLReader / TOmniXMLWriter

  Alt 9. Sep 2012, 21:55
[QUOTE=mirage228;1182259]

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?
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:56 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 by Thomas Breitkreuz