DrawText problem z kodowaniem.

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 )

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.

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

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.

0

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

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

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

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

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?

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.

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