DrawText problem z kodowaniem.

DrawText problem z kodowaniem.
N0
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:4
0

Witam w delphi probuje wyswietlic tekst za pomoca drawtext:

DrawText(btmp.Canvas.Handle, Pchar( 'Cilvēki ir mājās'), Length(pages[CurrentPage].Layers[J].text), Rec, DT_END_ELLIPSIS or DT_NOPREFIX or DT_WORDBREAK or DT_EDITCONTROL);

jednak nie dostaje pełnego napisu ( napis jest bez specjalnych znakow ). Probowalem uzywac funkcji drawtextW, kodowac utf8 i dekodować ale nic nie dało. Wie ktoś wtf? ( napis jest w języku łotewskim )

edytowany 2x, ostatnio: ni0bi
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Gorlice
0

To może zależeć od kompilatora spróbuj takie wersje w starszych wersjach może DrawTextW i PWideChar('Cilvēki ir mājās') w nowszych DrawText i PWideChar('Cilvēki ir mājās'). Jak nie pomoże napisz dokładnie jakiego kompilatora używasz.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
0

a z jakiej racji uważasz, że powinien być cały jeśli mówisz systemowi, że ma obciąć to co się nie mieści w przekazanym Rec i na końcu walnąć trzy kropki - DT_END_ELLIPSIS


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
N0
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:4
0

@abrakadeber
NIe, zle mnie zrozumiales, on tekstu nie obcina, wycina tylko znaki specjalne, a przy pewnych konfiguracjach wpisywal znaki "?" zamiast specjalnych takich jak "ā"

@kAzek
Niestety nie działa w ten sposób, moj kompilator to free pascal, srodowisko Lazarus IDE.

Dzieki za odpowiedzi.

edytowany 1x, ostatnio: ni0bi
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Gorlice
0

Tak u mnie działa. Oczywiście dla testu ja pisze po formie:

Kopiuj
var
  r: TRect;
begin
   r:= Form1.ClientRect;
   DrawTextW(Form1.Canvas.Handle, PWideChar(UTF8Decode('Cilvēki ir mājās')), -1, r, DT_CENTER);
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 1x, ostatnio: kAzek
N0
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:4
0

@kAzek
Dziwne, ze u mnie to nie trybi. W czym to kompilujesz?

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:2 minuty
  • Lokalizacja:Gorlice
0

Kompilator: Free Pascal 2.6.0 IDE: Lazarus 0.9.30.4
Sprawdziłem w trybie Free Pascal {$mode objfpc} i Delphi {$mode delphi} w obydwu ładnie działa:
user image


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
Patryk27
Jest już Lazarus 1.0.4, nie zaktualizujesz? ;)
KA
Wiem ale rzadko używam wiec jakoś nie zaktualizowałem.
abrakadaber
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • Postów:6610
0

zacznijmy od tego @ni0bi co to jest btmp bo podejrzewam, że bitmapa, a jak tak to jaką jej czcionkę ustawiasz btmp.Canvas.Font.Name i czy masz świadomość, że ta czcionka to musi być taka, która ma znaki unicode?


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
N0
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
  • Postów:4
0

Dziekuje za pomoc. Rozwiązanie okazało się banalne. Przez przypadek wcześniej zapisałem Unit1 jako plik ANSI. Oczywiscie rozwiazanie polegalo na otwarciu go w notatniku i zapisanie jako UTF-8. Dzieki bardzo.

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.