Einzelnen Beitrag anzeigen

Andreas L.
(Gast)

n/a Beiträge
 
#1

while-Anweisung > Endlos-Schleife, parsen einer RTF-Datei

  Alt 23. Okt 2006, 20:48
Hi,
ich bastel derzeit an einen RTF-Parser. In einer RTF-Datei werden in der ersten Zeile sämtliche, verwendete Schriftarten abgelegt und mit fortlaufenden Variablen verknüpft. Ein kompletter "Header" mit 3, seltsamerweise gleichen, Schriftarten sieht so aus:
Code:
{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 MS Sans-serif;}{\f1\fnil MS Sans Serif;}{\f2\fnil\fcharset0 MS Sans Serif;}}
Ich versuche jetzt mit folgender While-Anweisung die Schriftarten zu extrahieren und in eine StringList zu schreiben:

Delphi-Quellcode:
iFonts := 0;
 bFonts := True;
 while bFonts = True do
  begin
   if pos('{\f' + inttostr(iFonts) + '\fnil\', RTFCode.Strings[0]) > -1 then
    begin
     sTemp := copy(RTFCode.Strings[0], pos('{\f' + inttostr(iFonts) + '\fnil\', RTFCode.Strings[0]), Length(RTFCode.Strings[0]) - pos('{\f' + inttostr(iFonts) + '\fnil\', RTFCode.Strings[0]));
     sTemp := copy(sTemp, pos(' ', sTemp), pos(';', sTemp) - pos(' ', sTemp));
     Delete(sTemp, 1, 1);
     FontList.Add(sTemp);
     sTemp := '';
     Inc(iFonts);
    end
   else
    begin
     bFonts := False;
    end;
  end;
Leider läuft das Ding immer weiter. Hab also irgendwie eine Endlos-Scleife entwickelt

Wenn ich das Projekt mit einzelnen Anweisungen starte und auf der Variable iFonts beim 4ten durchlaufen der Anweisung mit der rechten Maustaste klicke und auf Fehlersuche > Auswerten/Ändern... klicke steht da eine 4 drin. Aber in der ersten Zeile des RTFs kann doch gar nicht {\f4\fnil\ gefunden werden. Ich finde diesen verfluchten Fehler einfach nicht. Kann mir jemand helfen?
  Mit Zitat antworten Zitat