PDA

View Full Version : Cho Hỏi Về Tiếng Việt Trong Đồ Hoạ Pascal



Le Bao Thang
22-08-2002, 06:12
Ai rành chỉ cho tôi với!

vikhoa
22-08-2002, 08:12
Bạn hỏi vậy sao mà trả lời được ?! Bạn phải nêu cụ thể câu hỏi hoặc tình huống cần giải quyết chứ.

Có thể dùng VietRes hoặc tự viết thư viện riêng cho mình.

vikhoa
22-08-2002, 08:15
:) Trong graphic của Pascal thì có thể viết riêng 1 thư viện để gõ phím và hiển thị tiếng Việt. Hồi lâu rồi trong PCWorld có đăng 1 bài hướng dẫn, gõ theo kiểu VNI, K có sửa lỗi và bổ sung thêm kiểu gõ Telex. Chỉ có điều không biết cái file đó nó lưu lạc phương nào rồi. hì hì.

Chắc phải nhờ Phoenix thôi, thấy Phoenix hay trả lời về Pascal lắm.

phoenix
22-08-2002, 14:31
cái ni thì tui ko biết rùi

phoenix
22-08-2002, 15:50
Mình vừa tìm được tài liệu này, bạn tham khảo xem có giúp đuợc gì ko:



Để nạp chữ Việt lên màn hình, ta phải chuẩn bị:
Bộ font chữ Việt (Font)
Nạp bộ chữ vào màn hình
Và chuẩn bị 2 việc bên cạnh
Tạo bộ gõ tiếng Việt
Tạo bộ phông chữ Việt & chương trình xử lý in tiếng Việt

Tuỳ theo từng vỉ màn hình mà ta có bộ phông chữ khác nhau vì kích thước khác nhau
Thí dụ: Màn hình VGA có ma trận chữ là 8x14.
Một bộ phông chữ gồm có 256 kí tự ASCII được khai báo như sau:

TYPE
CHU=ARRAY[1..14] OF BYTE; { ma tran 14x8}
KIEU_FONT14_8=ARRAY[0..255] OF CHU_14_8;
VAR
FONT_VIET1: KIEU_FONT14_8;

Mỗi một hàng điểm trong một ma trận chữ được biểu diễn bằng một byte.
Như vậy một bộ phông 14x8 gồm có 14x256 kí tự = 3584 bytes.
Tệp phông này được chứa trên đĩa.
Việc nạp bộ phông lên màn hình đã có một số dịch vụ của BIOS đảm nhiệm.
Nhiệm vụ của ta là lập trình kết nối PASCAL với BIOS.
Sau đây là đoạn chương trình nạp phông tiếng Việt lên màn hình

