Skip to content

Blog

Major Release: Sunday, 23-Nov-2014

  • Improves accuracy and consistency of generated code to reduce .NET build errors
  • Adds support for custom CodeStyle.DLL (Naming Conventions, Dictionary to Generics.Dictionary; VB.Collection to Generics.List, Formatting, etc.) Contact us for a demo.
  • Improves Handling of Controls.Add
  • Improves Handling of CInt(Date)
  • Improves handling of gmSL code elements in translation scripts
  • Adds Semantics Symbols Search
  • Improves layout of Search Panel
  • Improves ASP Line counting logic to show LOC details for site script
  • Adds Compiler Audit Report — shows system model before analyzer modifications
  • Renames Audit Report to Analyzer Audit Report — shows system model after analyzer modifications
  • Adds double-click Reference Panel to load interface description file
  • Improves folder format consistency in project file
  • Improves handling of floating point numeric constants in IDL generation
  • Adds Help/Samples menu item
  • Corrects problem with Help/Documentation menu item
  • Adds %TaskGuid% Script Variable (e.g. for setting ProjectGuid in .NET project file)
  • Improves activation of project-specific mega-language files
  • Begins work to support project-specific licensing
  • Modifies Trial License limits: VB6=11K LOIC, ASP=5K LOC
  • Adds ‘Notes’ records to Translation Log Report

The sample upgrade solutions have been updated and several impressive new samples have been added. All samples produce functional code in both C# and VB.NET (unless noted otherwise).

  • FMStocks (updated) a set of DLLs and an ASP site that implement simplified stock trading application
    Illustrates ASP to ASP.NET upgrade, Shared file Consolidation, and COM Replacements
  • Waves (updated) a stand-alone graphics/mathematics application
    Illustrates upgrading advanced forms, graphics, and mathematics logic
  • vb3DDefine (updated) a stand-alone graphics/mathematics application
    Illustrates upgrading advanced forms graphics and mathematics logic
  • Improves GM.ADODB_to_DataLib.dll.xml
  • Improves GM.EXCEL_Interop.EXE.XML
  • Improves GM.MSCOMCTL.OCX.xml
  • Improves GM.MSCOMCT2_Winforms.OCX.XML
  • Improves GM.SCRRUN.DLL
  • Improves TabctlTransform.gmsl
  • Adds members to ADODB Emulation
  • Adds enums and members to Utils

10/24/2014 Major Release

New Upgrade Solution Samples!

The sample upgrade solutions have been updated and several impressive new samples have been added. All samples produce functional code in both C# and VB.NET (unless noted otherwise).

  • WPFScanTool (new) an EXE and DLL that implement a file analysis application
    Demonstrates VB6 forms to C#/Windows Presentation Foundation (WPF)
  • FMStocks (updated) a set of DLLs and an ASP site that implement simplified stock trading application
    Illustrates ASP to ASP.NET upgrade, Shared file Consolidation, and COM Replacements
  • Waves (new) a stand-alone graphics/mathematics application
    Illustrates upgrading advanced forms, graphics, and mathematics logic
  • vb3DDefine (new) a stand-alone graphics/mathematics application
    Illustrates upgrading advanced forms graphics and mathematics logic to C#
  • Calculator (new) a stand-alone calculator application
    Illustrates control arrays and copy/paste through the clipboard
  • StringEvaluator (new) a stand-alone arithmetic and function evaluator
    Illustrates Win32 API replacements, complex logic, and resource management
  • FileExplorer (updated) an stand-alone implements a simple directory explorer application
    Illustrates COM replacement and ActiveX controls to WinForms controls
  • ScanTool (updated) an EXE and DLL that implement a file/directory analysis application
    Illustrates VB6/COM/Win32 to .NET WinForms upgrade.

gmBasic VB6/ASP/COM Processor (V20.02.00)

  • Improves accuracy and consistency of upgraded code
  • Improves details stored in COM description files
  • Improves conditional compilation capability
  • Improves stub assembly generation

gmStudio IDE

  • Adds Visual Studio Solution File Generation feature
  • Improves project-specific metalanguage file management on Settings form
  • Improves XML handling and use read-only access as appropriate
  • Improves ScriptRule process with additional features, comments, and samples
  • Improves IDF log information in References panel
  • Adds support for using subsystem-specific deployment folder settings from template.xml file
  • Adds OLE Control interface to meta-language file vbb6control.dcl.xml
  • Improves resolution of custom translation script path
  • Improves remote registration and licensing support
  • Improves missing reference messages in .NET Build Log report
  • Adds ScriptRule to activate WPF

gmRuntime Library

  • Adds runtime library support for VB6 Graphics and Forms conventions in WinForms and WPF

Dealing with Variants in COM

Many COM APIs make extensive use of Variants and this can degrade translation quality. In fact, I was recently working on upgrading a commercial VB6 application to C# and I encountered the following error in the C# build log:

ERRNUM: CS0029: Cannot implicitly convert type 'byte' to 'byte[]'
NETSRC: ... frmAttachWindow.cs@287
bbuf = Convert.ToByte(vbuf);
ERRNUM: CS0029: Cannot implicitly convert type 'byte[]' to 'object[]'
NETSRC: ... frmAttachWindow.cs@291
vbuf = sendbuf;

Looking at the VB6 code I find this:

Dim vbuf As Variant
Dim bbuf() As Byte

and later this

vbuf = frmMain.MSComm.Input

I suspect frmMain.MSComm.Input is a member of an MSCOMM control. I look up the definition of this member in the generated interface description file (IDF) for MSCOMM and I find this:

<class id="IMSComm" parent="IDispatch" default="_CommPort">
...
<property id="Output" type="Variant" status="InOut"/>
<property id="Input" type="Variant" status="InOut"/>

And change it to this

<class id="IMSComm" parent="IDispatch" default="_CommPort">
...
<property id="Output" type="Byte[]" status="InOut"/>
<property id="Input" type="Byte[]" status="InOut"/>

I save the updated IDF in my usr folder so it will take precedence over the generated one.

I take a snapshot of the last translation, and I rerun the translation using the new IDF.

Comparing the snapshot (left) to the new results (right) shows the dramatic improvements - and the orginal C# build errors are gone.

gmStudio technology allows a migration team to modify the type information for your COM APIs. This will result in cleaner more correct translations. Modifying type information can also be used to direct the tool to replace COM components with .NET classes. See Custom COM Replacement for additional information.

09/15/2014 Major Release

gmBasic

  • Updated translation engine (V20.02B9)
  • Improved translation accuracy and correctness
  • Adding CheckMultipleTypes option for alternate processing of variants with multiple types
  • Improve logic for detecting event handlers from COM interface information
  • Improve handling of enums used in logical and mathematical expressions

gmStudio

  • Improve handling of external tool for report file viewing
  • Improve handling of external tool for file comparison viewing
  • Improve layout and content on Check for Updates form
  • Update toolbar button tooltips
  • Additional improvements in Registration and License Support
  • Correct logic that preserves user preferences in gmStudio.cfg file during product updates
  • Correct metalang script processing to read appropriate IDF folder

09/08/2014 public release

gmStudio

  • [Chg] Display appropriate icons on all message boxes
  • [Chg] Display status bar in gmStudio Plugin
  • [Fix] Prevent exception when cannot find gmAdmin (issue for plugin)
  • [Fix] Prevent exception upgrading application config file in AppData folder (Win8)

Known Issues

  • gmStudio Plugin hangs VS2013 on first run.