AGB  ·  Datenschutz  ·  Impressum  







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

RTF Texte teilen aber Formatierung behalten

Ein Thema von mandumoal · begonnen am 17. Apr 2004 · letzter Beitrag vom 18. Apr 2005
Antwort Antwort
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#1

RTF Texte teilen aber Formatierung behalten

  Alt 17. Apr 2004, 21:47
Hallo!

Ich teile ein ganz großes RTF indem ich nach Trennern suche und dann den Text zwischen zwei Trennern in ein eigenes RTF speichere. Das geht auch ganz wunderbar, aber das Problem ist, das die Formatierungen ja im Dateikopf stehen und nicht übernommen werden wenn ich einen Teil des Dokuments irgendwo rausschneide und einzeln abspeichere.
Hat jemand eine Idee wie ich das lösen könnte damit die Formatierungen übernommen werden?
Ich könnte zwar in jeder Datei den Kopf der ursprünglichen Datei einfügen, aber dann hätte ich jede Menge Formatierungen drinne die gar nicht gebraucht werden.

mfg mandumoal
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: RTF Texte teilen aber Formatierung behalten

  Alt 17. Apr 2004, 22:18
Hi,

Das geht wahrscheinlich nur mit MSDN-Library durchsuchenEM_STREAMOUT .
Das sieht dann etwa so aus:

Delphi-Quellcode:
uses
  RichEdit;

type
  TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte;
    cb: Longint; var pcb: Longint): DWORD;
  stdcall;

  TEditStream = record
    dwCookie: Longint;
    dwError: Longint;
    pfnCallback: TEditStreamCallBack;
  end;


function EditStreamOutCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint;
  var pcb: Longint): DWORD; stdcall;
var
  theStream: TStream;
begin
  theStream := TStream(dwCookie);
  with theStream do
  begin
    if cb > 0 then
      pcb := Write(pbBuff^, cb);
    Result := 0;
  end;
end;

procedure GetRTFSelection(aRichEdit: TCustomRichEdit; intoStream: TStream);
var
  editstream: TEditStream;
begin
  with editstream do
  begin
    dwCookie := Longint(intoStream);
    dwError := 0;
    pfnCallback := EditStreamOutCallBack;
  end;
  aRichedit.Perform(EM_STREAMOUT, SF_RTF or SFF_SELECTION,
    Longint(@editstream));
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ms: TMemoryStream;
begin
  // 1. Text markieren
  RichEdit1.SelStart := 0; // von
  RichEdit1.SelLength := 200; // bis Zeichen ändern!
  ms := TMemoryStream.Create;
  try
    // 2. Rtf Formatierung der Markierung auslesen
    GetRTFSelection(RichEdit1, ms);
    // 3. Speichern
    ms.SaveToFile('c:\test.rtf');
  finally
    ms.Free;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
mandumoal

Registriert seit: 20. Feb 2003
124 Beiträge
 
Delphi 5 Professional
 
#3

Re: RTF Texte teilen aber Formatierung behalten

  Alt 17. Apr 2004, 23:41
Danke, so werd ich es mal probieren!
  Mit Zitat antworten Zitat
maxbecker

Registriert seit: 18. Apr 2005
1 Beiträge
 
#4

Re: RTF Texte teilen aber Formatierung behalten

  Alt 18. Apr 2005, 18:55
Hallo alle!

Leider wirft mir D4Pro zum Thema EM_STREAMOUT einen "undeclared identifier" an den Kopf und sagt das auch
zum SF_TEXT... mach ich was falsch oder <noob>muss ich jetzt upgraden?</noob>

SendMessage(wnd, EM_STREAMOUT, SF_TEXT, lParam(@editstream[1])); Danke schonmal im Voraus!

Max
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: RTF Texte teilen aber Formatierung behalten

  Alt 18. Apr 2005, 19:01
Hallo!

Die Unit RichEdit hast du eingebunden?
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:58 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