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,854 other subscribers

Archive for the ‘C#’ Category

C# / .NET – setting or clearing the Password Never Expires flag for a user

Posted by jpluimers on 2009/10/11

Recently, I had to change the “Password Never Expires” flag for some users on Windows systems.

In the past, there used to be a netuser tool available from WindowsITPro where you could use the pwnexp flag to set or clear that flag.
That tool seems to be vanished, so I was searching for alternatives.

Most alternatives I found depend on some  kind of scripting, or the use of the WMIC WMI command line interface: that was “out” because this particular setup is running on Windows XP Embedded, which is trimmed down very much.
The only C# example I found was on CodeProject, but it does

  • not take into account the existing flags correctly,
  • have  hard coded literals without any references where they are from,
  • use bit flag arithmetic without letting the C# compiler do its magic with enums,
  • use a call to the deprecated  InvokeGet method,
  • use the Invoke(“Put”, … way of calling that so many people use (which actually should have been an – also deprecated – InvokeSet method),
  • use COM Interop

Hence the solution below:
C#, with the proper ADS_USER_FLAG_ENUM enum from the MSDN documentation and no COM Interop, it also moves all literals to constants.

Read the rest of this entry »

Posted in .NET, C#, C# 2.0, CommandLine, Development, Software Development, XP-embedded | Leave a Comment »

.NET/C# – ExceptionCatcher and ExceptionHelper gems

Posted by jpluimers on 2009/09/14

http://it-republik.de/dotnet/basta/The class presented in this article is part of my “.NET Gems – Small Pieces of Code that make your Day” session that will be presented at the BASTA! conference next week in Mainz, Germany.
It is going to be a fun conference, with lots of (internationally) renowned speakers (like Oliver Sturm, Ingo Rammer, Stephen Forte, Neil Ford and Dino Esposito).
Well worth attending!

OK. Let’s show the gems, and assume you are writing a method that is not allowed to let exceptions leave it’s implementation.
This is a common case, for instance you develop COM Servers, Windows Services and to a lesser extent Web Services.
Read the rest of this entry »

Posted in .NET, BASTA!, C#, C# 2.0, Development, Event, Software Development, Visual Studio and tools | Leave a Comment »

CodeRage 4: session replays are online too!

Posted by jpluimers on 2009/09/13

Embarcadero has made available the replays of the CodeRage 4 sessions.
You can find them in the CodeRage 4 sessions overview.

In order to download them from that overview, NOTE: To access this session replay, you must be logged into EDN. you can login or sign-up (which is free).

To make it easier to find all the relevant downloads, below is an overview of my sessions and their links.

Let me know what you use it for, I’m always interested!

Update 20090918: changed the download locations because CodeCentral messed up.
Read the rest of this entry »

Posted in .NET, ASCII, C#, C# 2.0, CodeRage, CommandLine, Conferences, CP437/OEM 437/PC-8, Database Development, Debugging, Delphi, Development, Encoding, Event, Firebird, InterBase, ISO-8859, ISO8859, Java, Prism, Software Development, Unicode, UTF-8, UTF8, Visual Studio and tools, XML, XML/XSD, XSD | 4 Comments »

CodeRage 4: session “Using Unicode and Other Encodings in your Programs” video, chat and Q&A transcripts

Posted by jpluimers on 2009/09/11

Not only can you watch the video and download the CodeRage 4 session on materials on Using Unicode and Other Encodings in your Programs, but below you can also find the chat transcripts below.

VIP Room Transcript with Q&A

(9/11/2009 9:09:19 AM) The topic is: Session Room 2 – “Using Unicode and Other Encodings in your Programs” by Jeroen Pluimers


Public Room Transcript

(5:52:14 PM) Christine_Ellis has set the topic to: Session Room 2 – “Using Unicode and Other Encodings in your Programs” by Jeroen Pluimers
(9/11/2009 9:12:47 AM) Jeroen_Pluimers: I got a bunch of 406 error messages in the jibber chat client, so I was afraid it lost the connection :-)
(9/11/2009 9:15:45 AM) Jim_Ferguson: Jeroen, Have you been getting a bunch of internal errors when you get fancy with generics?
(9/11/2009 9:15:53 AM) Borland: BTW, DavidI, excellent internet radio choice of KPIG. Very good Blues.
(9/11/2009 9:36:43 AM) Mandy_Walker: http://etncaweb04.embarcadero.com/resources/technical_papers/Delphi-and-Unicode_Marco-Cantu.pdf
(9/11/2009 9:39:14 AM) Jim_Ferguson: Strings are getting fatter on the back end.
(9/11/2009 9:40:39 AM) Mandy_Walker: Sorry, for incorrect link from slide. Better http://etnaweb04.embarcadero.com/resources/technical_papers/
(9/11/2009 9:49:20 AM) Jim_Ferguson: TBYtes and pChar arent equivalt. TBytes is a dynamic array. Shouln’t be pByte instead of TBytes?
(9/11/2009 9:53:05 AM) Jim_Ferguson: Sounds like Intel needs to build Unicode into the processor. There is a lot of out board thinking when it comes to characters now.
(9/11/2009 9:57:19 AM) Mandy_Walker: http://it-republik.de/konferenzen/delphi_live/material/DelpiLive09_Cantu_Unicode.pdf
(9/11/2009 9:58:26 AM) Borland: Thanks Joroen, this was packed with great information sources.
(9/11/2009 9:59:09 AM) Jeroen_Pluimers: http://en.wordpress.com/tag/coderage/
(9/11/2009 9:59:17 AM) Jeroen_Pluimers: https://wiert.wordpress.com/2009/09/09/coderage-4-session-materials-available-for-download/
(9/11/2009 9:59:24 AM) Mandy_Walker: Thx, Jeroen
(9/11/2009 10:00:47 AM) Erwin_Mouthaan: Bedankt Jeroen. Leuke presentatie!
(9/11/2009 10:01:04 AM) jthurman: Jeroen is a marching band guy?
(9/11/2009 10:01:05 AM) M_L: Thanks!
(9/11/2009 10:01:21 AM) Jeroen_Pluimers: http://www.wmc.nl
(9/11/2009 10:01:22 AM) Giel: Bedankt Jeroen!
(9/11/2009 10:01:32 AM) Robert_D_Smith: I played snare and bass drum, Jeroen
(9/11/2009 10:01:40 AM) jthurman: Jeroen: I teach high school marching band in the USA. We should talk sometime.
(9/11/2009 10:02:05 AM) Jeroen_Pluimers: write me an email: jeroen@pluimers.com
(9/11/2009 10:02:09 AM) jthurman: Will do
(9/11/2009 10:02:45 AM) Robert_Evans: Thanks Jeroen. Great stuff!
(9/11/2009 10:03:11 AM) Jeroen_Pluimers: you are welcome; let me know when you have questions or run into things that I might be able to help with
(9/11/2009 10:04:48 AM) Jeroen_Pluimers: talking about migration projects: we have done quite a few for clients; so if you need help with that as well, drop me an email
(9/11/2009 10:05:46 AM) Christine_Ellis has set the topic to: Session Room 2 – “New Features in the RAD Studio IDE” by Mark Duncan & Darren Kosinski

