En fejl i TRichedit?
Jeg TROR at jeg har fundet en fejl i TRichedit, hvor usandsynligt det end lyder.*** RTF = Rich Text Format. Det er det format som RichEdit bruger til at farve tekst mm.
Jeg generer en tekst i RTF og sender den ind i Richedit'en således:
Stream := TStringStream.Create('');
RTF.SaveToStream(Stream);
Stream.Position := 0;
Lines.LoadFromStream(Stream);
Programmet er en syntax-highlighter som konverterer en fil's tekst til RTF når man åbner den. Problemet er:
Hvis jeg starter programmet og åbner en meget stor fil (ca. 1500 linier), viser min Richedit bare RTF teksten i stedet for at lave den om til farvet tekst. Prøver jeg så at åbne filen igen, eller en hvilken som helst anden fil, går det som det skal.
Starter jeg med at åbne en lille fil går det også godt, og åbner jeg så den store fil, går det også godt.
Dvs. hvis den første fil jeg åbner er en stor fil, går det galt. Det gælder dog kun for den første fil jeg åbner, alle andre går det godt med uanset størrelse.
Jeg har prøvet at ændre koden til:
Stream := TStringStream.Create('');
RTF.SaveToStream(Stream);
Stream.Position := 0;
Lines.LoadFromStream(Stream);
Stream.Position := 0;
Lines.LoadFromStream(Stream);
Det fik det til at virke, men det tager dobbelt så lang tid og da det er meget essentielt for mit program at køre hurtigt vil jeg gerne have en bedre løsning.
Jeg har prøvet at "narre" den til at tro at jeg allerede har åbnet et fil, men på mystisk vis nægter den at tro åbne store filer på rigtig manér før brugeren selv har åbnet et en fil.
Jeg har haft det her problem meget længe nu, så jeg håber at der er nogen her der har en idé til hvordan man får den til at stoppe.
Tak.
