Home » Tutorials » Sonstiges » rtf2html

rtf2html

Schritt 8

Jetzt sind wir auch schon fast am Ende angelangt und schließen daher zuerst nochmals alle Tags bzw. Paragraphen:

 // Zum Abschluss schließen wir die ganzen Tags nochmal
  for loop2:=0 to ReihenFolge.Count-1 do
    case Integer(Reihenfolge[loop2]) of
      1: if fett then s:=s+'</strong>';
      2: if kursiv then s:=s+'</em>';
      3: if us then s:=s+'</u>';
      4: s:=s+'</font>';
      6: s:=s+'</li>';
    end; // case

    // der letzte Paragraph wird geschlossen
    s:=s+'</p>';

Nur noch die Leerzeichen stellen ein Problem dar. Während in der RTF-Datei auch mehrere Leerzeichen nebeneinanderstehen können und dann auch korrekt angezeigt werden, ist dies in der HTM-Datei nicht der Fall. Daher ersetzen wir zuerst alle Leerzeichen durch ein Kommentar und ersetzen anschließend diese Kommentare mit dem ensrechenden HTML-Code.

 // jetzt Leerzeichen raus
  for loop:=100 downto 2 do
  begin
    s2:='';
    for loop2:=1 to loop do
      s2:=s2+' ';
    s := StringReplace(s,s2,'<!--'+IntToStr(loop)+'-->',
      [rfReplaceAll,rfIgnoreCase]);
  end;
  for loop:=100 downto 2 do
  begin
    s2:='';
    for loop2:=1 to loop do
      s2:=s2+' ';
    s:=StringReplace(s,'<!--'+IntToStr(loop)+'-->',s2,
      [rfReplaceAll,rfIgnoreCase]);
  end;

Zum Abschluss hängen wir noch den Code an, um die HTML-Datei zu vollenden, kopieren das ganze dann in „Dest“ und geben den für „Reihenfolge“ reservierten Speicher wieder frei:

 // jetzt sind wir fertig
  s:=s+'<p align="center"> Erstellt mit rtf2html -
   © 2001 by Johannes Tränkle - für
   Delphi-source.de</p></body></html>';

  Dest.Lines.Add(s);
  Reihenfolge.free;

  Source.Width:=630;
  Source.Visible:=true;