13

I'm creating a GUID for use in a Classic ASP application, by using TypeLib. However, even a simple test such as writing the GUID out to the screen is giving me problems - it prints the GUID but ignores everything after it (e.g. HTML tags, additional words, anything).

Here's the rudimentary code to test this:

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

This will display something like {9DDB27D1-F034-41D7-BB88-D0D811DB91CE} and that's it; the rest of the text is ignored and isn't written out. However, if I hard-code that GUID value and reference it from a variable, the rest of the text appears just fine. I've tried explicit conversion to a String value before displaying, but it still happens.

AnthonyWJones
  • 187,081
  • 35
  • 232
  • 306
Wayne Molina
  • 19,158
  • 26
  • 98
  • 163

4 Answers4

13

I seem to have solved my own problem.. it was adding something extra to the text, so I had to do:

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

and it now outputs fine. Strange.

Wayne Molina
  • 19,158
  • 26
  • 98
  • 163
  • Not that strange if the GUID really is a struct. The Left function would have to convert it to a string, so it can work with it and return a string. – Tester101 Jan 05 '09 at 16:25
  • 7
    Scriptlet.TypeLib.Guid gives a null-terminated string. Something on the way from your code to the screen uses null termination and thus stops outputing things in the middle. – Svante Svenson Mar 04 '09 at 13:39
4

I use something like this

Function GetGuid() 
        Set TypeLib = CreateObject("Scriptlet.TypeLib") 
        GetGuid = Left(CStr(TypeLib.Guid), 38) 
        Set TypeLib = Nothing 
End Function 
Louis
  • 41
  • 1
3

It adds a vbNullChar or Chr(0) at the end of the GUID. Replace(myGuid, Chr(0), "") will fix it. Better than using Left or Mid functions.

Rauf
  • 31
  • 1
-2

GUID is a struct and not a string, you need to add a ToString() method to output it as a string.

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

Response.Write myGuid.ToString("D")
thomasb
  • 5,816
  • 10
  • 57
  • 92
Schwartser
  • 93
  • 1
  • 6