Drukarka igłowa - Konwersja znaków do Mazovii.

0

Witam
Temat może był już opisywany ale mam problem i zwracam się o pomoc.
Mam w komponencie Memo tekst i chcę go wydrukować w takiej postaci jak widnieje w komponencie.
Problem pojawia się bo wszystkie znaki specjalne mam jako znaki zapytania. Funkcja ord podaje mi tylko wartości byte i nie wiem jak pobrać kod znaku który składa się z więcej niż 1 bajtu - Może ktoś podpowie mi jak odczytać kod znaku jeśli funkcja ord zwraca ciągle tę samą wartość?????

0

może dasz kod

0

Nie bardzo wiem co kombinujesz. Ale jakie jest kodowanie tych znaków? Może trzeba je zdekodować na przykład na UTF8. Do tej pory nikt nie odpowiedział, ale może ktoś później doradzi Tobie coś lepszego i konkretniejszego.

EDIT: a właśnie Misiekd mnie ubiegł i poruszył podstawowy problem: brak kodu.

0

i wersja Delphi!~to jest istotne, czy mówimy o jakiejś starej, czy nowszej z domyślnym unikodem.

0

Witam.
Chodzi o unicode. Mam tablice znaków drukarki Oki (Mazovia) i wszystko działa jak korzystam ze standardowych znaków. Ale jak chce stworzyć tabele ze znaków "─├┬┼┐"
To przy zamianie przez funkcje ORD mam tylko wartość 226. Chciałbym odczytać całkowity kod a nie jeden bajt i nie wiem za bardzo jak:(
Jeśli chodzi o zdekodowanie na utf8 próbowałem i też nic dokładniej mówiąc mam w komponencie Memo czcionkę Courier New A wydruki są w trybie tekstowym na drukarce po to by wykorzystać szybkość drukarki igłowej.

0

...
for x:1 to 136 do
begin
wl:=ord(memo1.text[x]);
...

 

Wartość pobieram z tablicy znaków Mazovii - jeśli znałbym kody znaków │-2502,├ -251C ... i jeszcze dosłownie paru miałbym piękną tabelkę w podglądzie wydruku jak i na wydruku. ORD podaje mi tylko w postaci 1 bajtowej a te znaki mają 2 bajty.
Nie wiem może źle się do tego zabrałem - może ktoś korzystał ze znaków specjalnych drukując na drukarce igłowej.
Mam alternatywne rozwiązanie ale podgląd nie wygląda zbyt pięknie. Ustawiam czcionkę TERMINAL dla komponentu memo i już mam dużo łatwiej ale to rozwiązanie to ostateczność .

0

aale fajnie. nie podałeś w ogóle co to jest (jakiego typu) x ani wl.
a tabelkę masz na wikipedii, linka podałem.

0

x i wl to integer - ord zwraca jako byte. Kod mazovii podałeś mi i dokładnie z niego korzystam tylko że ja potrzebuje zamienić z unicode na mazovie a nie odwrotnie

0

Noo jeżeli znak o kodzie $C3 w Mazovii odpowiada znakowi o kodzie $251C w Unicode, to znak o kodzie $251C w Unicode odpowiada znakowi o kodzie $C3 w Mazovii.

Może zadaj konkretniejsze pytanie, np. „jak przekonwertować stringa znając wszystkie kody”.

Ale ty prawdopodobnie nie musisz operować Mazovią na ekranie, a wyłącznie na drukarce.
Wysłanie więc znaku #$C3 do drukarki powinno ci dać na papierze.

Nadal nie wiemy jak wysyłasz dane do drukarki, ani jakiej używasz wersji kompilatora.

jeśli znałbym kody znaków │-2502,├ -251C ... i jeszcze dosłownie paru

ty chyba naprawdę nie przejrzałeś tego artykułu na Wiki…

PS. Ja chcę ci pomóc, bo temat różnych kodowań znaków mnie szczególnie „kręci”. Ale, kurde, wszystkie potrzebne dane już dostałeś…

0

Pisze to w Lazarusie .
Program Działa Wydruki mam ale jako znaki rozdzielające wiersze wykorzystywałem " | _ " więc to nie wygląda źle ale mi się nie podoba.
A procedury drukujące proszę:
http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/components/printers/samples/rawmode/unitmain.pas?view=markup&root=lazarus&pathrev=10129
Ten banalny kod nie działa w delphi a w lazarus tak i dlatego wybrałem to środowisko do napisania tej aplikacji - i wszystkie komponenty miałem pod ręką do połączenia z bazą danych , a w Turbo Delphi musiałem kombinować.

Masz też rację z tym że potrzebuje mazovii do drukarki a nie do podglądu na ekranie ale tworząc podgląd chciałem przetworzyć tekst z podglądu i wysłać do drukarki.
Na ekranie tworzę tabele używając tych samych znaków co do wydruku na drukarce , wiec ramki które robię w Memo są z tych znaków specjalnych. Może to nie najlepszy pomysł ale działał i chciałem poprawić ten mankament dlatego chciałem przekształcić podgląd. Zresztą wydruk jest generowany na komponencie Memo i albo jest widoczny jak chce podgląd albo nie pokazuje się tylko wysyłam do drukarki.

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