Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Auf Einladen RTF warten (application ProcessMessages Problem


zongo-joe - Sa 11.03.17 16:00
Titel: Auf Einladen RTF warten (application ProcessMessages Problem
Tag zusammen ich habe ein Problem, das ich auch nach WWW Suche nicht lösen kann:

ich lade mit


Delphi-Quelltext
1:
TRicheditTEXT.lines.loadfromfile                    


eine Datei aus einer mit Word erstellten RTF-Datei.

direkt danach wird der Text weiter verarbeitet, mit WordWrap = True, Ersetzen von Text usw.

Manchmal wird der Text aber nicht richtig eingeladen, da werden dann Zeilen unterbrochen, wie zB


Zitat:
Dies ist e
in Text, der in ein
er Zeile stehen soll.



Anscheinend hat die Applikation nicht genug Zeit, den Text einzuladen. Wenn ich nämlich nach dem o.g. LoadfromFile() ein  Showmessage('Text wird eingeladen') einbaue, funzioniert alles perfekt.

Habs schon mit  Processmessagesprobiert, aber dann friert die Appplikation ein (nicht immer, aber manchmal).

Gibt es eine Möglichkeit, abzuwarten, bis die komplette RTF eingeladen ist ? sleep() hilft nix, hab ich schon probiert...

Grüße und Danke schonmal,

Zongo-Joe


t.roller - Sa 11.03.17 18:10


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.ButtonClick(Sender: TObject);
begin
RichEdit1.Lines.BeginUpdate;
 if OpenTextFileDialog1.execute then
       RichEdit1.Lines.LoadFromFile(OpenTextFileDialog1.FileName);
RichEdit1.Lines.EndUpdate;
end;


Delete - Sa 11.03.17 18:42

- Nachträglich durch die Entwickler-Ecke gelöscht -


zongo-joe - Sa 11.03.17 18:48

@ T.Roller,

das wars ! funktioniert, vielen Dank, hast mir sehr geholfen !


@ Frühlingsrolle: danke für die Antwort, aber daran lags nicht.


Delphi-Laie - Sa 11.03.17 19:19

user profile iconzongo-joe hat folgendes geschrieben Zum zitierten Posting springen:
Anscheinend hat die Applikation nicht genug Zeit, den Text einzuladen. Wenn ich nämlich nach dem o.g. LoadfromFile() ein  Showmessage('Text wird eingeladen') einbaue, funzioniert alles perfekt.


Das ist merkwürdig, denn egal, welcher Befehl nach dem Ladebefehl kommt, er kann doch erst beginnen, wenn der vorige, also der Ladebefehl, (erfolgreich?!) abgeschlossen wurde. Das ist nunmal das Wesen des Singlethreadings, also wenn nur ein Anweisungsstrang existiert. Es ist demnach m.E. ausgeschlossen, daß während des Showmessages noch irgendetwas "nach-/hinterhergeladen" wird.

Edit: Sehe gerade, daß das Problem gelöst wurde.