Tìm trong:Webe-CHÍP

Bộ gõ (kiểu Vni/Telex/Viqr)Tắt (Alt+T)Mở (Alt+M)

 
Trang chủ ĐÓ HỎI, ĐÂY TRẢ LỜI TT 327

Xử lý chuỗi ký tự trong Visual Foxpro

Đó hỏi: Xin e-CHÍP vui lòng hướng dẫn về chương trình xử lý chuỗi ký tự trong CSDL Visual Foxpro 6.0 (dạng DBF), sao cho các chữ cái sau dấu cách đều viết hoa ("nguyễn văn tý" thành "Nguyễn Văn Tý") và nếu có hai dấu cách trở lên liên tiếp thì chuyển đổi thành một dấu cách.

<chieu_cntt@>

Đây trả lời: Việc chuyển đổi một chuỗi ký tự sao cho:
1. Các ký tự trắng ở đầu và cuối chuỗi phải được loại bỏ: được giải quyết bằng hàm ALLTRIM của Visual Foxpro.
2. Các từ riêng rẽ trong chuỗi chỉ được cách nhau một ký tự trắng: được giải quyết bằng hàm cBotKyTuTrang, trình bày ở đoạn mã 1.
3. Chữ cái đầu tiên trong mỗi từ riêng rẽ của chuỗi phải được đổi sang chữ hoa, nếu có chữ Việt thì cần lưu ý đến bộ mã của chúng. Đoạn mã 2 trình bày hàm cProperVN1Byte để giải quyết vấn đề, trong đó sử dụng bộ mã tiếng Việt VNI-1 byte. Sở dĩ phải dùng bộ mã 1 byte là để bạn dễ hiểu hơn về thuật toán. Bạn cần sửa đổi một chút cho phù hợp với trường hợp cụ thể của mình.
Trong hàm cProperVN1Byte, hai biến cChuHoa và cChuThuong là hai chuỗi ký tự chứa danh sách tất cả các chữ cái (kể cả có dấu tiếng Việt) được liệt kê theo trật tự tương ứng với nhau. Ví dụ, nếu cChuHoa = “AÁÀẢÃẠÂẤẦẨẪẬ” thì cChuThuong = “aáàảãạâấầẩẫậ”. Nếu chép hàm này vào máy của mình, bạn có thể thấy các ký tự "đầu lâu xương sọ" trong phép gán chuỗi của hai biến cChuHoa và cChuThuong. Đó là do bộ mã thử nghiệm trên máy của tôi là VNI-1 byte (như Vietnam, HaLong,...), bạn phải dùng phông chữ VNI-1 byte mới đọc được.
Để sử dụng hàm, bạn có thể viết đoạn mã tương tự ví dụ sau:

a = "Đàm văn chương còm nHom đá banH FIFA"
CLEAR
@ 10,10 SAY cProperVN1Byte(cBotKyTuTrang(a)) FONT "Vietnam"
RETURN

Kết quả in ra là: Đàm Văn Chương Còm Nhom Đá Banh Fifa.

Đoạn mã 1
   FUNCTION cBotKyTuTrang
      PARA cChuoiCanBot
      LOCAL cKetQua
      cChuoiCanBot = ALLTRIM(cChuoiCanBot)
      cKetQua = ""
      DO WHILE AT(" ", cChuoiCanBot) > 0
            cKetQua = cKetQua + IIF(cKetQua == "", "", " ") + ;
                  LEFT(cChuoiCanBot, AT(" ", cChuoiCanBot) - 1)
            cChuoiCanBot = ALLTRIM(RIGHT(cChuoiCanBot, LEN(cChuoiCanBot) - ;
                     AT(" ", cChuoiCanBot)))
      ENDDO
      cKetQua = cKetQua + IIF(cKetQua == "", "", " ") + cChuoiCanBot
   RETURN cKetQua

