AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi trichedit Stream lesen Fehler kein übergeordnetes Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

trichedit Stream lesen Fehler kein übergeordnetes Fenster

Ein Thema von DrUArn · begonnen am 7. Mär 2018 · letzter Beitrag vom 7. Mär 2018
Antwort Antwort
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 11:44
Hi, comm,

habe ein problem mit dem Schreiben und Lesen von Trichedit in Ressourcendatei:

Delphi-Quellcode:
//Save
procedure TForm1.SaveStream1Click(Sender: TObject);
 var tr:trichedit;

begin
tr:=trichedit.create(self);
tr.parent:=self;
WriteComponentResFile(SpeicherFilename, tr);
freeandnil(tr);
end;


//Load Var. A, funktioniert
procedure TForm1.LoadStream1Click(Sender: TObject);
 var tr:trichedit;

begin
tr:=trichedit.create(self);
tr.parent:=self;
ReadComponentResFile(SpeicherFilename,tr);
end;
Delphi-Quellcode:
//Load Var. B funktioniert nicht
procedure TForm1.LoadStream1Click(Sender: TObject);
 var tr:trichedit;
begin
tr:=ReadComponentResFile(SpeicherFilename,nil) as TRichEdit;
end;
Bei Var. B kommt Fehlermeldung "Fehler beim lesen von Richedit1.lines.strings: Element 'Richedit1' hat kein übergeordnetes Fenster"

Das übergeordnete Fenster scheine ich in Var. A ja mit dem setzen von Parents zu erzeugen.

Heißt das, dass Var. B Prinzipiell nicht für tRichedit's geignet ist?

Zusatzfrage: Um in Streams schreiben und lesen zu können, muß man mit registerclasses die die Classen
registrieren. Wird trichedit automatiscjh registriert - wenn ja wo (in ComCTRLs nicht).

Grüße Uwe
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#2

AW: trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 15:26
Vielleicht so?
Delphi-Quellcode:
procedure TForm1.LoadStream1Click(Sender: TObject);
 var tr:trichedit;
begin
tr:=ReadComponentResFile(SpeicherFilename,nil) as TRichEdit;
tr.parent := self; // so?
end;
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 15:58
Hallo Redeemer,
geht so nicht,
der Fehler erfolgt schon hier

tr:=ReadComponentResFile(SpeicherFilename,nil) as TRichEdit; Parent darf nicht Nil sein, scheinbar für irgendwelche Schreiboperationen nötig. Man könnte statt Form1 (self)
auch ein anderen Richedit in Parent schreiben in Var. A - nicht Zielführend, aber mgl. .

Gruß Uwe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

AW: trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 17:37
Man kann eine neue Komponente erstellen lassen (Parameter nil),
oder man lässt die Ressource in eine existierende Komponente schreiben, die man vorher auch selber erstellen kann.

Bei vorher erstellten Komponenten muß man wegen des Komponenten-Namen aufpassen (der muß leider in der DFM/Ressource drin sein, für die Rootkomponente)
ändert sich der Name, dann ist auch die Komponenten-Variable/Feld leer (published Feld in einem TComponent, wie z.B. der Form),
denn TComponent setzt Felder in seinem Owner, welche so heißen wie die Komponente.
> Bei Verwendung von solchen Feldern/Variablen, knallt es somit, nach dem Auslesen, wenn sich der Name geändert hat. (weil NIL)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 17:48
@Himitsu

Delphi-Quellcode:

procedure TForm1.Button2Click(Sender: TObject);
 var tr:trichedit;
begin
tr:=TRichEdit.Create(Self);
tr.name:='Willi'; //hieß beim Speichern 'Richedit_UA1'
tr.parent:=self;
tr.name:='Willi';
readComponentResFile(Speicherfiledockrich ,tr);

Memo1.Lines.Add(tr.name); //heißt wieder 'Richedit_UA1'
aber
tr:=ReadComponentResFile(Speicherfiledockrich ,nil) as TRichEdit; kommt mit der oben erwähnten Fehlermeldung (kein gültiges Fenster vorhanden)
und man kann parent auch nicht mehr setzen.

Gruß Uwe
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 18:52
Hallo,
dann nimm Application statt nil und setze das danach gleich auf Visible=False.
Heiko
  Mit Zitat antworten Zitat
DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: trichedit Stream lesen Fehler kein übergeordnetes Fenster

  Alt 7. Mär 2018, 19:08
@Hoika

Hallo,
meinst du so:
Delphi-Quellcode:

//geht nicht:
tr:=ReadComponentResFile(Speicherfiledockrich ,application) as TRichEdit;
tr.visible:=false;
das geht nicht, kommt eine Fehler-Meldung: Fehler beim Lesen von Richedit1.Width: Eigneschaft Width existiert nicht.

Ich denke, da wird versucht, in Applikation die Datzen eines Richedit einzulesen, was wohl nicht gut wäre
.

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