![]() |
Re: SaveToStream in OnChange Ereignis...
Moin litsa,
dann mach' es doch wie Nicolai vorgeschlagen hat:
Delphi-Quellcode:
Falls die Logdatei bei jedem Programmstart nicht von vorne beginnt, sondern geladen wird, müsstest Du FiLogCount natürlich auf die Anzahl der geladenen Zeilen initalisieren, und nicht auf 0.
type
TcFrame = .... // ... private FiLogCount : integer; end; procedure TcFrame.cFrameCreate(Sender: TObject); begin FiLogCount := 0; end; var sLine : string; begin if cText.Lines.Count = 0 then exit; if FiLogCount = cText.Lines.Count then exit; FiLogCount := cText.Lines.Count; fs := TFileStream.Create(....); try sLine := cText.Lines[cText.Lines.Count-1]+#13#10; fs.Position := fs.Size; fs.Write(sLine[1],length(sLine)); finally FreeAndNil(fs); end; end; |
Re: SaveToStream in OnChange Ereignis...
Hallo
hatte es schon damit versucht und auch gefunden woran es liegt..wenn der text formattiert ist dann fügt er den text nicht hinzu. Obwohl PlainText auf True! Nun habe ich in der Hilfe folgendes gefunden "If the rich text attributes of a file are encoded in some format other than rich text format (RTF), it is necessary to use a converter on the text, even when PlainText is true." ..was auch wahr is :? Also danke an alle Gruß Evangelia |
Re: SaveToStream in OnChange Ereignis...
Moin litsa,
komisch, bei mir funktioniert's :gruebel: Hier mal mein Test vollständig (ein leeres TRichEdit, zwei Button)
Delphi-Quellcode:
Da nicht direkt RichEdit1.Lines.SaveToFile benutzt wird, spielt es auch keine Rolle, ob PlainText := true ist.
type
TForm1 = class(TForm) RichEdit1: TRichEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure RichEdit1Change(Sender: TObject); private { Private declarations } FiLogCount : integer; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin RichEdit1.Lines.SaveToFile('c:\temp\rtf.txt'); end; procedure TForm1.FormCreate(Sender: TObject); var tneSave : TNotifyEvent; begin if FileExists('c:\temp\rtf.txt') then begin tneSave := RichEdit1.OnChange; try RichEdit1.OnChange := nil; RichEdit1.Lines.LoadFromFile('c:\temp\rtf.txt'); finally RichEdit1.OnChange := tneSave; end; end; FiLogCount := RichEdit1.Lines.Count; end; procedure TForm1.Button2Click(Sender: TObject); begin RichEdit1.SelStart := 0; RichEdit1.SelLength := length(RichEdit1.Lines.Text); RichEdit1.SelAttributes.Style := [fsBold]; RichEdit1.Lines.Add('Zeile '+IntToStr(RichEdit1.Lines.Count+1)); end; procedure TForm1.RichEdit1Change(Sender: TObject); var sLine : string; fs : TFileStream; begin if RichEdit1.Lines.Count = 0 then exit; if FiLogCount = RichEdit1.Lines.Count then exit; FiLogCount := RichEdit1.Lines.Count; fs := TFileStream.Create('c:\temp\rtf.txt',fmOpenReadWrite,fmShareDenyWrite); try sLine := RichEdit1.Lines[RichEdit1.Lines.Count-1]+#13#10; fs.Position := fs.Size; fs.Write(sLine[1],length(sLine)); finally FreeAndNil(fs); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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