–jeroen

Posted in .NET, C#, CommandLine, Delphi, Development, Encoding, ISO-8859, ISO8859, Prism, Software Development, Unicode, UTF-8, UTF8, XML, XML/XSD, XSD | 1 Comment »

yet another update to TFS 2008 Folder Comparison Filter for both C# and Delphi projects « The Wiert Corner – Jeroen Pluimers’ irregular stream of Wiert stuff

Posted by jpluimers on 2009/07/16

I just found out that in my updates to TFS 2008 Folder Comparison Filter for both C# and Delphi projects somehow some backslashes (\) were missing.

Oops, sorry :-)

These backslashes are important when excluding directories: if omitted, TFS thinks you want to exclude a filename in stead of a directory name (see Folder Comparison Filters).

It might be due to the HTML pasting issue that I explained in Including formatted sourcecode in WordPress.

Anyway, here is the correct one that has the backslashes at the right places:

!*.pdb;!*.obj;!*.dll;!*.exe;!*.res;!*.resources;!*.cache;!*.ilk;!*.ncb;!obj\;!objd\;!bin\;!lib\;!*.local;!*.identcache;!*.dcu;!__history\;!*.dsk;!*.~*;!*.stat;!*.drc;!*.map;!*.csproj.user;!*.vbproj.user;!*.csproj.webinfo;!*.vbproj.webinfo;!*.suo;!*.bpl;!*.dcp;!*.log;!*.lck

(Note these all should be on one line when pasting them).

–jeroen

Posted in .NET, C# 2.0, C# 3.0, Delphi, Development, Prism, Software Development, Source Code Management, TFS (Team Foundation System), WordPress | Leave a Comment »

C#/.NET – GetExecutablePath – borrowed a bit from the Delphi 2006 RTL

Posted by jpluimers on 2009/07/15

Somehow, at every client I need a function like GetExecutablePath.

Maybe you do too, so here is the code that I adapted a long time ago from the Delphi 2006 RTL:

using System;
using System.Diagnostics;
using System.Reflection;
namespace bo.Reflection
{
    public class AssemblyHelper
    {

