adns Posted May 15, 2011 Report Share Posted May 15, 2011 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 to comment Share on other sites More sharing options...
Integer Posted May 15, 2011 Report Share Posted May 15, 2011 Ż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 to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.