2009-01-05 8 views
12

Tôi đang tạo GUID để sử dụng trong ứng dụng ASP cổ điển, bằng cách sử dụng TypeLib. Tuy nhiên, ngay cả một thử nghiệm đơn giản như viết GUID ra màn hình là cho tôi vấn đề - nó in GUID nhưng bỏ qua mọi thứ sau nó (ví dụ: thẻ HTML, từ bổ sung, bất cứ điều gì).Xuất một GUID trong VBScript bỏ qua tất cả văn bản sau

Dưới đây là mã thô sơ để kiểm tra này:

Set typeLib = Server.CreateObject("Scriptlet.TypeLib") 
myGuid = typeLib.Guid 
Response.Write myGuid & " is the new GUID" 
Set typeLib = Nothing 

này sẽ hiển thị một cái gì đó giống như {9DDB27D1-F034-41D7-BB88-D0D811DB91CE} và đó là nó; phần còn lại của văn bản bị bỏ qua và không được viết ra. Tuy nhiên, nếu tôi mã hóa cứng giá trị GUID đó và tham chiếu nó từ một biến, phần còn lại của văn bản sẽ xuất hiện tốt. Tôi đã thử chuyển đổi rõ ràng thành một giá trị String trước khi hiển thị, nhưng nó vẫn xảy ra.

+0

Ohh cảm ơn thần ai đó đã có điều này. – ChristianLinnell

Trả lời

12

tôi dường như đã giải quyết được vấn đề của riêng tôi .. nó đã được bổ sung thêm một cái gì đó bổ sung cho các văn bản, vì vậy tôi đã phải làm:

myGuid = Left(myGuid, Len(myGuid)-2) 

và bây giờ kết quả đầu ra tốt. Lạ thật.

+0

bạn có thấy nhận xét của tôi về bạn không? nó là srange ... – Schwartser

+0

Không lạ gì nếu GUID thực sự là một cấu trúc. Hàm Left sẽ phải chuyển đổi nó thành một chuỗi, vì vậy nó có thể làm việc với nó và trả về một chuỗi. – Tester101

+6

Scriptlet.TypeLib.Guid cung cấp một chuỗi null chấm dứt. Một cái gì đó trên đường từ mã của bạn vào màn hình sử dụng null chấm dứt và do đó dừng đầu ra những thứ ở giữa. – svinto

-2

GUID là cấu trúc chứ không phải chuỗi, bạn cần thêm phương thức ToString() để xuất dưới dạng chuỗi.

https://msdn.microsoft.com/fr-fr/library/97af8hh4(v=vs.110).aspx

Response.Write myGuid.ToString("D") 
+0

Tôi không nghĩ rằng tôi có thể sử dụng ToString trong VBScript; cố gắng sử dụng typeLib.Guid.ToString() cho tôi một lỗi. –

+0

kiểm tra điều này http://support.stormhosts.net/showthread.php?t=344 – Schwartser

4

tôi sử dụng một cái gì đó như thế này

Function GetGuid() 
     Set TypeLib = CreateObject("Scriptlet.TypeLib") 
     GetGuid = Left(CStr(TypeLib.Guid), 38) 
     Set TypeLib = Nothing 
End Function 
2

Nó cho biết thêm một vbNullChar hoặc Chr (0) vào cuối GUID. Thay thế (myGuid, Chr (0), "") sẽ sửa chữa nó. Tốt hơn là sử dụng chức năng Trái hoặc Giữa.