Richedit porównanie tekstu z indeksami

0

Witam, czy ktoś mógłby mi pomóc jak porównać tekst richedit, zawierający indeksy górne i dolne, czy pasuje do wzorca będącego np w innym polu richedit; myslałem nad jakąs pętlą sprawdzającą znak po znaku ale nie umiem sobie z tym poradzić

Przeglądnąłem helpa, gotowce faqi i forum i google, nie znalazłem odpowiedzi
z góry dziękuje Paweł Cieśla

0

Znaczy jak on by miał działać? Ma być identyczny? Jeśli tak, to if RichEdit1.Text=RichEdit2.Text powinno chyba wystarczyć...

0

Działać ma tak:

If text z Richedit1 = tekst Z richedit2 then
    zrob ...
else
    zrob...

problem w tym, że tak ignoruje indeksy górne i dolne pokazuje ze jest ok, a ja potrzebuje to do wzorów chemicznych gdzie rozróżnianie indeksów jest konieczne.

indeksy wpisuje tak:

type
  TCharacterFormat = (CFM_Superscript, CFM_Subscript, CFM_Normal);

procedure RE_SetCharFormat(RichEdit: TRichEdit; CharacterFormat: TCharacterFormat);
var
  // The CHARFORMAT structure contains information about
  // character formatting in a rich edit control.
  Format: TCharFormat;
begin
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_OFFSET;
    // Character offset, in twips, from the baseline.
    // If the value of this member is positive,
    // the character is a superscript;
    // if it is negative, the character is a subscript.
    case CharacterFormat of
      CFM_Superscript: yOffset := 60;
      CFM_Subscript: yOffset := -60;
      CFM_Normal: yOffset := 0;
    end;
  end;
  // The EM_SETCHARFORMAT message sets character formatting in a rich edit control.
  // SCF_SELECTION: Applies the formatting to the current selection
  Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;

// Examples:
// Beispiele:

// Apply Superscript to the current selection
// Markierte Zeichen hoch stellen
procedure TForm1.bitbtn1Click(Sender: TObject);
begin
  RE_SetCharFormat(RichEdit1, CFM_Superscript);
end;

// Apply Subscript to the current selection
// Markierte Zeichen tief stellen
procedure TForm1.bitbtn2Click(Sender: TObject);
begin
  RE_SetCharFormat(RichEdit1, CFM_Subscript);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  RE_SetCharFormat(RichEdit1, CFM_Normal);
end;

Pozdrawiam, Paweł Cieśla

0

To chyba pozostaje pętelka porównująca znak po znaku, ale wraz z jego atrybutami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1