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

Archive for the ‘.NET’ Category

Delphi version info table: C# Builder, Delphi 8 through 10.3 Rio and Appbuilder

Posted by jpluimers on 2016/09/06

I’ve published the Delphi version info table as a Gist: https://gist.github.com/jpluimers/b5891600b73642788b492393710c6070.

Note I need help with these:

The updated script that forms the base of this table is here: https://bitbucket.org/jeroenp/wiert.me/src/tip/Native/Delphi/Scripts/List-Delphi-Installed-Packages.ps1

You can pass any of these args to get information

  • Individual columns:
    • CompanyNames, Versions, ProductNames, ProductVersions, BetaNames. ReleaseDates, Architectures, CharacterSets, Defines, CompilerVersions, RTLVersions, DllSuffixes, ProjectVersions, Frameworks, ProductVersions, ProductFullNames, BaseKeyPaths, HKCU-BaseKeyPaths, HKLM-BaseKeyPaths
  • Base of the below table:
    • ProductSummaries
  • Installed info (installation status obtained through the registry):
    • InstalledProductVersions, InstalledProductFullNames, InstalledProductSummaries, InstalledPackages

An elaborate wrapper around the Define column is jedi.inc which is used in many projects (both open source and closed source) to distinguish between various Delphi versions, libraries and platforms at compile time (URL: github.com/project-jedi/jedi/blob/master/jedi.inc)

Read the rest of this entry »

Posted in .NET, C#, C# Builder, Delphi, Delphi 10 Seattle, Delphi 10.1 Berlin (BigBen), Delphi 2005, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, Delphi XE2, Delphi XE3, Delphi XE4, Delphi XE5, Delphi XE6, Delphi XE7, Delphi XE8, Development, Software Development | 5 Comments »

tf: show changeset details on the console

Posted by jpluimers on 2016/09/02

By default the changeset command in tf.exe shows a dialog showing a list of all files in that changeset.
I wanted that list to be dumped on the console for further processing.

Luckily there is a /noprompt option for that:

call "%~dp0tf.bat" changeset /noprompt %*

The above tf-show-changeset-details-on-console.bat batch file uses tf.bat that hunts for the location of tf.exe.

–jeroen

Posted in .NET, Development, Software Development, Source Code Management, TFS (Team Foundation System) | Leave a Comment »

.NET/C#: two ways of creating an empty array

Posted by jpluimers on 2016/08/18

Empty arrays are not used often as arrays usually are about the presence data, not about the absence.

Here are two ways based on the int data type in C# (the original [WayBackexamples [WayBack] are using string, but since string itself is also a kind of array…):

Specify a size of zero:

int[] a = new int[0];

Specify an empty initialisation:

int[] a = new int[] { };

Though many people think arrays are a thing of the past, I think it is one of the first generic types and have their place. For one, enumerating over arrays using foreach is a lot faster in many environments than enumerating over other data types. Another thing is that the fixed nature of arrays can be very beneficial in setting constraints.

That’s why I like the balanced view from Eric Lippert [WayBack] in Arrays considered somewhat harmful – Fabulous Adventures In Coding – Site Home – MSDN Blogs [WayBack]

–jeroen

via:

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, C# 6 (Roslyn), Development, Software Development | Leave a Comment »

Online CamelCase to underscore_separators converter and back

Posted by jpluimers on 2016/08/09

Maintaining a suite of project that use CamelCase on the one hand and underscore_separators on the other (partially mapped by code generators) an on-line conversion comes in handy: CCConverter abedo.pl.

–jeroen

Posted in .NET, Delphi, Development, Software Development | Leave a Comment »

Push a new local branch to a remote Git repository and track it too – Stack Overflow

Posted by jpluimers on 2016/07/27

Just what I needed: Push a new local branch to a remote Git repository and track it too – Stack Overflow But watch the comments to this answer:

Answer:

In recent versions of Git (1.7.0 and later), you can checkout a new branch:

git checkout -b <branch>

Edit files, add and commit. Then push with the -u option:

git push -u origin <branch>

Git will set up the tracking information during the push.

Daniel Ruoso / Dan

Comments:

  • git push -u was introduced in Git 1.7.0 (2010-02-12). – Chris Johnsen Jun 4 ’11 at 4:16
  • Would you be kind enough to elaborate? Some git commands do more than one thing, and I’m not sure what origin and mynewfeature refer to. Is mynewfeature a branch name? Is origin a shortcut for a full remote repo url? Also what does the -u flag do? – Costa Mar 6 ’14 at 21:16
  • @Costa ‘origin’ is the name of default remote in Git repository. ‘mynewfeature’ here is branch name. -uis short for --set-upstream—for what it does and why it’s needed I wouldn’t mind some explanation, too. :) – Anton Strogonoff Mar 9 ’14 at 6:07
  • It’s also worth noting that if you have an existing tracking branch already set on the branch you’re pushing, and push.default is set to upstream, this will not do what you think it will do. It will try to push over the existing tracking branch. Use: git push -u origin mynewfeature:mynewfeature or dogit branch --unset-upstream first. – void.pointer May 19 ’14 at 18:07
  • I still needed to ‘git branch –set-upstream-to origin/remote’ in order for ‘git status’ to correctly report my branch status with respect to the remote branch. – Paul Whipp Jul 4 ’14 at 1:17
  • For people using Git from Visual Studio: Actually this is that “Publish Branch” in Visual Studio does. After executing git push with -u parameter i can finally see my branch as published in VS UI. – Puterdo Borato

 

–jeroen

Posted in Development, DVCS - Distributed Version Control, git, Software Development, Source Code Management, Visual Studio 2013, Visual Studio 2014, Visual Studio 2015, Visual Studio and tools | Leave a Comment »

