Polskie znaki w Lazarus

Polskie znaki w Lazarus
S8
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:17
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.

edytowany 4x, ostatnio: Slowik86
HI
Porada nic nie wnosząca, więc napiszę komentarz: Lazarus to wybór z przymusu czy sam zdecydowałeś się na to środowisko?
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 6 godzin
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.

edytowany 1x, ostatnio: Azarien
S8
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:17
0

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

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
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.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 2x, ostatnio: flowCRANE
S8
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:17
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.

edytowany 1x, ostatnio: Slowik86
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
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ć.


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 6 godzin
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.

flowCRANE
Trudno tak spekulować - przydało by się móc ten projekt otworzyć u siebie i sprawdzić.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
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?


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
S8
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:17
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.

edytowany 3x, ostatnio: Slowik86
Azarien
nie „szlak” tylko szlag.
S8
Żeby tak program poprawiał to jeszcze rozumiem ;)
flowCRANE
Wrzuć źródła do załączników tego posta.
flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 5 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
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:

Kopiuj
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.

  • oi.png (18 KB) - ściągnięć: 156

Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
edytowany 6x, ostatnio: flowCRANE
S8
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 8 lat
  • Postów:17
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 :)

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.