Đoạn mã 2
      FUNCTION cProperVN1Byte
      PARA cChuoiCanDoi
            LOCAL cChuHoa, cChuThuong, cKetQua, cChuoiTamThoi, lHoa, cKyTu
            cChuHoa = "A^`|}~ý€‡Œ¯ü°±²³{BCD®E´µ•¸þ¹º»¼½FGHI¾¿ÀÁÂJKLMN"+;
                        "OÃÄÅÆÇùÈÉÊËÌúÍÎÏÐÑPQRSTUÒÓÔÕÖûרÙÚÛVXYÜÝÞß@Z"
            cChuThuong = "a …àáâƒãäåæçèéêëìíbcd­e‚Ё„†ˆ‰‹Žfghi¡©ª«jklmn"+;
                        "o¢•‘’”“–˜™š›óôõö÷øpqrstu£—œžŸ¤¥¦§¨vxyîïðñòz"
            lHoa = .T. && Ký tự kế tiếp sẽ đổi sang chữ hoa
            FOR I=1 TO LEN(cChuoiCanDoi)
                  cKyTu = SUBSTR(cChuoiCanDoi, I, 1)
                  IF NOT (cKyTu == " ")
                        IF lHoa && Nếu cần đổi sang chữ hoa
                                    IF cKyTu $ cChuThuong && Chỉ đổi nếu là chữ thường
                                          cKyTu = CHRTRAN(cKyTu, cChuThuong, cChuHoa)
                                    ENDIF
                                          lHoa = .F. && Ký tự kế tiếp sẽ đổi sang chữ thường
                                    IF cKyTu $ cChuHoa && Chỉ đổi nếu là chữ hoa
                                          cKyTu = CHRTRAN(cKyTu, cChuHoa, cChuThuong)
                                    ENDIF
                        ENDIF
                        cChuoiCanDoi = STUFF(cChuoiCanDoi, I, 1, cKyTu)
                  ELSE
                        lHoa = .T. && Ký tự kế tiếp sẽ đổi sang chữ hoa
                  ENDIF
            ENDFOR
                  cKetQua=cChuoiCanDoi
      RETURN cKetQua

CHƯƠNG CAN CHÍP

Cài chương trình cho máy ảo của VMware

Đó hỏi: Em đang sử dụng VMware Workstation 6 để tạo máy ảo, e-CHÍP có thể hướng dẫn em cách cài 1 chương trình phần mềm nào đó từ đĩa CD hoặc trong máy thật vào máy ảo? Ngoài ra, em muốn xóa 1 máy ảo nào đó trong Vmware Workstation 6 thì phải làm thế nào?

<iloveyou_@>

Đây trả lời: Để sử dụng được ổ CD của máy chủ (máy thật) trong máy ảo, bạn chạy Vmware > chọn bảng máy ảo phù hợp (nếu có nhiều máy ảo) > bấm chuột vào mục Edit virtual machine settings > chọn CD-ROM và chọn Use physical drive: Auto detect.
Sau đó, bấm chuột vào mục Start this virtual machine để chạy máy ảo và cài chương trình trên đĩa CD giống như cài trên máy thật. Chú ý: Khi máy ảo đang sử dụng ổ CD-ROM thì máy thật không thể sử dụng được (và ngược lại) nhưng bạn có thể chuyển ổ CD-ROM qua lại máy ảo và máy thật bằng cách mở menu VM của Vmware > Removable Devices > CD-ROM > chọn Disconnect hay Connect.

- Nếu muốn cài chương trình từ máy thật, bạn phải kết nối mạng giữa máy ảo và máy thật bằng cách vào mục Edit virtual machine settings > chọn Ethernet 1 và chọn NAT > chạy máy ảo rồi mở thư mục share trên máy thật (bạn nhớ tạo thư mục share này trước đó) để cài chương trình như bình thường.
- Để xóa máy ảo bất kỳ, bạn chỉ cần chạy VMware > bấm phím phải chuột vào tiêu đề máy ảo rồi chọn lịnh Delete from Disk trong menu ngữ cảnh (hay chọn lịnh này trong menu VM).

Chuyển hộp thư Yahoo! Beta sang Yahoo! Mail

Bạn tôi có một hộp thư Yahoo!Beta. Vài lần đầu thì vào được nhưng rất chậm (dù đang sử dụng ADSL). Đến các lần sau thì quá trình vào hộp thư gần như bị đứng nửa chừng. Có cách nào để mỗi lần vào hộp thư Yahoo! thì luôn hiển thị hộp thư Yahoo! cũ.

<the_ruby9323@>

Muốn chuyển hộp thư Yahoo! phiên bản beta trở lại phiên bản trước đó, bạn làm như sau:
1. Đăng nhập vào hộp thư Yahoo! Beta > Nếu tốc độ đăng nhập giao diện Yahoo! Beta quá chậm, bạn hãy bấm chuột vào mục Trouble logging in? rồi chọn Original Yahoo! Mail trong menu xổ xuống, để chuyển qua giao diện phiên bản cũ.

2. Khi mở được cửa sổ Yahoo! Beta, bạn bấm chuột vào mục Switch Back ở phía trên hay bấm chuột vào mục Option > Switch to Original Yahoo! Mail.

3. Trong hộp thoại yêu cầu xác nhận, bạn bấm nút Switch to Original Yahoo! Mail.

LÊ HOÀN

[Đầu trang]