C#, XSD.exe, xsd2code and generating nullable fields+properties from an XSD with and without Specified fields/properties

Posted by jpluimers on 2016/07/27

It comes down to these cases for XML elements having maxOccurs="1" (which the default for maxOccurs):

  1. adding nillable="true" will convert from a regular type to a nullable type.
  2. adding minOccurs="0" will add boolean …Specified properties in the generated C# for each element.
  3. you can have both nillable="true" and minOccurs="0" in an element which gets you a nullable type and a …Specified property.

Note I’m not considering fixed or default here, nor attributes (that have use instead of minOccurs/maxOccurs, but do not allow for nillable) nor larger values of maxOccurs (which both xsd.exe and xsd2code regard as unbounded).

From the above, XML has a richer type system than C#, so in XML there are subtle a differences between:

  1. an explicit nil in the XML element
  2. the XML element being absent
  3. the XML element being empty.

Hopefully later more text and examples to show how to actually work with this.

Delphi related to minOccurs:

Note that xsd2code.codeplex.com (unlike XmlGen#) has at least two forks at github:

From the specs:

–jeroen

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, C# 6 (Roslyn), Conference Topics, Conferences, Development, Event, Software Development, XML, XML/XSD, XSD | Leave a Comment »

A New Parser Generator for C# – CodeProject

Posted by jpluimers on 2016/07/19

A while ago I bumped into this interesting bit: LLLPG (Loyc LL(k) Parser Generator) is a new recursive-decent parser generator for C#, with a feature set better than ANTLR version 2.

–jeroen

via:

Posted in .NET, C#, Development, Software Development | Leave a Comment »

Easy way to generate “System.InvalidOperationException: Nullable object must have a value.”

Posted by jpluimers on 2016/07/07

Easy way to generate “System.InvalidOperationException: Nullable object must have a value.”.


using System;
public class Test
{
public static void Main()
{
int? nullableInt = null;
int nowInt = (int)nullableInt;
}
}

–jeroen

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, C# 6 (Roslyn), Development, Software Development | Leave a Comment »

csc.exe: prevent “does not contain a static ‘Main’ method suitable for an entry point”, use /target:library

Posted by jpluimers on 2016/06/29

Every once in a while I do Command-line Building With csc.exe.

When building libraries, it throws this error:

The reason is that by default it wants to build a program.

Change this default by adding the /target:library parameter.

–jeroen

via: c# – Program does not contain a static ‘Main’ method suitable for an entry point – Stack Overflow.

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Development, Software Development, Visual Studio 11, Visual Studio 2002, Visual Studio 2003, Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012, Visual Studio 2013, Visual Studio 2014, Visual Studio 2015, Visual Studio and tools | Leave a Comment »

Batch file to run the most recent vsvars32.bat

Posted by jpluimers on 2016/06/28

The below batch file finds and runs the latest vsvars32.bat on a system.

vsvars32.bat initializes the path and other environment variables to run Visual Studio and command-line tools (like csc.exe, xsd.exe, editbin.exe).

The batch file employs a few tricks from:

  :: Run the most recent vsvars32.bat

  :: test these environment variables that have 110 or 120 in them (future enhancements: support more Visual Studio versions):
  :: Visual Studio .NET 2002: VS70COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio .NET\Common7\Tools\
  :: Visual Studio .NET 2003: VS71COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio .NET 2003\Common7\Tools\
  :: Visual Studio 2005: VS80COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 8\Common7\Tools\
  :: Visual Studio 2008: VS90COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\
  :: Visual Studio 2010: VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
  :: Visual Studio 2012: VS110COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\
  :: Visual Studio 2013: VS120COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\
  :: VS130COMNTOOLS was skipped: http://www.neowin.net/forum/topic/1215607-visual-studio-13-to-be-skipped-vnext-to-be-v14/
  :: Visual Studio 2015: VS130COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
  :: They contain `vsvars32.bat` which will update the `PATH` so it includes where `xsd.exe`, `csc.exe`, `editbin.exe` and others reside
  :: Different examples: https://github.com/noop-dev/c-cgdk/blob/master/compile-vscpp.bat
  :: and https://code.google.com/p/xvid4psp/source/browse/trunk/bin/4Gb+patcher.bat
  :: or give it a go for any version: http://chess.eecs.berkeley.edu/ptexternal/src/ptII/ptolemy/actor/lib/fmi/fmus/template/sources/build_fmu.bat
  setlocal enabledelayedexpansion
  :: delayed expansion allows for the exclamation marks
  :: see http://ss64.com/nt/delayedexpansion.html
  :: see http://stackoverflow.com/questions/22857407/windows-batch-how-to-assign-variable-with-dynamic-name
  for %%v in (70 71 80 90 100 110 120 130) do if not [!VS%%vCOMNTOOLS!]==[] set VSCOMNTOOLS=!VS%%vCOMNTOOLS!
  :: http://stackoverflow.com/questions/28682268/assign-variables-past-endlocal-in-a-loop
  endlocal & call :do call "%VSCOMNTOOLS%vsvars32.bat"
  goto :eof

:do
  echo %*
  %*
  goto :eof

–jeroen

via: Finding the path of xsd.exe from your Visual Studio Build Events « The Wiert Corner – irregular stream of stuff.

Posted in .NET, .NET 1.x, .NET 2.0, .NET 3.0, .NET 3.5, .NET 4.0, .NET 4.5, Development, Software Development, Visual Studio 11, Visual Studio 2002, Visual Studio 2003, Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio 2012, Visual Studio 2013, Visual Studio 2014, Visual Studio 2015, Visual Studio and tools | Leave a Comment »