AGB  ·  Datenschutz  ·  Impressum  







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

Suche im Richedit

Ein Thema von theomega · begonnen am 6. Aug 2002 · letzter Beitrag vom 8. Aug 2002
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Suche im Richedit

  Alt 6. Aug 2002, 15:23
Hallo
ich habe eine kleine Suche in einem Ritchedit realisiert mit FindText.
Funzt auch problemlos, nur hätte ich gerne, das man z.b. auch nach
"[*]" suchen kann, so das ich dann einen Textteil markieren kann, der zwischen zwei Klammern steht. Also so eine Art Platzhalter.

Geht das irgendwie?

Danke

tHeOmEgA
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#2
  Alt 6. Aug 2002, 16:03
Hi theomega,

wenn du auch Fremdkomponenten einsetzen willst, dann kannst du bei Toory oder der DSP (diehe Links) eine Kompo suchen, die dir das Suchen mit "regular expressions" erlaubt. Sowas wird sicher zu finden sein.

Ansonsten kannst du das auch händisch machen (wenn auch nicht mit einem solchen Umfang, wie es dir regular expressions erlauben), indem du zuerst den nach dem Teil bis zum Sternchen suchst, dann diese Position als anfang des Textes interpretierst und dann das erste vorkomme des Teils hinter sem Sternchen suchst und, falls noch weitere Sterchen vorhanden sind, nach diesem Prinzip weitermachst.

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 6. Aug 2002, 16:05
es ist ja auch so, das das ganze keine Suchfunktion für den User werden soll, sondern nur intern für mein Programm, das bestimmte Einträge fett machen soll.
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#4
  Alt 6. Aug 2002, 18:14
Hi theomega,

das dürfte aber nach dem selben Prinzip funktionieren. Ich habe eine Funktionion geschrieben (TSearchTypes entspricht den TSearchTypes des RichEdit).

Code:
procedure BoldText(RichEdit: TRichEdit; Pattern: String; st: TSearchTypes);
type
  TStrArray = array of String;

  function ParseString(s: String; c: Char; Delimiters: Integer): TStrArray;
  var
    i, Count: Integer;
  begin
    // get count of delimiters and format array
    SetLength(Result, Delimiters + 1);
    // put string parts into array
    Count := 0;
    for i := 1 to Length(s) do
      if (s[i] = c) then begin
        Result[Count] := Copy(s, 1, i - 1);
        Delete(s, 1, i);
        Inc(Count);
      end;
    Result[Count] := s;
  end;

var
  StrArray: TStrArray;
  i, StartPos, EndPos, Delimiters: Integer;
begin
  Delimiters := 0;
  for i := 1 to Length(Pattern) do
    if (Pattern[i] = '*') then
      Inc(Delimiters);
  if (Delimiters < 1) then
    Exit;

  SetLength(StrArray, Delimiters + 1);
  StrArray := ParseString(Pattern , '*', Delimiters);
  EndPos := 0;

  while (True) do begin
    // find first part
    StartPos := RichEdit.FindText(StrArray[0], EndPos, Length(RichEdit.Text), st);
    if (StartPos = -1) then
      Exit;
    EndPos := StartPos;

    // found other parts
    for i := 1 to Delimiters do begin
      EndPos := RichEdit.FindText(StrArray[i], EndPos, Length(RichEdit.Text), st);
      if (EndPos = 1) then
        Exit;
    end;

    // set bold
    with RichEdit do begin
      SelStart := StartPos;
      SelLength := EndPos + Length(StrArray[Delimiters]) - StartPos;
      SelAttributes.Style := SelAttributes.Style + [fsBold];
      SelLength := 0;
    end;
  end;
end;
MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5
  Alt 6. Aug 2002, 23:14
funzt nicht: habe als text das gennommen:
Code:
===========================================================
Hinweise zur Installation von Delphi 5
===========================================================
und als pattern "H*e".
Jetzt müßte er doch Hinweise (oder zumindest (Hinwe)) finden, wenn ich stWholeWord als Option eigebe, aber er markiert gar nichts.
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#6
  Alt 7. Aug 2002, 10:50
Hi theomega,

stWholeWord ist leider mit dieser Suchfunktion nicht möglich, da er zuerst ein ganzes Wort "H" und dann ein ganzes Wort "e" sucht und diese Wörter inklusive dem, was dazwischen ist markiert. Du wirst sehen, es funktioniert, wenn du
Code:
===========================================================
H inweis e zur Installation von Delphi 5 
===========================================================
verwendest.

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#7
  Alt 7. Aug 2002, 11:04
könnte mir mal jemand einen Komponenten enpfehlen, mit dem das funzt?
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#8
  Alt 7. Aug 2002, 23:04
keiner eine Idee? Vorschlag?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#9
  Alt 8. Aug 2002, 09:59
Hallo theomega,

ich hab da auch mal eine Wildcard-Suche-Funktion geschrieben. Muss heute Abend mal nachschauen, ob ich die noch finde.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#10
  Alt 8. Aug 2002, 11:12
wäre nett.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz