nowe linie SynMemo

0

Mam różne funkcje konwertujące tekst, a uruchamiam je tak:

<font color="blue"> var z,g:string; begin if length(Nota.Text) 0 then begin z := Nota.Text; case i of 1 : g := f1(z); 2 : g := f2(z); 3 : g := f3(z); // i tak dalej end; if z g then begin Nota.SelectAll; Nota.SelText := g; end;</span> end; end;

Nota to SynMemo, a f1, f2, f3... to funckje. Przykładowo:

<font color="blue">function f1(s: string): string; // Usuwanie "ogonków"
var
i:integer;
begin
result := s;
for i:=1 to Length(s) do
begin
case s[i] of
'ą' : Result[i] := 'a';
'ę' : Result[i] := 'e';
'ś' : Result[i] := 's';
'ć' : Result[i] := 'c';
'ń' : Result[i] := 'n';
'ż' : Result[i] := 'z';
'ź' : Result[i] := 'z';
'ó' : Result[i] := 'o';
'ł' : Result[i] := 'l';
'Ą' : Result[i] := 'A';
'Ę' : Result[i] := 'E';
'Ś' : Result[i] := 'S';
'Ć' : Result[i] := 'C';
'Ń' : Result[i] := 'N';
'Ż' : Result[i] := 'Z';
'Ź' : Result[i] := 'Z';
'Ó' : Result[i] := 'O';
'Ł' : Result[i] := 'L';
else
Result[i] := s[i];
end;
end;
end;</span>

I problem polega na tym, że zawsze, gdy w "Nota" na końcu jest kilka Enterów, to on je powiela.. co wykonanie funkcji pojawia się nowy Enter (ale tylko jak za pierwszym razem był). Co jest grane ? Jak to naprawić ?

0

sprawdź czy ostatni 2 znaki z textu w nocie to #13#10, jeśli tak to je deletnij i tyle

0

Co do tej drugiej funkcji - ja to zrobiłem tak :
[code]procedure TMainForm.CutTailExecute(Sender: TObject);
var
I, SelStart, SelEnd : Integer;
Pos : TPoint;
Options : TSynSearchOptions;
const
Tails = 'ąĄáÁâÂăĂäÄćĆçÇčČďĎđĐéÉęĘëËěĚíÍîÎĺĹľĽłŁńŃňŇóÓôÔőŐöÖŕŔřŘšŠśŚşŞţŢťŤůŮüÜúÚűŰżŻžŽźŹýÝ';
OffTail = 'aAaAaAaAaAcCcCcCdDdDeEeEeEeEiIiIlLlLlLnNnNoOoOoOoOrRrRsSsSsStTtTuUuUuUuUzZzZzZyY';
begin
Pos := SynEdit.CaretXY;
SelStart := SynEdit.SelStart;
SelEnd := SynEdit.SelEnd;
Options := [ssoReplace, ssoMatchCase];
if Length(SynEdit.SelText) > 0 then Include(Options, ssoSelectedOnly)
else Options := Options + [ssoReplaceAll, ssoEntireScope];
for I := 1 to 80 do
begin
SynEdit.SelStart := SelStart;
SynEdit.SelEnd := SelEnd;
SynEdit.SearchReplace(Tails[I], OffTail[I], Options);
end;
SynEdit.CaretXY := Pos;
end;[/code].

(kod konwertuje zaznaczony text jeżeli taki jest, lub cały jezeli nie ma zaznaczenia).
I problemow z enterami nie było :-) .
[cya]

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