banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows Display VB6 Source codes với màu trong trang Web  XML
  [Programming]   Display VB6 Source codes với màu trong trang Web 13/07/2006 08:50:57 (+0700) | #1 | 6279
[Avatar]
hong_xanh001
Member

[Minus]    0    [Plus]
Joined: 11/06/2004 17:02:35
Messages: 32
Offline
[Profile] [PM]
T rong VB6 Integrated Development Environment, khi ta edit source codes các hàng Comment (chú thích) được hiển thị bằng màu xanh lá cây và các Reserved Words của VB6 đuợc hiển thị bằng màu xanh dương đậm. Ðiều nầy làm mát mắt, khiến cho codes dễ đọc.

Tiếc thay khi ta copy các hàng codes ấy ra và paste vào trong một trang Web thì chúng bị mất đi đặc tính màu sắc. Nếu codes không có comment thì khó hiểu. Ngược lại nếu comment nhiều quá, người đọc dễ lẫn lộn codes với comment.

Do đó trong bài nầy ta viết một program VB6 để thực hiện hai chuyện:
Làm cho source code đẹp bằng cách thêm phía trước mỗi hàng codes một số blank spaces để ta thấy rõ phần nào nằm trong phần nào trong cấu trúc của codes.
Thêm màu xanh lá cây cho comment và màu xanh dương cho VB6 reserved words để hiển thị trên trang Web.
Làm cho codes đẹp phát xuất từ chữ Pretty Printer hồi thời Pascal rất thịnh hành. Pascal là ngôn ngữ lập trình đuợc sang tác bởi giáo sư N. Wirth, người Thụy Sĩ, để dùng làm phương tiện dạy sinh viên những kiến thức và kỹ thuật căn bản về Software Engineering. Một trong những đặc điểm của Pascal là nó có những Statement Blocks (đoạn codes) để dùng trong Structured Programming, tức là có IF..THEN..ELSE, REPEAT..UNTIL, CASE .v.v.., thay vì cái gì cũng Goto làm cho khó theo dõi codes vì nó nhảy lung tung giống như spaghetti (bánh tầm Ý).

Statement Block trong Pascal được bắt đầu bằng chữ Begin và chấm dứt bằng chữ End. Cái đó không có gì đáng nói, nhưng khi cái Structure (cơ cấu) của program chúng ta trở nên rắc rối, ta cần phải thấy từng cặp Begin-End rõ ràng. Tốt hơn hết là làm sao mỗi chữ End nằm ngay phía dưới chữ Begin của nó, dầu có cách bao nhiêu hàng. Codes sẽ lồi ra, thụt vô theo đẳng cấp rõ ràng, trông rất ÐẸP (PRETTY).

Vì hồi xưa có phương tiện Edit source code trên một Terminal ( một trong những màn ảnh nối về một computer chánh) là có phước lắm rồi, nên đòi hỏi Editor làm Pretty Codes cho mình thì hơi quá đáng. Do đó người ta phải dùng một program khác để làm Pretty Codes.

Ở đây, chúng ta sẽ thực hiện công tác Pretty Code, đồng thời đi thêm một bước nữa là thêm màu cho codes trong trang Web. Ta sẽ tận dụng Listbox và các String Functions của VB6. Ðầu tiên, ta Load content của một Text File chứa VB6 source code vào ListBox lstCodes. Khi User clicks nút Pretty Codes program sẽ làm hai chuyện sau đây:
Làm cho code đẹp
Kết quả của code đẹp được chứa trong Listbox lstPretty. Nguyên tắc chính trong công tác nầy là lưu ý những chữ như IF, DO, WHILE ..v.v. là những chữ đứng đầu của một Statement Block. Các statements thuộc về Statement Block ấy sẽ nằm thụt vô một TAB position (3 spaces chẳng hạn).

Kế đó khi gặp môt chữ END hay LOOP, là chữ đúng cuối một Statement Block, thì chính nó sẽ nằm lồi ra một TAB position trở lại.

