Problem z polskimi znakami

0

Cześć,
Mam prosty problem liczenia polskich znaków w stringu (chyba lepiej w widestringu). Odczytuje prawidłowo wartość TEdit.Text z polskimi znakami lecz niestety znaki z mojej tabeli stałych stają się krzakami. Jak to zrobić?

POLSKIE_LITERY: array [1..9] of WideString = (#196#132,'Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż');

Jak widać wpisanie bezpośrednio kodu UTF-8 także nie pomaga. Resztę kodu już mam wszystko działa poprawnie na klasycznych znakach ASCII przepuszczam pętlą każdą literę

function TMainForm.CountOccurences( const SubText: WideString ;const SearchText: WideString): Integer;
begin
  Result := Pos(SubText, SearchText);
  if Result > 0 then
    Result := (Length(SearchText) - Length(StringReplace(SearchText, SubText, '', [rfReplaceAll]))) div  Length(subtext);
end;
procedure TMainForm.PolskieLitery();
var
  PolskieLiteryIlosc,PolskieLiteryZliczono,i : Integer;
begin
  PolskieLiteryZliczono := 0;
  PolskieLiteryIlosc := Round((SizeOf(POLSKIE_LITERY))/SizeOf(POLSKIE_LITERY[1]));

  for i:=0 to PolskieLiteryIlosc do
  begin
    PolskieLiteryZliczono := PolskieLiteryZliczono + CountOccurences(POLSKIE_LITERY[i],mojString);
  end;

  Wynik := IntToStr(WielkieLiteryZliczono);

end;  

Z góry dzięki za odpowiedzi

2

Dlaczego używasz WideString, skoro zwykły natywny String wspiera UTF-8?

0

@furious programming: Faktycznie pomogło. Użyłem WideStringa bo z zwykłym Stringiem miałem problemy ale leżał on w innej części kodu. Dzięki za pomoc!

2

tak jak napisał @furious programming używaj stringa, tylko do obsługi ciągów wykorzytaj funkcje z przedrostkiem UTF8 (UTF8Length) z modułu LazUTF8

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