AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text in RichEdit automatisch formatieren

Ein Thema von oki · begonnen am 4. Jun 2007 · letzter Beitrag vom 19. Jun 2007
 
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Text in RichEdit automatisch formatieren

  Alt 18. Jun 2007, 14:41
Hi Leute,

ich hab jetzt mal folgendes getestet:

Text im RichEdit mit FindText durchsuchen, gesuchten String selektieren und Textattribute setzen. Dann weitersuchen. Das alles bis zum ende des Textes. Das ich das für mehrere Suchstrings mache ist jetzt erst mal nicht weiter von Interesse.
Nun klappt das auch erst mal ordentlich, jedoch die Geschwindigkeit lässt mächtig zu wünschen übrig. Die Logdatei (reiner Text) ist ca. 600K groß.

Meine entsprechenden Methoden zum Finden und Formatieren sehen so aus:
Delphi-Quellcode:
procedure TFormatTypeObj.FormatLogText(RichEdit : TRichEdit);
var TextPos, StartPos, FStrLength : Integer;
begin
  if not Assigned(RichEdit) then Exit;
  if RichEdit.Text = 'then Exit;
  FStrLength := Length(FFormatString);
  StartPos := 0;
  while not (RichEdit.FindText(FFormatString, StartPos, Length(RichEdit.Text) - StartPos, []) = -1) do begin
    TextPos := RichEdit.FindText(FFormatString, StartPos, Length(RichEdit.Text) - StartPos, []);
    Richedit.SelStart := TextPos;
    RichEdit.SelLength := FStrLength;
    FormatText(RichEdit.SelAttributes);
    StartPos := TextPos + FStrLength;
  end;
end;

procedure TFormatTypeObj.FormatText(SelAttributes: TTextAttributes);
begin
  if not assigned(SelAttributes) then Exit;
  SelAttributes.Color := FColor;
  SelAttributes.Charset := FCharSet;
  SelAttributes.Pitch := FPitch;
  SelAttributes.Name := FName;
  SelAttributes.Size := FSize;
  SelAttributes.Style := FStyle;
  SelAttributes.Height := FHeight;
end;
Das ich die Formatierung in eine Klasse ausgelagert habe sei hier noch erwähnt. So kann ich mehrere Strings für unterschiedliche Formatierungen mit ihren Format-Attributen definieren, die jede durch ein eigenes Object repräsentiert werden. Alle diese Objecte werden in einer Liste gehalten. Der Liste wird der zu formatierende Text mittels des haltenden RichEdit übergeben. Diese ruft wiederum die Methode FormatLogText auf und übergibt das RichEdit.

wie gesagt, klappt soweit, aber dauert ewig.

Kann hier jemand einen schnelleren Weg anbieten?

Gruß oki
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz