Problem z polskimi znakami przy zapisie do rejestru

0

Po wykonaniu

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:

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.

0

Jakie masz kodowanie pliku źródłowego?

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:

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:

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

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

0

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

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