AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mit SaveToFile Daten an eine Datei anhängen?
Thema durchsuchen
Ansicht
Themen-Optionen

Mit SaveToFile Daten an eine Datei anhängen?

Ein Thema von meierotto · begonnen am 21. Jun 2005 · letzter Beitrag vom 14. Mär 2008
Antwort Antwort
Seite 1 von 3  1 23      
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#1

Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 10:46
Bin immer noch bei RichEdit

Ist es möglich, mit SaveToFile den Inhalt eines Richedit-Feldes an eine vorhandene Datei anzuhängen?
Und wenn nein, wie könnte ich das sonst realisieren?
Mit append hab ichs schon versucht, leider habe ich es so aber noch nicht hinbekommen, dass die Formatierungen mitgespeichert werden.

Dank im Voraus!
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 10:49
Öffne einen TFileStream mit der Datei, mach ein Seek ans Ende und benutze SaveToStream.
Volker
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 10:51
Das wird nicht gehen (denke ich). Ich glaube, Du musst den Inhalt der Datei in ein TRichMemo einlesen, den Text hinten ran kleben und dann alles wieder abspeichern... Du kannst Dir auch die RTF-Datei parsen (naja, die Präambel extrahieren reicht), dann den Text hintenran und alles mit der Präambel zusammen wieder abspeichern: RTF ist ja nur Text...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 10:55
Bitte, bitte, könnt ihr das nochmal etwas genauer erklären? Am besten mit Delphi-Code?
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 11:00
Hallo

Von welchen Typ ist denn die Datei, an die du den Text aus deinem RichEdit ranhängen möchtest. Das wäre auch noch recht hilfreich.

MfG
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 11:06
Hallo zurück freak4fun

Es handelt sich um eine RTF-Datei.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 11:39
.... uuups, das hab' ich ja voll verpeilt.

Du nimmst am besten ein zweites RichEdit-Control (versteckt) und diese Routine:

Delphi-Quellcode:
uses
  RichEdit;

// Hilfsroutine für AddRtfFromStream
function _AddRtfCallback(dwCookie: Longint; pbBuff: PByte;
  cb: Longint; var pcb: Longint): Longint; stdcall;
begin
  try
    Result := 0;
    pcb := TStream(dwCookie).Read(pbBuff^, cb);
  except
    Result := 1;
  end;
end;

// Ersetzt die aktuelle Auswahl durch den Inhalt des Streams
procedure AddRtfFromStream(RichEdit: TCustomRichEdit; Stream: TStream);
var EditStream: TEditStream;
begin
  EditStream.dwCookie := LongInt(Stream);
  EditStream.dwError := 0;
  EditStream.pfnCallback := @_AddRtfCallback;

  RichEdit.Perform(EM_STREAMIN, SF_RTF + SFF_SELECTION, LongInt(@EditStream));
  if EditStream.dwError <> 0 then
    raise Exception.Create('RichEdit operation fehlgeschlagen!');
end;
Und dann gehst du etwa wie folgt vor (Pseudocode):

Delphi-Quellcode:
RichEdit2.LoadFromFile(DieAlteDatei);
RichEdit1.SaveToStream(TemporärerMemoryStream);
AddRtfFromStream(RichEdit2, TemporärerMemoryStream);
RichEdit2.SaveToFile(DieNeueDatei);
Volker
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 11:50
Ups. Sorry Flocke. Vielleicht hätte ich noch erwähnen sollen, dass ich mit dem Jedi-Richedit arbeite. Und damit läuft dein angegebener Vorschlag leider nicht
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 11:59
Ist ja noch einfacher, JvRichEdit hat nämlich die Eigenschaft "StreamMode".
Delphi-Quellcode:
RichEdit2.LoadFromFile(DieAlteDatei);
RichEdit1.SaveToStream(TemporärerMemoryStream);
RichEdit2.StreamMode := RichEdit2.StreamMode + [smSelection];
RichEdit2.LoadFromStream(TemporärerMemoryStream);
RichEdit2.StreamMode := RichEdit2.StreamMode - [smSelection];
RichEdit2.SaveToFile(DieNeueDatei);
[Nachtrag]

An sich müsste mein alter Vorschlag auch laufen, du musst dann nur den Typen von TCustomRichEdit auf TJvRichEdit ändern.

Oder alternativ so:

Delphi-Quellcode:
// Ersetzt die aktuelle Auswahl durch den Inhalt des Streams
procedure AddRtfFromStream(RichEditHandle: THandle; Stream: TStream);
var EditStream: TEditStream;
begin
  EditStream.dwCookie := LongInt(Stream);
  EditStream.dwError := 0;
  EditStream.pfnCallback := @_AddRtfCallback;

  SendMessage(RichEditHandle, EM_STREAMIN, SF_RTF + SFF_SELECTION, LongInt(@EditStream));
  if EditStream.dwError <> 0 then
    raise Exception.Create('RichEdit operation fehlgeschlagen!');
end;
und dann aufrufen mit AddRtfFromStream(RichEdit2.Handle, TemporärerMemoryStream);
Volker
  Mit Zitat antworten Zitat
meierotto

Registriert seit: 20. Mai 2005
Ort: Cottbus
73 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Mit SaveToFile Daten an eine Datei anhängen?

  Alt 21. Jun 2005, 12:33
Nochmal ups Flocke
Was ich auch nicht erwähnt habe - ich muss im Moment mit Delphi 7 arbeiten. Kann es sein, dass es dort TEditStream nicht gibt? Mit TMemoryStream habe ich es probiert, da überschreibt er aber alles, was vorher eingelesen wurde.
Bei mir funktioniert es übrigens mit Copy-Paste wie folgt:
Delphi-Quellcode:
RichEdit2.Lines.Append(chr(13)); //Ans Ende springen
RichEdit1.SelectAll;
RichEdit1.CopyToClipboard;
RichEdit2.PasteFromClipboard;
Deine vorgeschlagene Möglichkeit mit den Streams wäre aber mit Sicherheit besser, wenns bei mir nur funktionieren würde.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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