Announcement

Collapse
No announcement yet.

2 RTF Dateien aneinanderhängen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2 RTF Dateien aneinanderhängen

    Ich such eine Methode mit der man 2 (oder mehrere) vollständige RichText Streams zu einem Stream verbinden kann. Optimal wäre es, wenn keine RichEdit Komponente benötigt wird. Weiss da jemand einen Rat?<BR>
    Peter

  • #2
    Eine Lösung mit RichEdit-Control könnte ungefähr so aussehen:<BR>
    <PRE>
    function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
    cb: Longint; var pcb: Longint): Longint; Stdcall;
    var
    theStream: TStream;
    dataAvail: LongInt;
    begin
    theStream := TStream(dwCookie);
    with theStream do begin
    dataAvail := Size - Position;
    Result := 0;
    if dataAvail <= cb then begin
    pcb := Read(pbBuff^, dataAvail);
    if pcb <> dataAvail then
    result := E_FAIL;
    end
    else begin
    pcb := Read(pbBuff^, cb);
    if pcb <> cb then
    result := E_FAIL;
    end;
    end;
    end;

    Procedure PutRTFSelection( aRichEdit: TRichEdit; sourceStream: TStream );
    Var
    editstream: TEditStream;
    Begin
    With editstream Do Begin
    dwCookie:= Longint(sourceStream);
    dwError:= 0;
    pfnCallback:= EditStreamInCallBack;
    end;
    aRichedit.Perform( EM_STREAMIN, SF_RTF or SFF_SELECTION,longint(@editstream));
    End;
    </PRE>
    <BR>
    Eine Lösung unter Verzicht auf eine TRichEdit-Komponente habe ich bisher nicht gefunden. <BR>
    Pete

    Comment


    • #3
      Es sollte eigentlich genuegen die aeussere rtf-Tag-Klammer zu entfernen, die Teile zu konkatenieren und dann wieder eine rtf-Tag-Klammer aussen rum zu setzen. Zumindest hat eben ein Experiment mit Word 97 geklappt. Das einzige Problem duerften die moeglichen Variationen der Klammerung sein

      Comment


      • #4
        Damit bekäme der neue RTF sowohl den "Vorspann" (\rtf1\ansi\...)des alten als auch den des anzuhängen RTF-Files. So einfach geht das also nicht. Man müsste also wissen, wo der Vorspann genau endet. Ich habe aber leider nirgends eine Spezifikation zu RTF gefunden

        Comment


        • #5
          Wo ist das Problem? Es muss nur das "\rtf1" entfernt werden. Da RTF wie HTML eine kontextfreie Sprache ist (ineinandergeschachtelte geklammerte Bloecke), koennen also die beiden Bloecke konkateniert und mit einer neuen rtf1-Klammer versehen werden. Die Klammern geben ja nur den Gueltigkeitsbereich der darinliegenden Tags an. Einen "Vorspann" gibt es nicht. Es ist nur die rtf-Klammer vorgeschrieben

          Comment


          • #6
            Würden doppelte äußere Klammer funktionieren ? Also einfach beide zusammenfügen am Anfang ein "\rtf1" und am Ende die Klammer abschließen.

            Gruß Hage

            Comment


            • #7
              Moin Zusammen,<br>
              <br>
              bei Dateiformaten würde ich immer www.wotsit.org vorschlagen.<br>
              Da gibt's sehr viele Beschreibungen (u.a. auch RTF).<br>
              <br>
              Ciao<br>
              Chri

              Comment

              Working...
              X