Skocz do zawartości

[Free Pascal] Sortowanie wyrazów z polskimi znakami


adns

Polecane posty

Witam.

 

Próbuje posortować tekst zawierający polskie znaki, ale ponieważ polskie litery są na końcu alfabetu w kodach ASCII, przez co są posortowane w złej kolejność względem normalnych znaków.

Ktoś wie jak sobie z tym poradzić? Jak posortować tekst zawierający polskie litery?

Link do komentarza
Udostępnij na innych stronach

Żeby właściwie posortować wyrazy z literami polskiego alfabetu chyba najprościej będzie utworzyć zmienna tekstową zawierając ciąg znaków do posortowania i wykorzystując funkcję Pos, która wskazuje nie tylko pozycję znaku w Stringu ale i ciągu znaków w przeglądanym stringu

 
const cZnaki = '0123456789aAaĄbBcCćĆ........zŻźŹżŻ';
var 
  i,                   {pętla przeglądająca string}
  in: Integer; {pozycja znaku w alfabecie}
  Wyraz: String;        {wyraz przeglądany}
begin
  {petla przegladająca wyrazy}
       for i:= 1 to Length(Wyraz) do   {petla przeglądająca litery w wyrazie}
       begin
             in:= Pos( Wyraz[i], cZnaki );     {uzyskanie pozycji danego znaku}
             ...
       end;
OR+^Ź^\"Ąh'#9ćśbćvĘ+ś*\"Z\"zŚźn~r8óz,'śk,2r(&ó,śĘgĄś=j[zsyźŹ-Ęjk*ZvKŁjF'jW function PobierzCyfryiKropki( const OldStr: String): String;
const cCyfKrop = '0123456789.';
var NewStr: String;
   i, dL, dC: Integer;
   Odstep: Integer;
begin
  dl:= Length(OldStr);
  NewStr:= '';
  Odstep:= 0;
  for i:= 1 to dl do
  begin
     if Pos(OldStr[i],cCyfKrop)>0 then
     begin
        Odstep:= 0;
        { if OldStr[i]<>'.' then }
        NewStr:= NewStr + OldStr[i];
     end else begin
        Inc(Odstep);
        if Odstep=1 then NewStr:= NewStr + #13;   { nowa liczba w nowej lini }
     end;
  end;
  Result:= NewStr;
end;

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...