![]() |
Re: Mit SaveToFile Daten an eine Datei anhängen?
Hallo :hi:,
TEditStream gibt es in Delphi7 nicht, da hast du recht. ;) Da sieht man mal wieder wie wichtig es ist, so viel Angaben wie Möglich zu machen, um Missverständnisse zu vermeiden. Dadurch kann man sich viel Arbeit, Nerven und Zeit sparen. :mrgreen: MfG freak |
Re: Mit SaveToFile Daten an eine Datei anhängen?
Delphi-Quellcode:
Diese Zeile übersehen?
uses RichEdit;
Diese Unit gibt's schon bei Delphi 5 und da drin ist TEditStream definiert. |
Re: Mit SaveToFile Daten an eine Datei anhängen?
Natürlich musste nur meine Uses-Klausel erweitert werden :thumb:
Aber... :wall: folgender Fehler folgt: "Inkompatible Typen TStream und _editstream" Sorry, dass ich langsam ans Aufgeben denke, aber ist die Copy-Paste-Methode eigentlich unsicher? |
Re: Mit SaveToFile Daten an eine Datei anhängen?
Also noch einmal komplett:
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(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; procedure AlteDateiPlusInhaltGleichNeueDatei(const DieAlteDatei: string; RichEdit, TempRichEdit: TJvRichEdit; const DieNeueDatei: string); var MemoryStream: TMemoryStream; begin TempRichEdit.LoadFromFile(DieAlteDatei); TempRichEdit.SelStart := TempRichEdit.Perform(WM_GETTEXTLENGTH, 0, 0); MemoryStream := TMemoryStream.Create; try RichEdit.SaveToStream(MemoryStream); AddRtfFromStream(TempRichEdit.Handle, MemoryStream); finally MemoryStream.Free; end; TempRichEdit.SaveToFile(DieNeueDatei); end; |
Re: Mit SaveToFile Daten an eine Datei anhängen?
Ich bewundere deine Geduld, Flocke :angel2:
Mir geht sie leider aus. Es wird erstmal fehlerfrei compiliert. kleine Korrektur:
Delphi-Quellcode:
muss heißen:
TempRichEdit.SaveToFile(DieNeueDatei);
Delphi-Quellcode:
und so weiter...
TempRichEdit.Lines.SaveToFile(DieNeueDatei);
Aber beim Ausführen der Prozedur AddRtfFromStream wird die Exception "RichEdit operation fehlgeschlagen!" erzeugt. Mir gehts wie diesem kleinen Smilie :coder2: Nochmal meine Frage: Was ist der Nachteil an der Copy-Paste-Methode? |
Re: Mit SaveToFile Daten an eine Datei anhängen?
Das hat nur den Nachteil, dass du den Inhalt der Zwischenablage zerstörst (falls der User den noch braucht).
Probier doch mal zwei kleine Änderungen:
Delphi-Quellcode:
hast du ja bestimmt schon in
TempRichEdit.LoadFromFile(DieAlteDatei);
Delphi-Quellcode:
geändert.
TempRichEdit.Lines.LoadFromFile(DieAlteDatei);
Füge hier eine Zeile ein:
Delphi-Quellcode:
Ich hab's hier nur mit 'nem TFileStream direkt aus der Datei probiert, da hab' ich die Neupositionierung wohl vergessen.
RichEdit.SaveToStream(MemoryStream);
MemoryStream.Position := 0; // <-- hier AddRtfFromStream(TempRichEdit.Handle, MemoryStream); |
Re: Mit SaveToFile Daten an eine Datei anhängen?
:hello: Ein Hoch auf Flocke :hello:
Seine Geduld führte dazu, dass ich jetzt mein Copy-Paste-Prinzip über Bord werfen kann :hi: und das gleiche per Streaming erreiche. Vielen Dank :spin2: (Jetzt muss ichs nur noch nachvollziehen) |
Re: Mit SaveToFile Daten an eine Datei anhängen?
In Zeile
Delphi-Quellcode:
kommt bei mir ein Fehler. *Variable erforderlich*. Woran liegt das?????
EditStream.pfnCallback := @_AddRtfCallback;
|
Re: Mit SaveToFile Daten an eine Datei anhängen?
Komischerweise tritt der Fehler jetzt nicht mehr auf. *grübel*
habe trotzdem eine Frage. Und zwar kann mir jemand erklären was die Befehle
Delphi-Quellcode:
machen?
EM_STREAMIN EM_STREAMOUT SFF_SELECTION
|
Re: Mit SaveToFile Daten an eine Datei anhängen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:11 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