• Thứ Tư, 17/12/2003 10:46 (GMT+7)

    Trả lời thư bạn đọc


    Trong số này TS. Nguyễn Văn Hiệp giải đáp thắc mắc của các bạn: Phuoc Thuong - FPT mail; Tran Thanh Le [tranthanhle@hotmail .com]; Pham Thanh Nha; TempestPifu; Nguyen Dinh Thang; TranHung; Hai Cang [nt779@ email.com]; Phong Ke Hoach Dau Tu; Vu Tam Tai; Thuy Tien; Dang vinh Quyet; Cao Huy; Le Duy; Vo Hai Binh; Truong Thanh Duong; Truong Kinh Nhan; Do Hong Phuc [dohongphucag@hotmail.com]; Nguyen Hoa Anh [hoaanhng@gmx.net]; Nguyen Khanh Toan [nktvnvn@yahoo.com]; NguyenVu; Võ Chí Trung [vochitrung@hcm.vnn.vn]; Deadeyes; Huynh Le Tan Tuyen [hltt@saigonnet.vn]; Tambh; Le Duc Hung; Binh.

    Multimedia
    Hỏi: Cách thay đổi tiếng 1 nhạc cụ trong file MIDI và lưu lại những thay đổi đó (sử dụng phần mềm nào, thao tác cụ thể - nếu được).
    Đáp: File MIDI chỉ chứa thông tin về các nốt nhạc và các nhạc cụ được dùng để chơi các nốt chứ không chứa âm thanh cụ thể của nhạc cụ. Các phần mềm soạn thảo file MIDI cho phép bạn soạn các nốt nhạc và khai báo loại nhạc cụ nào chơi nốt nào. Âm thanh cụ thể của nốt nhạc do 1 nhạc cụ chơi được tổng hợp bởi sound driver và sound card, do đó không dễ gì thay đổi (nếu không thay đổi sound card khác).

    Hỏi: Xin hỏi địa chỉ download các logo dùng cho máy cắt decal. Có phải chỉ có logo làm từ CorelDraw mới có thể dùng cho máy cắt decal, và chỉ cắt được các logo có đường viền?
    Đáp: Mỗi công ty, đơn vị có logo riêng và chứa những đặc thù riêng, do đó khi có yêu cầu, bạn cần phải vẽ từ đầu chứ khó lòng có sẵn. Hầu hết các đĩa CD chứa bản gốc của trình xử lý đồ họa (như CorelDraw) đều có chứa nhiều thư mục ảnh với nhiều chủng loại khác nhau. Đĩa CD này cũng có chứa nhiều font chữ mà mỗi ký tự là 1 icon, logo phổ biến nào đó. Đây là những nguồn mà bạn có thể tham khảo, sử dụng lại một phần nếu có yêu cầu. Sau khi có kết quả vẽ (logo, văn bản...) bạn có thể in ra máy in hay xuất ra máy cắt decal tùy yêu cầu với điều kiện đã cài thành công driver quản lý thiết bị tương ứng. Trong số các trình xử lý đồ họa, hiện CorelDraw được dùng phổ biến nhất vì tính năng và sức mạnh của nó.

    Hỏi: Khi đang chơi game, chụp ảnh màn hình thì ảnh không hiện lên hoặc không nguyên vẹn và máy bị chậm hẳn đi. Nhưng khi xem ảnh được save lại trong máy thì không bị gì cả. Máy dùng card Riva TNT 2.
    Đáp: Các trình “screen capture” thường chỉ có thể “capture” hình ảnh tĩnh tại thời điểm chụp, nếu hình ảnh cần chụp đang thay đổi động tại thời điểm chụp (phim, ảnh động của các trò chơi...) thì kết quả sẽ không biết trước và thường không theo mong muốn.

    Hỏi: Làm thế nào để kèm 1 file sound vào 1 file Flash (để khi Play vừa có phim, vừa có tiếng)?
    Đáp: Nếu bạn còn giữ file “Flash Document *.fla” gốc của file Flash *.swf thì việc thêm âm thanh vào file Flash rất dễ dàng: chạy trình Macromedia Flash, mở file *.fla gốc, tạo 1 layer mới chứa sound (menu Insert.Layer), dùng lệnh “File.Import from Library” để “import” file sound cần thiết vào document hiện hành, chọn lại layer vừa tạo, hiển thị cửa sổ thuộc tính của nó rồi khai báo tên file sound vào combobox “Sound”, khai báo chế độ xử lý vào listbox “Sync”... Cuối cùng dùng lệnh File.Export Movie để “export” kết quả ra file Flash *.swf. Bạn cũng nên lưu kết quả lại file document *.fla để sau này dễ dàng hiệu chỉnh tiếp.

    Ứng dụng văn phòng
    Hỏi: Excel có thể biểu diễn số thập phân vô hạn tuần hoàn và phân số (dạng a/b) được không? Có thể đổi số thập phân vô hạn tuần hoàn ra phân số được không? Nếu được xin cho biết cách đổi.
    Đáp: Trong Excel, bạn chỉ có thể miêu tả phân số bằng cách nhập phân số đó vào 1 cell nào đó dưới dạng công thức “=a/b”. Tùy theo chế độ hiển thị mà cell đó được hiển thị như thế nào (kết quả gần đúng hay chính công thức đó). Tóm lại, bạn chỉ có thể miêu tả số thập phân vô hạn tuần hoàn trong Excel dưới dạng phân số tạo ra số đó và như vậy không cần chuyển đổi qua lại giữa 2 dạng này. Lưu ý là kết quả hiển thị lên màn hình chỉ là 1 số thực gần đúng chứ không phải dạng vô hạn tuần hoàn, tuy nhiên bạn đừng bận tâm với giá trị hiển thị vì nếu bạn dùng cell đó trong 1 công thức ở cell khác, Excel sẽ dùng phân số chứ không dùng giá trị được hiển thị.

    Hỏi: Chương trình Office XP có tương thích với HĐH WinME không hay chỉ tương thích với Windows XP. Máy tôi dùng WinME, cài Office XP dùng bình thường nhưng trong Word XP, click vào nút Open, chọn 1 tài liệu *.doc bất kỳ, nhấn phím phải chuột thì mục “Send to” bị mờ  không thực hiện được.
    Đáp: Trình OfficeXP hoàn toàn tương thích với HĐH WinME, còn hiện tượng mục “Send To” bị mờ là do có lỗi trong HĐH. Cách khắc phục lỗi đơn giản nhất là cài lại WinME.

    Font - tiếng việt
    Hỏi: Có cách nào sử dụng font Unicode trong FoxPro 2.6 (for Windows)
    Đáp: Không. FoxPro 2.6 đã quá cũ nên không hỗ trợ mã Unicode. Bạn nên dùng Access, SQL Server hay Oracle để quản lý database chứa tiếng Việt Unicode.

    Hỏi: Nghe nói trường ĐHBK có tạo một bộ font Unicode, xin hỏi có thể download từ trang Web của trường được không?
    Đáp: Tôi có soạn khoảng 180 font chữ tiếng Việt tổng quát hóa khác nhau để chạy được với bất kỳ mã tiếng Việt nào kể cả Unicode dựng sẵn và tổ hợp. Do dung lượng tổng cộng khá lớn (khoảng 40MB) nên download chúng qua mạng không hiệu quả, tốn nhiều thời gian và tiền bạc. Nếu bạn cần hãy liên hệ với tòa soạn PC World để copy đĩa CD chứa chúng.

    Hỏi: Tôi muốn đưa kiểu chữ tự tạo vào font chữ máy tính để sử dụng, tôi phải làm sao?
    Đáp: Nếu bạn đã vẽ các ký tự có cùng kiểu chữ trên giấy thì trước hết bạn phải “scan” từng ký tự vào máy tính rồi dùng 1 trình xử lý đồ họa nào đó (thí dụ CorelDraw) chuyển sang dạng outline, export ra file font ứng với 1 mã ký tự mong muốn. Lặp lại qui trình trên cho từng ký tự đã vẽ trên giấy, bạn sẽ có file font chứa các ký tự mong muốn. Tuy nhiên qui trình này khó lòng tạo ra được file font có chất lượng và hiệu quả. Để tạo ra file font chất lượng, dễ dàng, nhanh chóng và hiệu quả hơn, bạn nên dùng 1 trình soạn font nào đó (thí dụ như Fontographer), rồi vẽ các ký tự có cùng 1 kiểu chữ trực tiếp bởi chương trình này (thay vì phải vẽ trên giấy rồi scan vào máy). Lưu ý rằng các trình soạn font đang lưu hành ngoài thị trường không thể nào tạo được font có chất lượng cao như các font TrueType đi kèm HĐH Windows như Tahoma, Microsoft Sans Serif, Times New Roman, đặc biệt là ở những co chữ nhỏ và rất nhỏ.

    Hỏi: Xin hỏi làm cách nào để nhận biết được file font nào hỗ trợ bảng mã tiếng Việt nào (Unicode, VNI-windows, TCVN3, VIQR, VISCII)?
    Đáp: Có nhiều cách khác nhau:\
    Dựa vào qui ước đặt tên font của các đơn vị tạo font tiếng Việt, thí dụ font VNI có tiếp đầu ngữ “VNI-”, font ĐHBK 1 byte có tiếp đầu ngữ “Vn”, font ĐHBK 2 byte có tiếp đầu ngữ “Vn” và tiếp vĩ ngữ “2”, font ABC có tiếp đầu ngữ “.Vn”... Tuy nhiên đây chỉ là qui ước, chứ không phải qui định chuẩn hóa nên có thể có ngoại lệ.
    • Dựa vào nội dung cụ thể của file font. Trước hết bạn hãy nắm vững từng bảng mã để biết cách bố trí các ký tự của từng bảng mã rồi dùng trình soạn font (như FontoGrapher) hay trình hiển thị font (như FontViewer của Windows) mở file font cần khảo sát rồi đối chiếu cách bố trí các ký tự của font này xem trùng với bảng mã nào. Đây là cách chính quy và triệt để nhất.
    • Dựa vào thử nghiệm. Bạn hãy tạo 1 file văn bản chứa n hàng văn bản tiếng Việt (n: số bảng mã tiếng Việt), mỗi hàng nhập tên nhận dạng bảng mã và 1 chuỗi từ tiếng Việt (nhập theo bảng mã đó). Mỗi lần muốn kiểm tra 1 file font nào đó xem hỗ trợ bảng mã nào, bạn “add” font cần kiểm tra vào Windows, mở file văn bản trên, “select all” nội dung của file rồi thiết lập font chữ cần kiểm tra, nếu hàng nào hiển thị đúng văn bản tiếng Việt thì font chữ thuộc bảng mã đó.

    Hỏi: Công ty chúng tôi muốn lưu một số văn bản tiếng Việt bằng cách scan lại. Khi scan để ở chế độ ECR (Editable Text) thì không thể nhìn được tiếng Việt. Xin chỉ cho giải pháp.
    Đáp: Các trình nhận dạng chữ viết của nước ngoài (thường cho kèm theo các máy scanner) không có khả năng nhận dạng văn bản tiếng Việt. Có lẽ bạn đang dùng 1 trình nhận dạng nước ngoài nên kết quả nhận dạng không đạt yêu cầu. Vậy bạn hãy dùng thử trình nhận dạng chữ tiếng Việt VnDOCR xem kết quả có đáp ứng được yêu cầu không. Lưu ý rằng phụ thuộc dạng font chữ được dùng cho văn bản mà chất lượng nhận dạng sẽ ở mức độ nào, thường chương trình rất khó nhận dạng các văn bản dùng font “script” (dạng viết tay).

    Windows
    Hỏi: 1. Tôi cài hai HĐH Win98 và XP trên 2 Partition. Mỗi hệ detect display adaptor khác nhau là ATI rage 128 GL RF AGP(XP) và Rage fury. Mỗi khi chuyển sang dùng HĐH khác thì máy detect màn hình rất lâu, nhiều khi treo máy ngay dấu nhắc C:\, phải restart nhiều lần mới được.
    2. Máy Cyrix333-ram64, sound Yamaha OPL3SA, cài hai HĐH Win 98 và Win2000, cài driver đúng chuẩ̉n 98 và có support trong Win2000. Đang dùng Win 98, tắt máy chuyển sang Win2000 thì máy báo lỗi sound, phải remove và add trở lại.
    Đáp: Trước hết bạn nên lưu ý rằng để 2 HĐH khác nhau ít tranh chấp nhau nhất, bạn nên cài chúng vào 2 partition độc lập (primary partition). Nguyên nhân chính của hiện tượng Windows nhận dạng sai card I/O là do card I/O này quá mới hay của hãng ít nổi tiếng. Hiện tượng 2 HĐH khác nhau nhận dạng 1 card I/O thành 2 tên khác nhau là chuyện không hiếm. Cách tránh việc phiền hà này là nên chọn mua những card I/O được dùng phổ biến nhất, thí dụ card màn hình S3 Trio-3D, Trio64...và card sound Creative Blaster chạy rất tốt trên Win9x/2000/XP, Linux, Solarix. Những card I/O mới dù có khả năng rất mạnh nhưng thường chưa có driver ổn định, tin cậy trên WinXP, Linux, Solarix, do đó trước khi mua các card mới này, bạn nên biết thông tin cụ thể và chính xác về tính tương thích của chúng với các HĐH mà bạn dự định dùng.

    Hỏi: Máy dùng sound card Creative PCI 128 4D, cài driver “WDMDRV” (trong ..\driver) âm thanh nghe rất tệ. Cài một driver khác (trong ..\Win9xDRV) thì nghe âm thanh rất hay, treble/bass rất tốt, nhưng có vấn đề là khi mở 2 bài hát và play cùng một lúc thì máy báo lỗi “! MMSYSTEM004 the specified device is already in use. Wait until it is free, and then try again.”, trường hợp này không xảy ra với driver trước.
    Đáp: Trên đĩa CDROM kèm theo sound card Creative PCI 128 có cung cấp 2 loại driver cho sound card:
    • Driver truyền thống nằm ở thư mục “x:\.....Driver\Win9xDrv”, loại driver này chỉ chạy được trên Win9x và WinME, không chạy được trên WinNT, Win2000, WinXP. Ûu điểm của driver này là đã được dùng lâu đời nên hoàn thiện và chạy rất tốt. Khuyết điểm của nó là không cho phép chơi đồng thời nhiều file nhạc (do đó bạn mới nhận thông báo lỗi như bạn trình bày).
    • Driver mới WDM (Win32 Driver Model) nằm ở thư mục “x:\.....Driver\WDMDRV”, loại driver này sẽ chạy được trên mọi phiên bản Windows từ Win98 trở lên, nó cho phép bạn chơi đồng thời nhiều file nhạc, nhưng do được viết sau, thời gian thử thách chưa nhiều nên chất lượng và tính ổn định có thể chưa tốt như loại driver truyền thống.
    Tóm lại, nếu bạn đã cài 2 loại driver này và cảm thấy driver truyền thống cho chất lượng tốt hơn thì bạn hãy dùng driver truyền thống và chấp nhận chơi từng file âm thanh tại từng thời điểm. Trong trường hợp muốn chơi đồng thời nhiều file âm thanh, bạn nên vào website của hãng Creative, tham khảo thông tin và download driver WDM mới nhất về dùng thử, hy vọng chất lượng sẽ tốt hơn version trên đĩa CD của bạn

    Hỏi: Máy dùng WinXP, khi Shutdown hay Log off thì có thông báo “Application Error : WOWEXEC caused an access violation in ntvdm.exe at 0x0f00412d”, chọn “Close” không được, nếu chọn “Ignore” thì lại hiện lên hộp thoại “End program”, chọn “End Now” thì mới “Shutdown” hay Log off được. Tôi đã thử vào Win Task Manager để tắt process WOWEXEC.exe, thì thấy máy vẫn chạy và Shutdown bình thường. Có cách nào để Windows không chạy file này khi khởi động máy?
    Đáp: Hai file Ntvdm.exe và Wowexec.exe cấu thành môi trường hỗ trợ chạy các ứng dụng DOS và Win3.x (ứng dụng Win16). 2 file này chỉ được nạp vào bộ nhớ WinNT, Win2000, WinXP khi bạn yêu cầu chạy 1 ứng dụng DOS hay Win16 nào đó. Nếu ứng dụng DOS hay Win16 có những yêu cầu đặc biệt nào đó (yêu cầu quá nhiều tài nguyên, dùng đường dẫn của các file quá dài...), nó có thể làm Ntvdm.exe và Wowexec.exe chạy sai và thông báo lỗi như bạn trình bày. Tóm lại nếu chưa thật sự cần thiết, bạn nên tránh dùng các ứng dụng DOS và Win16 trên WinXP. Hãy tìm và dùng version Win32 có cùng chức năng để tránh lỗi và chạy hiệu quả hơn. Để phân biệt ứng dụng nào là Win16 hay DOS, bạn hãy chạy trình Windows Task Manager (bằng cách nhấn Ctrl-Alt-Del), chọn tab 'Processes' và quan sát process nào không có thông tin trong cột “Mem Usage” thì đó chính là ứng dụng DOS và Win16. Lưu ý rằng ngay cả khi ứng dụng Win16 hay DOS đã hết chạy thì Ntvdm.exe và Wowexec.exe vẫn tiếp tục tồn tại để sẵn sàng phục vụ cho ứng dụng Win16 nào đó sắp chạy, bạn có thể xóa 2 process này đi nếu muốn.

    Hỏi: Trong khi cài Windows XP Professional thì màn hình xanh báo lỗi hiện 2 lần và yêu cầu khởi động lại, trong thông báo lỗi thấy có tên file atapi.sys, sau đó quá trình cài đặt vẫn hoàn tất. Khi sử dụng chương trình Media player để xem VCD thì máy thường xuyên thoát ra và khởi động lại. Các ứng dụng văn phòng, AutoCAD, PhotoShop hoạt động vẫn bình thường. Tôi đã download driver mới nhất cho Video card và Sound card nhưng không khắc phục được.
    Đáp: Nếu trong khi cài WinXP bạn nhận được thông báo lỗi thì rõ ràng phần cứng của bạn có ít nhất 1 thành phần không tương thích với WinXP, nếu không hiểu chính xác câu báo lỗi thì bạn hãy nhờ dịch vụ xác định nguyên nhân lỗi, bạn bỏ qua lỗi thì WinXP sẽ chạy không tin cậy và ổn định. File atapi.sys chứa driver quản lý các thiết bị chứa tin như đĩa cứng, ổ CDROM..., do đó nếu trong thông báo lỗi có tên file atapi.sys thì nguyên nhân lỗi phần nào có liên quan đến các thiết bị chứa tin này (hay mạch điều khiển và giao tiếp chúng trên mainboard).

    Hệ thống
    Hỏi: Máy cài 2 hệ điều hành Linux và WinXP. WinXP nhận phần cứng bình thường, còn Linux thì chỉ dùng được chế độ 256 màu mặc dù đã dùng đúng driver (AGP Voodoo3 16Mb).
    Đáp: Thường Linux chưa hỗ trợ đầy đủ các thiết bị I/O như Microsoft Windows, nhất là các thiết bị mới như card màn hình Voodoo3 của bạn. Cách khắc phục đơn giản nhất là mua và cài Linux version mới nhất (hiện thời là Linux Redhat 8.0), hy vọng có driver đúng cho các thiết bị mới. Lưu ý rằng lúc cài đặt Linux, máy có yêu cầu bạn cấu hình chế độ màn hình (độ phân giải nào, số lượng màu...).

    Hỏi: CPU khi gắn máy in vào thì có điện và bị giật, tuy dòng điện không mạnh, thật bất tiện. Xin chỉ cách khắc phục.
    Đáp: Thường hầu hết các ổ cắm điện gia đình ở Việt Nam không có hỗ trợ cho đường dây đất, do đó khi gắn thiết bị điện vào ổ cắm thì vỏ máy không được nối đất và có thể có điện áp nào đó làm giật người dùng. Cách đơn giản nhất để khắc phục điều này là dùng 1 dây điện, 1 đầu nối vào thành máy (siết vào 1 ốc vít nào đó phía sau thùng máy), đầu kia nối vào 1 cọc sắt được gắn chặt vào đất.

    Hỏi: Format partition C 10GB rất chậm (30’ mới được 9%) dù đĩa không bị lỗi vật lý?
    Đáp: Việc format 30 phút mà mới được 9% của partition 10GB là bất thường, cần chú ý các nguyên nhân sau đây:
    • Máy có virus,
    • Đĩa cứng sắp hư vì rõ ràng máy rất khó truy xuất các cluster đĩa, trong khi format từng cluster, máy phải đọc cluster đó (để kiểm tra) nhiều lần mới được nên tốn nhiều thời gian format đĩa.

    Mạng - Truyền Thông
    Hỏi: Xin hỏi định dạng của file *.eml do Outlook Express tạo ra tuân theo chuẩn nào? Và cách thức mã hóa của file đính kèm?
    Đáp: File *.eml do trình Outlook Express tạo ra có định dạng tuân theo chuẩn định dạng email MIME (Multipurpose Internet Mail Extensions). Đặc tả chi tiết về định dạng này được trình bày trong các RFC 822, RFC 1341, RFC 1521. Bạn có thể tìm và download các RFC này từ Internet hoặc liên hệ với toà soạn báo PC World để copy chúng. Các file nhị phân đính kèm trong e-mail thường được mã hóa theo phương pháp Base64 để biến từ dạng nhị phân thành dạng ASCII 7 bit hầu dễ dàng truyền thành công từ nơi này đến nơi khác.

    Phương pháp mã hóa Base64 cũng khá đơn giản, gồm các bước chính như sau:
    1. Chia file nhị phân ra thành nhiều nhóm nhỏ, mỗi nhóm dài 3 byte (nhóm cuối cùng nếu không đủ 3 byte thì thêm các byte giả vào cho đủ).
    2. Mã hoá từng nhóm 3 byte thành 4 ký tự ASCII 7 bit in ấn được như sau:
    • Gộp 3 byte thành 24 bit liên tiếp, chia 24 bit ra thành 4 nhóm, mỗi nhóm 6 bit có giá trị từ 0 đến 63 (gọi mỗi nhóm 6 bit là 1 ký số trong hệ thống số 64, do đó ta gọi phương pháp này là Base64).
    • Mã hoá mỗi nhóm 6 bit thành 1 ký tự in ấn như sau: nếu giá trị từ 0 đến 25 thì đổi thành ký tự từ ‘A’ đến ‘Z’; nếu giá trị từ 26 đến 51 thì đổi thành ký tự từ ‘a’ đến ‘z’; nếu giá trị từ 52 đến 61 thì đổi thành ký số từ ‘0’ đến ‘9’; nếu giá trị là 62 thì đổi thành ký tự ‘+’; nếu giá trị là 63 thì đổi thành ký tự ‘/’
    • Có thể chèn vào kết quả các ký tự xuống hàng để tạo ra kết xuất dễ đọc.
    Lưu ý rằng với phương pháp mã hóa Base64 như trên, mỗi file nhị phân có n byte sẽ được mã hóa ra thành (n+2)/3*4 ký tự ASCII 7 bit (chưa kể các ký tự xuống hàng được chèn vào thêm). Về nguyên tắc, nếu đã biết phương pháp mã hóa thì ta có thể xác định được phương pháp giải mã.

    Hỏi: Tại sao hãng Netscape lại cho xem source code của trình Netscape Navigator? Và tại sao các chương trình duyệt Web lại cho phép người dùng xem source code của trang Web? Em nghĩ source code là hạt nhân của chương trình phải được bảo mật.
    Đáp: Chỉ có những người có trách nhiệm của hãng Netscape mới trả lời được câu hỏi của bạn về lý do vì sao hãng chịu công bố source code của trình Netscape Navigator. Lưu ý rằng đối thủ cạnh tranh với hãng Netscape là Microsoft đã tích hợp linh kiện phần mềm duyệt Web với sức mạnh vượt trội so với Netscape vào nhân (kernel) của Windows và cung cấp tài liệu rất chi tiết, cụ thể để người lập trình có thể dùng linh kiện này hầu xây dựng trình Web Browser theo ý riêng của mình một cách rất dễ dàng và nhanh chóng. Trong đại đa số trường hợp thì dùng linh kiện có sẵn của Microsoft để viết Web Browser sẽ dễ dàng và nhanh chóng hơn nhiều so với việc cài đặt source code của trình Netscape Navigator rồi hiệu chỉnh code theo ý riêng và dịch lại thành 1 trình Web Browser của mình.
    Source code trong trang Web, nếu có, chỉ là những đoạn code viết bằng ngôn ngữ script (VBscript, JavaScript). Mà ngôn ngữ script thì không đủ mạnh để viết những ứng dụng có dùng các cấu trúc dữ liệu phức tạp, do đó thường ngôn ngữ script chỉ dùng để xử lý sơ bộ những thông tin nhập vào của người dùng. Còn nếu muốn xử lý công việc phức tạp một cách hiệu quả, chính quy và để dấu source code, người ta sẽ dùng các công nghệ lập trình Web khác như Applet Java, ActiveX Control, COM, ISAPI Extension, ISAPI Filter, Servlet Java... Trong những trường hợp vừa kể trên, người dùng không thể thấy source code của những phần tử đó được.

    Hỏi: Làm sao để gởi mail có file swf làm bằng chương trình swish 2.0 như ecard trong các website như 123greetings.com, mà không cần phải chọn chức năng Attach.
    Đáp: Bạn có thể dùng trình Outlook Express để soạn email chứa trực tiếp ecard. Trong cửa sổ soạn thảo nội dung thư, bạn có thể dùng button “Insert Picture” để chèn trực tiếp 1 file ảnh nào đó vào vị trí mong muốn trong e-mail. Trong trường hợp này, bạn và người nhận sẽ thấy ảnh trực tiếp trong e-mail mà không cần thực hiện thêm bất kỳ thao tác nào.

    Hỏi: Lần cài trước Port của modem là COM3, sau cài lại thì nhận được là COM2. Khi nhấn Connect trong hộp thoại Connect To cũng như khi chọn COM2 và nhấn nút More Info trong tab Diagnostics của hộp thoại Modems Properties thì đều xuất hiện màn hình xanh với thông báo “A fatal exception 0E has occurred at ... Press Ctrl+Alt+Del to restart...”. Có lúc truy cập được vào Internet, nhưng được một lúc thì màn hình xuất hiện hộp thoại như hình. Có cách nào để thiết lập lại COM3 như cũ không?
    Đáp: Card modem của bạn là card softmodem plug-and-play nên việc cấu hình thông số được thực hiện hoàn toàn bằng phần mềm, bạn không thể thay đổi thông số cấu hình bằng jumper phần cứng cũng như bằng thao tác sửa đổi thông số thủ công. Hiện tượng lúc đầu card dùng cổng COM3 nhưng sau đó nó dùng cổng COM2 là do máy bạn có sự thay đổi cấu hình máy giữa 2 lần đó (thêm/bớt card, thay đổi các thông số trong CMOS RAM...), tuy nhiên đây là hiện tượng bình thường.
    Có nhiều lý do gây ra hiện tượng lỗi khi truy xuất modem, nếu máy đã có lúc dial-up được server và truy xuất được 1 vài trang Web như bạn nói thì có thể kết luận là driver modem và phần cứng card modem đang hoạt động tốt. Theo thông tin ở cửa sổ báo sai Iexplore thì lỗi gây ra ở module BKAVHOOK.DLL, đây có thể là thư viện liên kết động của trình BKAV. Vậy bạn thử uninstall chương trình BKAV ra khỏi Windows, xóa thư viện BKAVHOOK.DLL khỏi máy rồi boot lại Windows, thử dùng lại modem xem còn bị lỗi không.

    Lập trình
    Hỏi: Lập trình API trong VC++ 6.0, khi “add” chuỗi nhập vào ListBox theo đoạn code sau thì nó  “add” vào list và sắp xếp theo thứ tự alphabet do mặc định khi tạo resource ListBox thì thuộc tính Sort đã được thiết lập, nếu không chọn thuộc tính Sort thì những gì nhập vào sẽ bị đẩy xuống dưới cùng, không thể chèn vào vị trí mong muốn. Như vậy thì đoạn code có sử dụng LB_GETCOUNT sẽ không có nghĩa. Xin chỉ giúp cho lỗi sai.

    LRESULT CALLBACK ListBox(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)

    {

    switch (message) {

    case WM_INITDIALOG:

       return TRUE;

    case WM_COMMAND:

       char st1[20],st2[20];

       GetDlgItemText(hDlg,IDC_E1,st1,20);

       GetDlgItemText(hDlg,IDC_E2,st2,20);

       int i=atoi(st1);

       if (LOWORD(wParam) == IDC_B){

         // Nhap vao dau

         if(SendDlgItemMessage(hDlg, IDC_R1, BM_GETCHECK,0,0) == BST_CHECKED)

            SendDlgItemMessage(hDlg, IDC_L, LB_ADDSTRING,0,(LPARAM)st2);

         // Nhap vao vi tri co index

         else if(SendDlgItemMessage(hDlg, IDC_R2, BM_GETCHECK,0,0) == BST_CHECKED)

            SendDlgItemMessage(hDlg, IDC_L, LB_ADDSTRING, i, (LPARAM)st2);

         // Nhap vao cuoi

         else if(SendDlgItemMessage(hDlg, IDC_R3, BM_GETCHECK,0,0) == BST_CHECKED){

           int n=SendDlgItemMessage(hDlg, IDC_L, LB_GETCOUNT, 0,0);

           SendDlgItemMessage(hDlg, IDC_L, LB_ADDSTRING, n,(LPARAM)st2);

         }

       }

       if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) {

          EndDialog(hDlg, LOWORD(wParam));

          return TRUE;

       }

       break;

    }

    return FALSE;

    }
    Đáp: Bạn đã chọn sai chế độ “add” văn bản vào ListBox. Thật vậy, hàm SendDlgItem-Message() với tham số LB_ADDSTRING chỉ cho phép “append” nội dung vào cuối ListBox, nếu ListBox có thuộc tính Sort thì hệ thống sẽ sắp xếp lại danh sách theo thứ tự alphabet. Để có thể chèn nội dung vào vị trí i bất kỳ, bạn phải dùng tham số LB_INSERTSTRING thay cho tham số LB_ADDSTRING. Với tham số LB_INSERT-STRING, hệ thống sẽ không sắp xếp lại danh sách ngay cả ListBox đang ở chế độ Sort.

    Lưu ý rằng đoạn code của bạn dài và nặng nề quá, nếu bạn lập trình hướng đối tượng và sử dụng thư viện các class MFC thì đoạn code “add” nội dung vào ListBox sẽ rất ngắn như sau :

    // Nhập vào đầu danh sách

       m_listbox.InsertString(0,m_inputstr);

    // Nhập vào vị trí “index”

       m_listbox.InsertString(m_index,m_inputstr);

    // Nhập vào cuối danh sách (không có thuộc tính Sort)

       m_listbox.AddString(m_inputstr);
    Trong đó m_listbox là tên biến kết hợp với Listbox, m_inputstr là biến kết hợp với EditText IDC_E2, m_index là biến kết hợp với EditText IDC_E1 của bạn.

    Hỏi: Dùng VB.Net để tạo 1 menu từ thanh công cụ và có đặt phím nóng bằng dấu & (vd &File như trong VB6). Trong màn hình thiết kế nó không có vấn đề gì, nhưng khi chạy thì không còn thấy phím nóng nữa (không có dấu gạch chân phía dưới chữ cái)?
    • Khi tạo Panel, tôi muốn tạo 1 đồng hồ báo ngày tháng phía dưới cửa sổ chương trình, nhưng trong VB.Net hoàn toàn không giống như VB6, không khai báo Style trong lúc thiết kế, do đó tôi phải thêm đoạn lệnh như sau vào chỗ khai báo của form:
    Me.Name.Text = System.DateTime.Now.ToShortDate.String()
    Form hiển thị đồng hồ rất đúng, nhưng khi trở lại chế độ Form Design thì bị báo lỗi. Đưa dòng lệnh trên xuống phía hàm formMain_Load() thì không còn báo lỗi nhưng nó lại không cập nhật khi có sự thay đổi ngày/tháng. Xin cho biết cách khắc phục.
    • Làm thế nào để đóng gói toàn bộ chương trình để chạy trên máy khác không cài VB.Net.
    Đáp: VB.Net có một số thay đổi so với version VB 6.0, 2 trong số đó liên quan đến câu hỏi của bạn:
    • VB.Net không còn dùng trình Menu Editor để tạo menu cho 1 ứng dụng VB mà cung cấp sẵn 1 đối tượng tên là “MainMenu”. Về tổng thể, đối tượng MainMenu hoạt động gần giống với menu của VB 6.0 nhưng về chi tiết thì có khác, thí dụ các ký tự chứa phím nóng trong các option menu không được hiển thị thường xuyên nữa, chỉ khi bạn nhấn và giữ phím Alt thì các ký tự miêu tả phím nóng mới được hiển thị có gạch chân rõ ràng để bạn dễ dàng nhấn phím nóng cần thiết. So với tập quán sử dụng cũ thì đây là một bất tiện
    • Basic.Net vẫn có đối tượng StatusBar chứa nhiều Panel, mỗi Panel vẫn có thuộc tính Style, nhưng chỉ chứa 1 trong 2 giá trị: OwnerDraw và Text, không còn giá trị sbrTime để hiển thị đồng hồ thời gian thực như trong version VB 6.0. Do đó, để tạo 1 panel hiển thị đồng hồ thời gian thực, bạn hãy tạo 1 panel để hiển thị text bình thường, tạo 1 đối tượng Timer tên là Timer1 có thuộc tính Interval = 1000 (ms) rồi viết hàm xử lý sự kiện timeout cho Timer1 như sau:
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    StatusBar1.Panels.Item(0).Text = System.DateTime.Now.ToShortTimeString()
    End Sub
    Như vậy cứ 1s, Timer1 sẽ timeout 1 lần, hàm Timer1_Tick sẽ chạy và giá trị panel đồng hồ (chỉ số 0 trong danh sách Panel trong trường hợp này) sẽ được hiệu chỉnh lại theo giờ hệ thống.
    Để các ứng dụng được dịch bởi môi trường Visual Studio .Net có thể chạy trên máy khác, bạn cần cài Microsoft.NET FrameWork vào máy đó. Microsoft.NET FrameWork thường nằm trên đĩa CD trong bộ Visual Studio .Net.

    Hỏi:
    1. Trong VB6, dùng hộp Rich TextBox để thể hiện văn bản có hình ảnh, tuy nhiên có 1 vấn đề là khi double-click vào hình ảnh thì hiện ra phần xử lý hình ảnh. Làm sao để khắc phục?
    2. Làm cách nào để copy dữ liệu trong Rich Text Box (có hình ảnh lẫn ký tự) vào Clipboard.
    3. Xin hướng dẫn phương hướng tạo ứng dụng từ điển, chẳng hạn như sử dụng đối tượng nào cho việc thể hiện từng thành phần của từ điển...
    Đáp:
    1. Có 2 cách để chèn hình ảnh vào một vị trí nào đó của điều khiển RichTextBox:
    • Nhúng hình ảnh vào RichTextBox như 1 đối tượng được nhúng (embedded object). Trong trường hợp này khi bạn nhấn kép chuột vào hình ảnh thì chương trình xử lý ảnh tương ứng sẽ chạy để bạn có thể xử lý hình ảnh đó. Để nhúng đối tượng ảnh vào RichTextBox, bạn có thể gọi method Add của thành phần OLEObjects của RichTextBox theo dạng lệnh sau đây:

    RichTextBox1.OLEObjects.Add , , “image.bmp”
    • Dán nội dung bitmap của hình ảnh vào RichTextBox như dữ liệu bình thường. Trong trường hợp này khi bạn nhấn kép chuột vào hình ảnh thì không có gì xảy ra cả (ngoại trừ hình ảnh đó được đánh dấu chọn). Để dán nội dung bitmap của hình ảnh vào RichTextBox, bạn có thể dùng cơ chế cắt-dán thủ công (copy-paste) hoặc dùng chức năng “Copy” hình ảnh từ chương trình gốc vào Clipboard rồi dán vào vị trí hiện hành của RichTextBox bằng đoạn lệnh VB như sau:

    RichTextBox1.SetFocus

    SendKeys “^v”, True

    Hoặc lệnh sau cũng có chức năng tương đương:

    RichTextBox1.SelRTF = Clipboard.GetText(vbCFRTF)
    2. Để copy dữ liệu vào clipboard, bạn hãy chọn vùng dữ liệu cần copy (có thể chứa cả văn bản lẫn hình bitmap) rồi nhấn trình tự phím Ctrl-C hay dùng đoạn lệnh sau:

    Clipboard.Clear

    Clipboard.SetText RichTextBox1.SelRTF, vbCFRTF
    3. Có rất nhiều cách khác nhau để tạo từ điển, trong đó cách dùng database để miêu tả từ điển là dễ dàng nhất: bạn tạo 1 table mà mỗi record chứa thông tin về 1 entry từ điển (tên entry, phiên âm, âm thanh của entry, loại từ và nghĩa của từng loại từ...). Việc thiết kế giao diện để cho phép người dùng tra từ điển phụ thuộc vào khiếu thẩm mỹ của người thiết kế, bạn có thể dùng các phần tử giao diện có sẵn của môi trường lập trình trực quan như VB, VC++ hay tự viết code để tạo và hiển thị phần tử giao diện tại thời điểm chương trình chạy.

    Linh tinh
    Hỏi: Tôi có 2 thanh RAM DIM 128MB, mainboard có 3 khe DIM (DIM0 —> DIM2), các khe đều chạy tốt với 1 thanh RAM DIM 128MB, tuy nhiên khi cắm cả 2 thanh vào thì chỉ khi cắm vào DIM1 và DIM2 mới nhận được 256MB, còn các trường hợp khác chỉ nhận được 128 MB. Xin hỏi nguyên nhân?
    Đáp: Tùy theo loại mainboard mà có những hạn chế riêng về việc dùng các tổ hợp khe cắm RAM. Bạn nên đọc tài liệu kỹ thuật kèm theo mainboard này để biết chính xác về các tổ hợp cắm RAM theo qui định.

    Hỏi: Tôi download được file update BIOS dạng *.bin. Xin hỏi đây là dạng file gì và cách dùng? 
    Đáp: Bạn nên đọc tài liệu hướng dẫn trên cùng Website với file *.bin để biết rõ file này có định dạng gì, qui trình sử dụng nó ra sao, nó được dùng với model mainboard nào... Lưu ý nếu chưa có yêu cầu, bạn không nên upgrade BIOS vì có thể làm hư mainboard.

    Hỏi: Máy in Canon LBP-800, đã mua gần 2 năm và đã bơm mực 1 lần. Hiện nay khi in văn bản hay bị xéo (nghiêng, lệch) đi một bên. Xin hỏi máy in bị hư gì và có thể tự sửa tại nhà không?
    Đáp: Để xác định chính xác nguyên nhân gây lỗi in nghiêng, kỹ thuật viên cần kiểm tra trực tiếp máy in. Thông thường do cơ cấu đầu in bị lệch, do đó trước hết bạn hãy thử dùng bình mực mới xem có cải thiện kết quả không, nếu không thì phải đem máy đến dịch vụ sửa chữa, ở đó các kỹ thuật viên sẽ chủ động kiểm tra và xác định lỗi.

    ID: A0303_106
    Ý kiến của bạn? Ý kiến của bạn?
    Tin ngày :