« [XmlRootForcePrefix(Prefix='foo') | Main | DPAPI and WindowsImpersonationContext an... »

It's been one of those Old School Weeks

Posted 2003-07-29 06:21 AM in Web Services | Bugs | Tools.

Sometimes a lot of "Old School" technology seems to pop up all at once.  It's Tuesday and already I've worked on two old school issues.  Here's what I told them and learned myself:

Viewing a PDF inside of Internet Explorer doesn't work when ActiveX is turned off in IE Security

From a user's point of view, there are two implementations of ActiveX technology in Internet Explorer: ActiveX Controls (created with an <object> tag in an HTML page) and ActiveX Documents (created when IE sees a mime/type that is handled by an registered application.)

When you open up a Word Document or a Adobe PDF and it appears INSIDE Internet Explorer that is an "ActiveX Document."   When you open up an HTML page that contains en <embed> or <object> tag that is an "ActiveX Control."

Both of these technologies, along with "Authenticode" (when a dialog pops up and warns you about downloading code, do you trust, etc.) are collectively, to the layman, "ActiveX."

When you turn off ActiveX in the IE Tools|Options|Security you are affecting ActiveX Documents as well.  If you click on a PDF and try to open it in IE, you'll likely get a blank page or a "broken window" graphic.  You'll be unable to View|Source because there is no HTML source to view!

Use of NEW on one line in Visual Basic 6 - as in "Dim oX as New Thing"

In VB6, what is the difference SPECIFICIALLY between: 

    Dim oCalcutta As FooBar
   Set oCalcutta = New FooBar

and

    Dim oCalcutta As New FooBar

 Is there a speed difference? (there doesn’t appear to be a major one) COM difference? (are internals handled differently?)

Turns out there is a difference.  (Thanks to Stephen Forte, Francesco Balena, Ralf Westphal, and especially Henrik Nielsen)

When you write code like this:

  Dim obj As New Class1
  obj.Method

Then each reference to a member such as:

  obj.Method

will be compiled to the following code (pseudo-code):

  If obj Is Nothing Then
    Set obj = New Class1
  End If
  obj.Method

This of course implies a certain performance hit – but I wouldn’t expect it to be in any way significant.

Much more important (in my opinion) is the difference in semantics (which follows from the above) between the two constructions:

  Dim obj As Class1
  Set obj = New Class1
  Set obj = Nothing
  obj.Method

and

  Dim obj As New Class1
  Set obj = Nothing
  obj.Method 

The first construction will result in a run-time error (Object variable or With block variable no set) and the second will not.

UPDATE: Some wisdom from Dan Appleman. "The reason [you're told] not to use [a Dim on one line] is that this can result in subtle bugs - especially during cleanup - when you are either accidentally recreating objects you think you cleaned up, or are referencing new objects when you accidentally cleared old ones."

Tracked by:
"Overseer " (FWS) [Trackback]
"It's been one of those Old School Weeks" (HZP) [Trackback]
"Jimmy Eat World " (Jimmy Eat World ) [Trackback]
"socks proxy checker" (socks proxy checker) [Trackback]
"Blu Cantrell " (Blu Cantrell ) [Trackback]


Tuesday, July 29, 2003 1:19:03 PM (Pacific Standard Time, UTC-08:00)
The first comment (re: ActiveX) was no shocker (I would not even be surprised if IE actually internally creates a basic <body><object /></body> for ActiveX Documents).

Thursday, July 31, 2003 5:57:05 PM (Pacific Standard Time, UTC-08:00)
This is one of my standard VB6 tech interview questions for VB "experts". Almost all of them go into a "late binding vs. early binding" spiel. Really! Now I guess I have to get another expert level VB question.

Comments are closed.

Contact

Sponsors

Hosting By

Hot Topics

Tags

Calendar

<November 2009>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Archives

November, 2009 (5)
October, 2009 (19)
September, 2009 (11)
August, 2009 (12)
July, 2009 (21)
June, 2009 (26)
May, 2009 (16)
April, 2009 (13)
March, 2009 (17)
February, 2009 (17)
January, 2009 (18)
December, 2008 (32)
November, 2008 (17)
October, 2008 (22)
September, 2008 (16)
August, 2008 (14)
July, 2008 (25)
June, 2008 (19)
May, 2008 (17)
April, 2008 (17)
March, 2008 (26)
February, 2008 (21)
January, 2008 (28)
December, 2007 (19)
November, 2007 (17)
October, 2007 (31)
September, 2007 (39)
August, 2007 (37)
July, 2007 (43)
June, 2007 (37)
May, 2007 (32)
April, 2007 (38)
March, 2007 (29)
February, 2007 (46)
January, 2007 (31)
December, 2006 (27)
November, 2006 (31)
October, 2006 (32)
September, 2006 (39)
August, 2006 (34)
July, 2006 (40)
June, 2006 (18)
May, 2006 (31)
April, 2006 (34)
March, 2006 (30)
February, 2006 (38)
January, 2006 (44)
December, 2005 (19)
November, 2005 (34)
October, 2005 (24)
September, 2005 (37)
August, 2005 (20)
July, 2005 (24)
June, 2005 (33)
May, 2005 (16)
April, 2005 (22)
March, 2005 (34)
February, 2005 (15)
January, 2005 (37)
December, 2004 (28)
November, 2004 (30)
October, 2004 (34)
September, 2004 (22)
August, 2004 (34)
July, 2004 (18)
June, 2004 (64)
May, 2004 (49)
April, 2004 (21)
March, 2004 (29)
February, 2004 (29)
January, 2004 (36)
December, 2003 (25)
November, 2003 (24)
October, 2003 (59)
September, 2003 (42)
August, 2003 (24)
July, 2003 (44)
June, 2003 (29)
May, 2003 (21)
April, 2003 (30)
March, 2003 (27)
February, 2003 (47)
January, 2003 (50)
December, 2002 (31)
November, 2002 (38)
October, 2002 (44)
September, 2002 (15)
May, 2002 (2)
April, 2002 (4)

Google Ads