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?