Polskie znaki w Lazarus

0

Witajcie wszyscy. Mam dość dziwny problem z Lazarusem.

Na formie mam przyciski, labele z polskimi znakami typu: "ł, ą, ó, ś...":

title

Jak pracuję nad projektem to jest OK. Bywa tak, że jak zamknę projekt i otworzę go ponownie to pojawiają się krzaczki:

title

Już mnie to denerwuje :/

We właściwościach czcionki dla lebli, przycisków itd.. mam Charset ustawiony na: DEFAULT_CHARSET. Po kompilacji projektu mam ten sam problem.

Pliki źródłowe (pas, lfm itd... mam UTF8).

O co chodzi? ;)

Dzięki za pomoc.

0

Czy Lazarus ma opcję dodawania BOM do plików w UTF-8?

Bo wygląda że plik jest w UTF-8 a środowisko otwiera go tak jakby to nie było UTF-8.

0

Przekonwertowałem wszystkie pliki na UTF8 BOM zobaczymy po testach.

1

Lazarus nie używa domyślnie markera BOM do plików źródłowych, ani do plików .pas, ani do plików .lfm. Jeżeli nie wiesz jak kodowane są pliki źródłowe to możesz to łatwo sprawdzić - otwórz plik w środowisku, a następnie kliknij PPM w edytorze i przejdź do poniższej opcji:

popup.png

Domyślnie jest UTF-8 - sprawdź co u Ciebie pokazuje w pliku .lfm tego formularza.

0

U mnie wszystko było po UTF-8 - te krzaczki.

Z plikiem od formy *lfm. coś dzieje. Zapisuje normalnie z polskimi znakami, otwieram projekt z krzaczkami i takie krzaczki są w pliku od formy.

0

Otwórz sobie ten plik .lfm np. w Notepad++, przekonwertuj zawartość na gołe UTF-8, a następnie ręcznie popraw te krzaki. Wtedy już Lazarus powinien prawidłowo je odczytywać.

0

Chodziło mi o to, by zapisać w UTF-8 with BOM. W ten sposób przy otwieraniu edytor powinien prawidłowo rozpoznać kodowanie.

0

@Slowik86: możesz udostępnić źródła tego projektu, tak aby można było sprawdzić u siebie? Albo odtworzyć ten błąd w nowym, testowym projekcie?

0

Witam serdecznie. Dziękuję za szybką odpowiedź. JUż chyba wszystko robiłem: zmieniałem czcionkę na Default, charset na Default, same plik źródłowe na UTF8 z BOM i bez. Raz projekt zapisuje jest OK, a raz otwieram i dalej to samo - krzaczki. Zauważyłem, że krzaczki najczęściej pojawiają się po zakończeniu projektu i wyłączeniu komputera. Kiedy włącze komputer i odpalę projekt to one już na mnie czekają ://

Przykład programu / źródeł: http://www112.zippyshare.com/v/OvNofU4L/file.html

Dziękuję za pomoc, bo już mnie szlak trafia ;) Używam najnowszego Lazarusa.

Przemek

EDIT: Bawiłem się w Notepad++ i tego typu krzaczki wychodzą jak przekonwertuję z UTF8 BOM do ANSI.

2

Otwórz plik .lfm w Notepad++ (tylko nie w środowisku) i zamień wszystkie popsute ciągi na prawidłowe. Tyle wystarczy - sprawdziłem. Po zmianie wszystkich Caption i zapisaniu zmian, Lazarus nie pozmienia znaków diakrytyzowanych na krzaki.

Druga sprawa - LCL natywnie obsługuje UTF-8, tak więc aby w kontrolkach wyświetlić ruskie znaczki, wystarczy je po prostu wkleić do pola w oknie inspektora obiektów:

oi.png

A Ty niepotrzebnie zmieniłeś charsety labelków:

Font.CharSet = RUSSIAN_CHARSET

Być może to wpłynęło na zawartość pliku .lfm, ale nie chce mi się już drążyć tego tematu. Popraw te ciągi i nie zmieniaj charsetów - niech pozostaną domyślne.

Poza tym, od niedawna dostępna jest nowa wersja środowiska (Lazarus 1.6.4), a także nowa wersja kompilatora (FPC 3.0.2), więc dokonaj aktualizacji, jeśli używasz starszych wersji.

0

Problem rozwiązany. Zrobiłem tak, że utworzyłem nowy projekt z pustymi plikami typu "pas, lfm". Następnie skopiowałem zawartość - treść swoich plików do nich, zapisałem pod edytorem w Lazarusie i voila kodowanie wszystkich jest w porządku pod UTF-8 i wszystko działa :)

Jeszcze raz serdecznie dziękuję za pomoc :)

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