The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,861 other subscribers

Archive for the ‘.NET’ Category

VB.NET: If you want to cast use DirectCast or TryCast; if you want to convert, use CType

Posted by jpluimers on 2014/07/03

I’ve done quite a bit of VB.NET maintenance lately.

Most of that code was riddled with CType, both for conversions and casts. Quite a bit code had Option Explicit and Option Strict Off. A lot of those CType constructions had empty Try / Catch / End Try blocks around them.

Those empty catch blocks are a code smell. They pretend to be able to survive any exceptional disaster, but in practice you can’t. You have to indicate what kinds of disasters you can handle, for instance if a meteorite hits your data center (thanks George Stocker).

Turning off Option Strict can be OK under many circumstances (the default is off), but having Option Explicit off is usually a code smell as well, just like On Error Resume Next (which was also in plenty of the source code).

I do understand a lot of VB.NET source comes from people having programmed in VB 6, VBScript or VBA for a long time where those constructs were more common. But writing code in the 21st century is much more about writing code that you can prove to be right. Having proper error handling and compiler type checking is a big part of that.

It pays to go with the idiom, for example read the good and bad ways of vb.net – Safest way to check for integer.

Back to CType: basically you have do distinguish between conversions and casts. The reason is that when you know it will be a form of cast, CType is way to expensive. And if you know you will be doing conversions, than casting is not what you want.

Casting Read the rest of this entry »

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Development, Software Development, VB.NET, VB.NET 10.0, VB.NET 11.0, VB.NET 7.0, VB.NET 7.1, VB.NET 8.0, VB.NET 9.0 | Leave a Comment »

Some notes/links on Windows Debugging CLR applications

Posted by jpluimers on 2014/07/02

I only need it every once in a while, so finding the right links and tips to help me usually takes too much time.

So here is a small list to get started:

Keywords: CLR, SOS.DLL, WinDbg, mscordacwks.dll, PSSCOR4

Some tips: Read the rest of this entry »

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Debugging, Development, Software Development | Leave a Comment »

.NET/C#: open source Nikon SDK C# Wrapper project at SourceForge.net

Posted by jpluimers on 2014/06/26

Interesting: about a year and a half ago, the Nikon SDK C# wrapper project started ad sourceforge.

Basically, it allows you to integrate the operation of your Nikon DSLR into your .NET projects.

It has some very interesting features:

  • Control your Nikon DSLR via USB
  • Capture Jpeg and Raw images directly to system memory
  • Receive ‘Live View’ images
  • Record Video
  • Query and change camera settings (Exposure, Aperture, ISO, etc.)
  • And much more…

Downloads: Nikon SDK C# Wrapper – Browse Files at SourceForge.net.

–jeroen

via: Nikon SDK C# Wrapper | Free Security & Utilities software downloads at SourceForge.net.

Posted in .NET, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, C#, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Development, Software Development | Leave a Comment »

StudioShell: integrating Visual Studio in PowerShell

Posted by jpluimers on 2014/06/10

Wow, it seems I’ve been living under a stond since early 2011: the first StudioShell checkin.