        public static string GetExecutablePath()
        {
            // borrowed from D2006\source\dotNet\rtl\Borland.Delphi.System.pas function ParamStr():
            string result;
            Assembly entryAssembly = Assembly.GetEntryAssembly();
            if (null != entryAssembly)
            {
                result = entryAssembly.Location;
            }
            else
            {
                Process currentProcess = Process.GetCurrentProcess();
                ProcessModule mainModule = currentProcess.MainModule;
                result = mainModule.FileName;
            }
            return result;
        }
    }
}

Enjoy :-)

–jeroen

Posted in .NET, C#, C# 2.0, C# 3.0, Delphi, Development, Software Development, Visual Studio and tools | 2 Comments »

update to TFS 2008 Folder Comparison Filter for both C# and Delphi projects « The Wiert Corner – Jeroen Pluimers’ irregular stream of Wiert stuff

Posted by jpluimers on 2009/06/09

Last month I wrote about the TFS 2008 Folder Comparison Filter for both C# and Delphi projects; here is an update:

If you enable the generation of MAP files during compilation, you might not want to include them in your search filter.

Also, the .suo, .user and .webinfo extensions were missing (for an explanation of Visual Studio file extensions, see here and here), so then the search filter becomes this:

!*.pdb;!*.obj;!*.dll;!*.exe;!*.res;!*.resources;!*.cache;!*.ilk;!*.ncb;!obj\;!objd\;!bin\;!lib\;!*.local;!*.identcache;!*.dcu;!__history;!*.dsk;!*.~*;!*.stat;!*.drc;!*.map;!*.csproj.user;!*.vbproj.user;!*.csproj.webinfo;!*.vbproj.webinfo;!*.suo

Have fun with it!

–jeroen

Posted in .NET, C#, Delphi, Development, Prism, Software Development, Source Code Management, TFS (Team Foundation System), Visual Studio and tools | Leave a Comment »

Spoken @ DevDays 2009 NL – download is online: .NET & hardware – capture video & control servos, in a fun application

Posted by jpluimers on 2009/06/02

Last week I spoke at the GeekNight of the Dutch Microsoft DevDays 2009.
A great conference, signalling two important industry wide trends:

  • Cloud computing
  • Natural user interfaces

There were many interesting presentations on both, and we are only at the beginning of those trends: interesting times are ahead!

My presentation (.NET & hardware – capture video & control servos, in a fun application) was as a GeekNight session.
That imposed geeky stuff, but in addition it addressed an important point: there will be many more means of interaction.
In particular, my ‘geek’ combination of hardware and software would react on movements seen by the webcam by pointing the beam of the laserpointer towards the largest area that moved.

After that I enjoyed the long Pentecost weekend (yes, the monday after Pentecost is a Holiday in the Netherlands, so most people have a day off then).

Today I updated my Conferences, seminars and other public appearances page with my DevDays materials to download.

It contains both the sourcecode, and the presentation in English.

Enjoy the download :-)

–jeroen

Posted in .NET, C#, C# 2.0, C# 3.0, DevDays09, Development, Event, Hardware Interfacing, Servo, Software Development, USB, WebCam | Leave a Comment »

TFS 2008 Folder Comparison Filter for both C# and Delphi projects

Posted by jpluimers on 2009/05/25

When using TFS (Team Foundation System) 2008 as a Version Control / Source Code Management system not only for your C#, but also for Delphi projects, this is a good filter string when using the ‘Compare Folders‘ function of TFS:

!*.pdb;!*.obj;!*.dll;!*.exe;!*.res;!*.resources;!*.cache;!*.ilk;!*.ncb;!obj\;!objd\;!bin\;!lib\;!*.local;!*.identcache;!*.dcu;!__history\;!*.dsk;!*.~*;!*.stat;!*.drc

This is the regular Folder Comparison Filter – the bold above is the addition and the link contains an explanation of the filter syntax:

!*.pdb;!*.obj;!*.dll;!*.exe;!*.res;!*.resources;!*.cache;!*.ilk;!*.ncb;!obj\;!objd\;!bin\

Hope this helps some of you in reducing the amount of clutter in the resulting comparisons :-)

–jeroen

Posted in .NET, C#, Delphi, Development, Software Development, Source Code Management, TFS (Team Foundation System) | 3 Comments »

Edited: Conferences, seminars and other public appearances « The Wiert Corner

Posted by jpluimers on 2009/05/15

I have edited the Conferences, seminars and other public appearances/ page and extended the list of conferences I have attended in the past including many sessions.

Topics covered in these sessions have been C#, Delphi, Databases, Linux, Kylix, debugging, Compact Framework, and much much more.

Let me know which sessions you’d like to see online first.

The list is far from complete, but it is another step into getting the list more accurate.

–jeroen

Posted in .NET, C#, C# 2.0, Component Development, Conferences, Database Development, Delphi, Designer Development, Development, Event, Firebird, InterBase, Package Development, Software Development, SQL Server, Visual Studio and tools, XML, XML/XSD | Leave a Comment »