Problem z polskimi znakami przy zapisie do rejestru

Problem z polskimi znakami przy zapisie do rejestru
MJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Po wykonaniu

Kopiuj
Reg.WriteString('SupportHours','od poniedziałku do piątku, w godz. 10:00 - 18:00'); 

W rejestrze zapisuje się tekst ze dziwnymi znaczkami zamiast polskich znaków:

Kopiuj
od poniedziałku do piątku, w godz. 8:00 - 17:00

Kombinowałem już w opcjach projektu zmiany "Character set", ale nic to nie dało. To samo zmiana CharSet komponentu TEdit.

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Jakie masz kodowanie pliku źródłowego?

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12316
4

Powodem jest korzystanie z łańcuchów kodowanych w ANSI - jak prześledzisz sobie proces zapisu ciągu do wartości rejestru (wchodząc coraz niżej wgłąb metody WriteString) to zauważysz, że ostatecznie zapis tego łańcucha realizowany jest za pomocą funkcji RegSetValueExA z Windows API.


Zalecanym sposobem jest konwersja ciągu do kodowania systemowego:

Kopiuj
Reg.WriteString('SupportHours', UTF8ToWinCP('od poniedziałku do piątku, w godz. 10:00 - 18:00'));

W ten sposób będzie działać. Przy odczycie trzeba będzie z powrotem przekonwertować ciąg na UTF-8:

Kopiuj
WinCPToUTF8(Reg.ReadString('SupportHours'));

Obie funkcje znajdują się w module LazUTF8 z paczki LCL.

MJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Konwersja załatwiła sprawę. Dziękuję za pomoc. :) Temat do zamknięcia.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.