Có một trường hợp cần lưu ý là Statement IF có thể kết thúc trên cùng một hàng, tức là nó có thêm code nằm sau chữ THEN. Trong trường hợp ấy, chữ IF không phải là đầu một Statement Block nên ta không cần phải tăng TAB position, tức là hàng kế tiếp không cần phải thụt vô.

Các chữ ELSE, ELSEIF và CASE là những chữ vừa là cuối một Statement Block, vừa là đầu một Statement Block kế đó. Nên chỉ có chính nó lồi ra thôi, hàng code kế tiếp thụt vô trở lại. Pretty Codes hiện ra như trong hình dưới đây:



Thêm màu cho trang Web
Một bảng liệt kê các Reserved Words của VB6 cũng đuợc loaded vào trong Listbox lstReservedWords. Nếu danh sách ấy chưa đủ, bạn có thể Edit thêm các chữ khác vào file ReservedWords.txt.

Hầu hết các Reserved Words đều nằm riêng một mình và cách một blank space với characters kế nó. Tuy nhiên bạn phải coi chừng khi chữ ấy nằm ở đầu hay cuối hàng. Trong trường hợp đó nó không có leading (nằm phía trước) hay trailing (nằm phía sau) blank space.

Sở dĩ ta phải chú ý điểm nầy là vì khi ta so sánh whole-word (nguyên chữ) ta phải phân biệt chữ As đứng riêng một mình (là một Reserved Word) với chữ HAs. Thành ra ta tìm chữ " As " (có space hai đầu), chớ không phải chữ "As".

Một hàng Comment thường bắt đầu bằng dấu single quote '. Ðôi khi phía sau một hàng code cũng có Comment. Do đó ta xem trường hợp thứ nhất như là đặc biệt khi Comment không có codes nằm phía trước. Trong program ta dùng một Browser để display kết quả trang Web.



Program nầy cho phép bạn Paste VB6 Source code từ Clipboard vào ListBox lstCodes, bằng cách click nút Paste Codes hay press Ctrl-V. Nó sẽ thay thế codes có sẵn trong lstCodes. Sau khi làm pretty code, kết quả HTML sẽ được tự động lưu trử trong file codes.htm. Bạn cũng có thể copy một số hàng HTML codes trong Listbox lstColor bằng cách multiselect nhiều hàng rồi click nút Copy HTML hay press Ctrl-C.



Dưới đây là mẫu của HTML codes với màu:

Code:
Function SimilarWords(ByVal Word, ByVal ILen, ByVal TWord, ByVal Tlen) As Boolean 
   ' Two words are considered Similar if the shorter word has at least (its length minus 2)
   ' characters that are found in the other word.
   ' In other words, the two words differ only a couple characters at the most.
   Dim L1, L2, W1, W2 
   Dim i, MatchCount, Pos 
   ' Identify the shorter Word and its length
   If ILen > Tlen Then 
      L1 = ILen 
      L2 = Tlen 
      W1 = UCase(Word) 
      W2 = UCase(TWord) 
   Else 
      L1 = Tlen 
      L2 = ILen 
      W1 = UCase(TWord) 
      W2 = UCase(Word) 
   End If 
   MatchCount = 0 
   ' Iterate through each character of the shorter word, i.e. W2
   For i = 1 To L2 
      ' Locate a character of W2 in W1
      Pos = InStr(W1, Mid(W2, i, 1)) 
      If Pos > 0 Then 
         ' Increment the number of same characters
         MatchCount = MatchCount + 1 
         ' Temporary remove the matched character from W1
         W1 = Left(W1, Pos - 1) & Mid(W1, Pos + 1) 
      End If 
   Next 
   If MatchCount >= (L2 - 2) Then 
      SimilarWords = True 
   Else 
      SimilarWords = False 
   End If 
End Function


http://www.vovisoft.com/webdev/PrettyCode.htm
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|