StringReplace

0

Jak zapewne wiecie w module StrUtils znajduje się funkcja StringReplace do zamieniania jakiejs litery na inną... Wszystko działa mi OK lecz gdy używam większej ilości tych funkcji (jadna pod druga by zamienialo mi wiecej liter) to program zamienia mi tylko niektóre litery... Czemu??

PS: Mam nadzieję, że zescie mnie zrozumieli ;]

Pozdrawiam, MaR

0

A nie masz czasem przypadniem takiej sytuacji:

(pseudokod):

zamień 'tata' na 'mama';
zamień 'a' na 'b';

wynikiem będzie 'mbmb'.

Poza tym można zamieniać całe stringi a nie tylko litery.

0

Pisze program do szyfrowania algorytmem ROT13 i chcę zeby np. a bylo zamieniane na n. Oto kodzik jakim sie posluguje:

s := a.Lines.Text;
S := StringReplace(S, 'a', 'n', [rfReplaceAll]);
S := StringReplace(S, 'b', 'o', [rfReplaceAll]);
S := StringReplace(S, 'c', 'p', [rfReplaceAll]);
S := StringReplace(S, 'd', 'q', [rfReplaceAll]);
S := StringReplace(S, 'e', 'r', [rfReplaceAll]);
...
b.Lines.Text:=s;

gdzie a to RichEdit z tekstem do zakodowania, a b to Ruch Edit z zakodowanym textem

Pozdrawiam, MaR

0

mader fakier, w taki sposób chcesz rot 13 robić? za dużo mleka się piło... tak to się robi:

function CoderRot13(s: string): string; // ROT - 13 Coder
var
  i: integer;
begin
  for i:=1 to Length(s) do
  begin
    if (UpCase(s[i]) >= 'A') and (UpCase(s[i]) <= 'M') then s[i] := Chr(Ord(s[i]) + 13)
    else if (UpCase(s[i]) >= 'N') and (UpCase(s[i]) <= 'Z') then s[i] := Chr(Ord(s[i]) - 13);
  end;
  Result := s;
end;

poza tym takim stringreplacem to można się pojarać

0

No ale nie tylko ROT13... ;] A poza tym znacie jakieś inne fuckcje podobne do SringReplace?

PS: Jest jakaś fajna strona z opisami algorytmów i ich kodami w Dlephi?
PS2: Nie pieklijcie się tak... mam 12 lat :P

Pozdrawiam, MaR

0
  1. pos+f1, copy+f1, delete+f1, insert+f1, ort!
  2. http://www.google.pl/search?q=%2B%22Algorytmy%22+%2B%22delphi%22&ie=UTF-8&oe=UTF-8&hl=pl&btnG=Szukaj+z+Google&lr=
  3. ja jak zaczynałem (w pascalu) miałem 6 lat ;-] a poza tym odkąd wynaleźli google wszystkie odpowiedzi są na miejscu
0

A tak jak dałem przykład, twoja funkcja była zła:
bo jak najpierw w kodzie zaminiesz "a" na "n" to dalej masz funckje namieniającą "n" na coś innego i w ten sposób "a" zmieni się nie na "n" :)

0

A tak jak dałem przykład, twoja funkcja była zła:
bo jak najpierw w kodzie zaminiesz "a" na "n" to dalej masz funckje namieniającą "n" na coś innego i w ten sposób "a" zmieni się nie na "n" :)

I jeszcze coś. Na przyszłość, jeśli chcesz pozamieniać w całym richEdicie, czy czymś takim to nie rób:

s:=a.Lines.Text;

tylko:

s:=a.Text;

0

I jeszcze coś. Na przyszłość, jeśli chcesz pozamieniać w całym richEdicie, czy czymś takim to nie rób:

s:=a.Lines.Text;

tylko:

s:=a.Text;

A niby czym to się różni w działaniu?

0

I jeszcze coś. Na przyszłość, jeśli chcesz pozamieniać w całym richEdicie, czy czymś takim to nie rób:

s:=a.Lines.Text;

tylko:

s:=a.Text;

A niby czym to się różni w działaniu?

Nie wiem. Ale wiem jedno. Kiedyś z LINES mi w ogóle nie działało. Tzn. nie chciało zamieniać w całej kontrolce, pomimo flaga: [rfReplaceAll]. W końcu ktoś na 4p poradził mi, żebym własnie zrobił bez użycia lines no i wszystko pięknie działało.

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