Uses Crt, Dos;
Type
BytePtr = ^Byte;
KieuFont = ARRAY[0..255, 1..16] OF byte;
Var
Regs: Registers;
Hei: Byte;
FF: File OF KieuFont;
FontEGA: KieuFont;
P: ^KieuFont;
Procedure LoadFont (HeiCh: byte; BufPtr: BytePtr);
begin
With Regs do
begin
ax:=$1100;
bh:=HeiCh;
bl:=0;
cx:=256;
dx:=0;
bp:=ofs(BufPtr^);
es:=seg(BufPtr^);
intr($10,Regs)
end
end;
Function CardEGA: Boolean;
begin
Regs.ah:=$12;
Regs.bl:=$10;
intr($10,Regs);
if Regs.bl < $10 then CardEGA:=True
else CardEGA:=False
end;
Procedure TBK1; External; { $L TBK1.OBJ}
{ Dùng lệnh ngoài DOS của Pascal: BINOBJ TBK1 TBK1 để biến tệp TBK1.FON thành TBK1.OBJ để nạp thẳng vào Pascal }
Procedure FONT_VIET;
begin
if CardEGA then
begin
{
Assign(FF, 'TBK1.FON');
Read(FF, FontEGA);
Close(FF);
{ }
P:= @TBK1; FontEGA:= P^; { }
LoadFont (16, BytePtr(@FontEGA))
end
else
begin
writeln;
writeln('There is not card EGA !')
end;
end;
Procedure Init;
begin
TextColor(Yellow);
GotoXY(10, 5);
write('Bộ Giáo dục và Đào tạo');
end;

begin
FONT_VIET;
ClrScr;
Init;
writeln;
writeln;
readln;
end.

Zero
23-08-2002, 13:38
Sao lại Text nhỉ không phaỉ câu hỏi là chữ việt trong đồ hoạ sao?nếu trong đồ hoạ thì bạn có thể viết unit xử lý các format font, đơn giản nhất là format fnt nếu cần unit bạn có thể liên lạc với mình bằng cách gửi thư của diễn đàn mình sẽ gửi cho bạn.

nguyencaophuong
27-08-2002, 12:42
Tui có cái unit Ladpas để dùng được tiếng Viểt trong TP (Kiếm được trong cái đĩa PCW ý mà) cần thì gửi mail cho tui tui gửi cho

nduylinh007
10-09-2002, 18:37
Theo tôi thi nên làm như thế này:
- Nạp font vào mảng như bạn Phoenix làm ở trên.
- Viết một thủ tục để vẽ một ký tự lên màn hình tại toạ độ x, y dựa vào thủ tục putpixel và ma trận điểm của ký tự (nếu là 1 thì vẽ, 0 thì bỏ qua)
- Viết thủ tục viết một chuổi ký tự tại bắt đầu vị trí x,y dựa vào thủ tục vẽ ký tự ở trên.

lovely
11-09-2002, 10:03
nguyen cao phuong oi gui cho tui di

real_time
08-10-2002, 09:32
dựa vào ma trân điểm và hình vuông bao quanh chữ cần viết thôi mà

cauberungxanh
12-10-2002, 09:54
Cái đó thì mình biết rồi. Bây giờ vấn đề đặt ra là làm sao lưu tiếng Việt vào file được ? Thí dụ khi nhập tên của người chạy chương trình đó, viết tiếng Việt ra thì được nhưng lưu vào thì làm sao ?

Zero
12-10-2002, 14:23
Ý bạn muốn nói là sao? mình không hiểu lắm nếu đã nhập được tên vào rồi thì lưu như một xâu bình thường thôi mà (nhưng chẳng lẽ bạn lại vướng ở chỗ đó?).

panda
12-10-2002, 22:32
Bạn muốn lưu lại tiếng việt thì dùng cách của Vietres
mỗi ký tự được biểu diễn bằng 1 mảng 16 byte - mỗi byte được đổi ra nhị phân sẽ có ký tự 16 dòng
vd 00000000 0
00001000 16
00011100 56
00100010 66
00111110 . . .
00100001 . . .
. . .
chẳng hạn có Procedurevietg(s:string) thì bạn từng ký tự s[i] ra lấy mã Asccii của nó rối tra trong bộ font của bạn tại vị trí 16*ord(s[i])(bộ font làm như kiểu Text - trong vietres có sẵn) nó sẽ là 1 mảng 16 byte mỗi byte đổi ra nhị phân sẽ được mang nhị phân cần viết sau đó là thấy điểm là 1 thì vẽ Pixel ra điểm là 0 thì khỏi viết ra (hay là viết background ) vậy là xong
Bạn cần thì mình sẽ gửi thủ tục này

real_time
13-10-2002, 08:36
panđa nói rất đúng

Zero
14-10-2002, 13:23
Zero có viết một unit load loại font XFN của bộ thư viện đồ hoạ GX2, nó có đủ cả đen trắng lẫn màu (max 127 màu) và đủ các kích cỡ, có các font trông rất đẹp --> đặc biệt là có công cụ tạo font Xfn từ True Type Font(ttf) với kích thước tuỳ chọn - bạn có thể make font xfn từ bất cứ font ttf nào bạn có chỉ với một dòng lệnh thôi. Unit này Zero viết cho Free Pascal tất nhiên cũng có thể dùng cho Turbo Pascal nhưng các font lớn thì không đủ bộ nhớ (font vntime cỡ 72 tới 300 KB) nhưng càc font nhỏ thì OK.

Quảng cáo mỏi tay quá, có ai muốn lấy không?

panda
14-10-2002, 17:27
Zero cho tớ xin luôn nha

cauberungxanh
15-10-2002, 16:24
Có có, cả zero lẫ panda free cho mình nhé.............

Zero
16-10-2002, 13:29
Zero sẽ gửi cho các bạn nhưng unit này Zero viết cho bộ đồ hoạ của Zero, Zero sẽ chuyển sang dạng tương thích vơí Graph của Turbo Pascal nhưng mà phải khởi động được chế độ 16 bit màu.

Tốt nhất các bạn nên lấy bộ GX2 (Zip khoảng 1MB) về dùng ở www.thefreecountry.com - Search - GX2 thì sẽ chuẩn hơn, bộ này được viết cho BP 7.0 - PM. Ngoải mã nguồn còn có hơn 60 font xfn khác nhau kèm theo rất đẹp.

real_time
16-10-2002, 16:32
hay đấy! có của chùa sao không dùng thử đi mọi người!

panda
18-10-2002, 12:14
sử dùng thư viện này bằng cách dùng hàm nạp font nạp font chỉ định vào bảng font nào rồi dùng hàm vietg viết chữ từ bảng font đó ra