AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SaveToStream in OnChange Ereignis...

Ein Thema von litsa · begonnen am 25. Aug 2006 · letzter Beitrag vom 26. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von litsa
litsa

Registriert seit: 6. Jul 2006
Ort: Detmold
51 Beiträge
 
Delphi 2006 Architect
 
#1

SaveToStream in OnChange Ereignis...

  Alt 25. Aug 2006, 22:16
Hallo

ich weiss es gibt sehr viele Beiträge zu savetostream trotzdem komme ich im moment nicht weiter..
Habe hier im Forum schon was gefunden um ein TRichEdit zu speichern:

Delphi-Quellcode:
procedure TcFrame.Button2Click(Sender: TObject);
var
  fs: TFileStream;
  fm: word;
  log: string;
begin
  if Panel4.Caption <> 'then
  begin
    log := Panel4.Caption;
    try
      if FileExists(ExtractFilePath(ParamStr(0)) + '.\logs\' + log + '.log') then
        fm := fmOpenReadWrite
      else
        fm := fmCreate;
      fs := TFileStream.Create(ExtractFilePath(ParamStr(0)) + '.\logs\' +
        log + '.log', fm, fmShareDenyWrite);
      fs.Seek(0, soFromEnd);
      cText.Lines.SaveToStream(fs);
    finally
      fs.Free;
    end;
  end;
end;
Nun möchte ich aber das ganze in einem OnChange Ereignis einbinden..im Grunde möchte ich dass wenn eine neue Zeile im RichEdit eingefügt wird dann diese Zeile in die Datei am Ende hinzufügen.

Wäre dankbar für jede Hilfe..
Evangelia
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SaveToStream in OnChange Ereignis...

  Alt 25. Aug 2006, 22:25
Moin Litsa,

muss es unbedingt ein Richedit sein, bzw. brauchst Du die Formatierung, oder ist das RichEdit auf PlainText eingestellt?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von litsa
litsa

Registriert seit: 6. Jul 2006
Ort: Detmold
51 Beiträge
 
Delphi 2006 Architect
 
#3

Re: SaveToStream in OnChange Ereignis...

  Alt 25. Aug 2006, 22:30
hi
also es muss ein richedit sein (habe schon ne menge code fertig) und ja is auf plan text eingestellt..
Evangelia
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SaveToStream in OnChange Ereignis...

  Alt 25. Aug 2006, 23:27
Moin litsa,

mit PlainText := true dürfte das so funktionieren:

Delphi-Quellcode:
var
  sLine : string;

begin
  if cText.Lines.Count = 0 then exit;
  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;
Vielleicht könntest Du den Filestream auch als Feld im Formular anlegen, und im OnCreate erzeugen (OnDestroy freigeben), so dass Du ihn nicht immer neu erzeugen musst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von litsa
litsa

Registriert seit: 6. Jul 2006
Ort: Detmold
51 Beiträge
 
Delphi 2006 Architect
 
#5

Re: SaveToStream in OnChange Ereignis...

  Alt 26. Aug 2006, 12:50
Hallo Christian
also OnChange will einfach nicht Nur mit ButtonClick krieg ich's hin..

fs.Write(sLine[1],length(sLine)); schreibt die zeile in ner art delimited text oder so ähnlich (wenn mehrere strings vorkommen)in die datei...ansonsten fügt er die zeile 3 mal in die datei ein..
Evangelia
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#6

Re: SaveToStream in OnChange Ereignis...

  Alt 26. Aug 2006, 13:41
Du solltest es mit fmOpenWrite versuchen. Dann wird der Inhalt komplett gelöscht, bevor neu beschrieben wird.

allerdings ist das im OnChange pro Tastendruck ein Speichervorgang... das ist schlecht für die Festplatte! Ich würde das nur in Zeitintervallen, z.B. über einen Timer, speichern, oder durch den benutzer gesteuert, mit einem button.

das mit dem zeile anhängen finde ich zu kompliziert.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#7

Re: SaveToStream in OnChange Ereignis...

  Alt 26. Aug 2006, 14:19
Zitat von DGL-luke:
Du solltest es mit fmOpenWrite versuchen. Dann wird der Inhalt komplett gelöscht, bevor neu beschrieben wird.

allerdings ist das im OnChange pro Tastendruck ein Speichervorgang... das ist schlecht für die Festplatte! Ich würde das nur in Zeitintervallen, z.B. über einen Timer, speichern, oder durch den benutzer gesteuert, mit einem button.

das mit dem zeile anhängen finde ich zu kompliziert.
So würde ich es auch machen, aber genau dann wird ständig alles gespeichert, und das will litsa ja wohl vermeiden...

Zum Speichern der gesamten Datei bietet sich doch etwas viel Einfacheres an:
Delphi-Quellcode:
sDateiname := ...
cText.Lines.SaveToFile(sDateiname);
Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: SaveToStream in OnChange Ereignis...

  Alt 26. Aug 2006, 15:31
Zitat von DGL-luke:
Du solltest es mit fmOpenWrite versuchen.
Déjà-lu
Du kannst ja im OnChange-ereignis mit cText.Lines.Count ob Zeilen hinzugekommen sind oder nicht
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Benutzerbild von litsa
litsa

Registriert seit: 6. Jul 2006
Ort: Detmold
51 Beiträge
 
Delphi 2006 Architect
 
#9

Re: SaveToStream in OnChange Ereignis...

  Alt 26. Aug 2006, 16:10
SaveToFile löscht ja den Inhalt und das will ich net...

Ich glaube das Problem liegt bei der Write-Methode bzw. write soll erst aufgerufen werden wenn die zeile durch ist
Evangelia
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#10

Re: SaveToStream in OnChange Ereignis...

  Alt 26. Aug 2006, 16:18
Zitat von litsa:
SaveToFile löscht ja den Inhalt und das will ich net...
Stimmt, es löscht den bisherigen Inhalt der Datei - aber es speichert den vollständigen aktuellen Inhalt des RTF-Edit. Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:09 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