[WayBackStudioShell opens marvellous possibilities in Visual Studio 2010, 2012 and up.

Just look at the feature list: Read the rest of this entry »

Posted in .NET, .NET 4.0, .NET 4.5, C#, C# 4.0, C# 5.0, CommandLine, Development, PowerShell, PowerShell, Scripting, Software Development | Leave a Comment »

.NET remnants of the past: Visual Studio .NET 2003 cannot start debugging as the assembly is missing

Posted by jpluimers on 2014/05/15

Boy, was this Visual Studio .NET 2003 stuff a long time ago.
Bumped into this one:


---------------------------
Microsoft Development Environment
---------------------------
Visual Studio cannot start debugging because the debug target 'C:\develop\VS-2003\VS-2003-BASE\Source\AppTest\bin\Debug\AppTest.exe' is missing. Please build the project and retry.
---------------------------
OK
---------------------------

Indeed, Visual Studio was right: it didn’t understand the Release build existed like Visual Studio 2005 and up does:

C:\develop\VS-2003\VS-2003-BASE\Source\AppTest\obj\Release\AppTest.exe

–jeroen

Posted in .NET, .NET 1.x, C#, C# 1.0, Development, Software Development, Visual Studio 2003, Visual Studio and tools | Leave a Comment »

.NET/C#: Ctrl+R+R toggles wrap in Visual Studio.NET 2003 (via: Stack Overflow)

Posted by jpluimers on 2014/05/14

A while ago, I had to do some emergency fixing in Visual Studio .NET 2003 as – despite it is unsupported – a client was still using it.

By habit, I tried to rename a variable using the Ctrl+R+R shortcut for Refactor Rename. It didn’t work, and I was not surprised: this refactoring was introduced in Visual Studio 2005.

A while later, I started to notice that WordWrap was turned on in the code editor.

It took me a few minutes and a quick search to find out the two are related:

Visual studio 2003: ctrl+R+R is the shortcut to toggle WordWrap in the code editor.

Thanks Micah for answering that!

–jeroen

via How can I toggle word wrap in Visual Studio.NET? – Stack Overflow.

Posted in .NET, .NET 1.x, C#, C# 1.0, Development, Software Development, Visual Studio 2003, Visual Studio and tools | Leave a Comment »

.NET uses banker’s rounding as default as it follows IEEE 754 (via: Stack Overflow)

Posted by jpluimers on 2014/05/08

It is almost 3 years that Ostemar wrote an interesting answer on Stack Overflow to the question

Why does .NET use banker’s rounding as default? – Stack Overflow.

Few people (even many programmers don’t!) know about rounding and how it can influence software, let alone what bankers rounding does so lets set a few things straight first.

Rounding matters. Depending on the kinds of software you write, it matters a little, or a lot.

For instance, in these categories, it can matter an awful lot:

  • Financial applications
  • Statistical applications

Bankers rounding means rounding half even. Which means that #.5 will round to the even number closest to #.

In bankers rounding, 1.5 rounds to 2, 3.5 to 4 as does 4.5, -1.5 rounds to -2, -3.5 to -4 as does -4.5.

This is called “unbiased” because for reasonable distributions of y values, the expected (average) value of the rounded numbers is the same as that of the original numbers.

This is contrary to what the majority of people are accustomed to: Round half away from zero is taught in most countries (even for the Dutch, despite the alias “Dutch Rounding” for round half to even).

Round half away from zero rounds 1.5 rounds to 2, 3.5 to 4 and 4.5 to 5. Negative numbers round like this: -1.5 rounds to -2, -3.5 to -4 as does -4.5 to -5.

This is only free of overall bias if the original numbers are positive or negative with equal probability.

In short, .NET uses bankers rounding because it follows the IEEE 754 rounding rules.

This was his answer: Read the rest of this entry »

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, .NET CF, C#, C# 1.0, C# 2.0, C# 3.0, C# 4.0, C# 5.0, Development, Software Development | 3 Comments »

Recommended reads when dealing with Character Encodings in software

Posted by jpluimers on 2014/05/06

Apart from the mandatory Joel on Software article about Unicode and Character sets, these two articles are of great value too:

Fun to read from that blog is the Historical Technology  section including this article:

–jeroen

PS: The mandatory one is The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) – Joel on Software.

 

Posted in .NET, Ansi, ASCII, CP437/OEM 437/PC-8, Delphi, Development, EBCDIC, Encoding, ISO-8859, ISO8859, Shift JIS, Software Development, Unicode, UTF-8, UTF8, Windows-1252 | Leave a Comment »

Microsoft’s new open source direction for C# and .NET (and native compilation too): Anders Hejlsberg explains « Tim Anderson’s ITWriting

Posted by jpluimers on 2014/05/02

I totally agree with Tim Anderson here:

Open source, native code compilation, and an innovative compiler: it adds up to huge changes for C# and .NET, positive ones as far as I can tell.

–jeroen

via: Microsoft’s new open source direction for C# and .NET (and native compilation too): Anders Hejlsberg explains « Tim Anderson’s ITWriting.

Posted in .NET, .NET 4.5, C#, C# 6 (Roslyn), Development, Software Development | Leave a Comment »

C# and VB are open sourced | Fabulous Adventures In Coding

Posted by jpluimers on 2014/04/27

Reminder to self:

  1. Watch the relevant Channel 9 videos.
  2. Sync the Roslyn repository regularly.

–jeroen

via: C# and VB are open sourced | Fabulous Adventures In Coding.

Posted in .NET, C#, C# 6 (Roslyn), Development, Software Development | Leave a Comment »