Update 3 of the Delphi for .NET preview is available for download

By: John Kaster

Abstract: An update containing improvements to the compiler, RTL and VCL of the Delphi for .NET preview is now available for download

Update 3 of the Delphi for .NET preview is available to registered users of purchased versions of Delphi 7.

This 14.6 Mb update includes additional new Delphi RTL and VCL units, a dfm2pas.exe that enables you to convert dfm files to pas files for the .NET framework, as well as a GUI interface for a more convenient approach to .NET application development. This accumulative update to Delphi for .NET Preview includes the previous update that was available in November of 2002.

Please note! This is a complete replacement for the earlier Delphi for .NET preview updates. Uninstall your current version of the Delphi for .NET preview before installing this one.

The readme is included below.


          Delphi for Microsoft .NET Preview
                   Release Notes


IMPORTANT: 
  Microsoft recommends that you download and install the "Critical Update to 
  MSDE 2000 for Microsoft .NET Framework SDK Users" to avoid 
  potential problems with the Slammer (W32.slammer) virus. The 
  update is available at:
  
  http://msdn.microsoft.com/netframework/downloads/updates/sdkfix/default.asp

=======================================================

This file contains important supplementary and late-
breaking information that may not appear in the main
product documentation. We recommend that you read this
file in its entirety.

=======================================================
CONTENTS

* LICENSE AND DISTRIBUTION INFORMATION
* LATE BREAKING NEWS CONCERNING .NET FRAMEWORK VERSION AND SERVICE PACKS - *UPDATED*
* SUPPORTED PLATFORMS
* PRODUCT INSTALLATION           - *UPDATED*
* NOTES AND ISSUES               - *UPDATED*
* NEW FEATURES AND KNOWN ISSUES IN THE DELPHI FOR .NET PREVIEW UPDATE
* PRODUCT INFORMATION ON THE WEB - *UPDATED*

=======================================================
LICENSE AND DISTRIBUTION INFORMATION

* LICENSE contains information on licensing allowances
  and limitations for this product and other Borland
  software that is bundled with it.

* DEPLOY contains information about redistributing your
  applications.

  The two files listed above, along with this file,
  are installed in your main product directory
  (default: C:\Program Files\Borland\Delphi for .NET Preview).
    
=======================================================
LATE BREAKING NEWS CONCERNING .NET FRAMEWORK VERSION AND SERVICE PACKS - *UPDATED*


As delivered, Delphi for .NET Preview is supported on the .NET
Framework version 1.0.3705.  If you install
any other .NET Framework version or Service Pack on your machine, you
must rebuild the Delphi for .NET Preview RTL units to synchronize with
your .NET Framework version.

Borland has included a batch file to perform the rebuild:

* Open a command prompt window, and change to your 
  Preview installation directory.
  (default: C:\Program Files\Borland\Delphi for .NET Preview)

* rebuild.bat is in the source directory under
  the Preview installation.  CD to that directory and 
  execute the command:
  
  rebuild
  
* The batch file will rebuild the precompiled units
  in the units directory. It will also copy the rebuilt
  units over to the aspx\units directory.

=======================================================
SUPPORTED PLATFORMS:

The .NET Framework SDK, and the Delphi for .NET Preview 
are supported on the following platforms:

Windows NT 4, Service pack 6a or higher.
Windows 2000 (SP2 recommended)
Windows XP Professional

The Delphi for .NET Preview will install on some platforms 
where the full .NET Framework SDK is not supported 
(Windows XP Home Edition, for example). However, 
the Delphi for .NET Preview is only supported on those
platforms where the full .NET Framework SDK is supported.

The Delphi for .NET Preview CD contains the .NET Framework SDK.
The installer will search for the SDK, and will install it
directly from the CD if necessary. If you are not installing 
the Delphi for .NET Preview from a CD, you can download 
the SDK from the MSDN website:

http://msdn.microsoft.com/netframework/downloads/howtoget.asp

Note that the .NET Runtime is sufficient to work with the
Delphi for .NET Preview

=======================================================
PRODUCT INSTALLATION: *UPDATED*

If the Delphi for .NET Preview is installed prior to the
.NET Runtime, an additional step must be performed
manually once the .NET Runtime has been installed.

After installing the .NET Runtime, you must copy the 
contents of the aspx\Framework directory to the .NET Runtime
installation directory.

The three files that must be copied from the aspx\Framework
directory are:

dccasp.exe
dccil.cfg
rescvt.dll
rlink32.dll

The destination directory is:

\Microsoft.NET\Framework\

Where:
 is your Windows installation directory.
 is v1.0.3705, for the .NET Runtime version 1.0.

The installer will copy these files for you automatically
if the .NET Runtime has already been installed.

In addition to copying these files, rescvt.dll will need to be
manually registered with the .NET Framework assembly registration
tool, regasm.exe. For example,

  regasm rescvt.dll /register
  
  
NOTE: The dccil.cfg configuration file in the 
aspx\Framework directory is used by dccasp.exe, even 
though its base name is different. The command-line 
compiler, dccil.exe, has its own configuration file
in the bin directory.


On certain systems, the Delphi for .NET Preview installer does not 
copy the files located in the aspx/Framework directory into the
.NET Runtime installation directory. To fix this problem, follow 
the procedure given above, for copying the required files 
and registering the rescvt.dll assembly.


If the Microsoft .NET Framework SDK is installed during 
the Delphi for .NET Preview installation process, you will
see a warning that the .NET utility regasm.exe was not found.
In this case, you will have to register rescvt.dll by hand. 
Please follow the directions given above, to run the
regasm utility.
 
=======================================================
NOTES AND ISSUES - *UPDATED* 

This release of the Delphi for .NET Preview compiler and 
RTL will not be installed with the main Delphi 7 product, and 
it is not meant for use in production applications.

The following are the RTL units included with the Preview:

Included RTL Units
-------------------------
Borland.Data.FMTBcd.pas
Borland.Data.SqlTimSt.pas 
Borland.Delphi.Classes.pas
Borland.Delphi.Contnrs.pas
Borland.Delphi.ConvUtils.pas
Borland.Delphi.DateUtils.pas
Borland.Delphi.HelpIntfs.pas
Borland.Delphi.IniFiles.pas
Borland.Delphi.Masks.pas
Borland.Delphi.MaskUtils.pas
Borland.Delphi.Math.pas
Borland.Delphi.Registry.pas
Borland.Delphi.StdConvs.pas
Borland.Delphi.StrUtils.pas
Borland.Delphi.SyncObjs.pas
Borland.Delphi.System.pas
Borland.Delphi.SysUtils.pas
Borland.Delphi.Types.pas
Borland.Delphi.TypInfo.pas
Borland.Delphi.VarConv.pas
Borland.Delphi.Variants.pas
Borland.Delphi.Contnrs.pas
Borland.Win32.ActiveX.pas
Borland.Win32.CommCtrl.pas
Borland.Win32.CommDlg.pas
Borland.Win32.Dlgs.pas
Borland.Win32.Imm.pas
Borland.Win32.Mapi.pas
Borland.Win32.Messages.pas
Borland.Win32.MMSystem.pas
Borland.Win32.MultiMon.pas
Borland.Win32.RichEdit.pas
Borland.Win32.ShellAPI.pas
Borland.Win32.UxTheme.pas
Borland.Win32.Windows.pas
Borland.Win32.WinSpool.pas
Borland.Win32.WinSvc.pas
Borland.Win32.WinUtils.pas


The following are the VCL units included with the Preview:

Included VCL Units
-------------------------
Borland.Vcl.ActnList.pas
Borland.Vcl.ActnMan.ActnMan.pas
Borland.Vcl.ActnMan.ActnColorMaps.pas
Borland.Vcl.ActnMan.ActnCtrls.pas
Borland.Vcl.ActnMan.ActnMenus.pas
Borland.Vcl.ActnMan.ActnPopup.pas
Borland.Vcl.ActnMan.BandActn.pas
Borland.Vcl.ActnMan.CustomizeDlg.pas
Borland.Vcl.ActnMan.ShadowWnd.pas
Borland.Vcl.ActnMan.StdActnMenus.pas
Borland.Vcl.ActnMan.StdStyleActnCtrls.pas
Borland.Vcl.ActnMan.XPActnCtrls.pas
Borland.Vcl.ActnMan.XPStyleActnCtrls.pas
Borland.Vcl.Buttons.pas
Borland.Vcl.CheckLst.pas
Borland.Vcl.Clipbrd.pas
Borland.Vcl.ColorGrd.pas
Borland.Vcl.ComCtrls.pas
Borland.Vcl.Controls.pas
Borland.Vcl.Dialogs.pas
Borland.Vcl.ExtActns.pas
Borland.Vcl.ExtCtrls.pas
Borland.Vcl.ExtDlgs.pas
Borland.Vcl.FileCtrl.pas
Borland.Vcl.Forms.pas
Borland.Vcl.Graphics.pas
Borland.Vcl.GraphUtil.pas
Borland.Vcl.Grids.pas
Borland.Vcl.ImgList.pas
Borland.Vcl.ListActns.pas
Borland.Vcl.Mask.pas
Borland.Vcl.Menus.pas
Borland.Vcl.MPlayer.pas
Borland.Vcl.Printers.pas
Borland.Vcl.StdActns.pas
Borland.Vcl.StdCtrls.pas
Borland.Vcl.Themes.pas
Borland.Vcl.TabNotBk.pas
Borland.Vcl.Tabs.pas
Borland.Vcl.ToolWIn.pas
Borland.Vcl.ValEdit.pas

Note that experimental units are marked with the new "experimental"
compiler directive. Experimental units should be considered highly
unstable and will change in future updates.

Moreover, keep in mind that this is a preview release, and even units
not marked as experimental are subject to change prior to shipping the
final product. You should be careful not to introduce dependencies on
the implementation of any of the units shipped with this release.

More units are scheduled to appear in the actual Delphi for .NET
Preview product release.

Please look in the Doc directory for additional information. The HTML
document "Welcome.htm" gives an overview of .NET, CLR, the framework
and how Delphi fits into the architecture. The "GettingStarted.htm"
document gives information on the directory structure and basic
compiler tips.

Due to the nature of .NET's JIT compilation it is important that you
actually make calls to each method you use to see if it is functioning
properly. The Welcome.htm file discusses some of the issues related to
JIT compilation.

=======================================================
NEW FEATURES AND KNOWN ISSUES IN THE DELPHI FOR .NET PREVIEW UPDATE


** VCL Units **

- Some VCL units have been added to the Delphi for .NET Preview
  update. The following are issues related directly to the VCL:

  - TApplication.CreateForm has not been implemented yet. 
    You must explicitly create the form and assign it to
    Application.MainForm, as follows:

      Application.Initialize;        // As before
      Form1 := TForm1.Create(nil);   // New
      Form1.Position := poDefault;   // New
      Application.MainForm := Form1; // New
      Application.Run;               // As before

      NOTE: Application.MainForm has been changed to a read/write
            property to allow this. When CreateForm is implemented,
            Application.MainForm will revert to a read-only property.


  - The first statement in a component's initialization must be 
    the Parent assignment:

      with ComboBox1 do
      begin
         Parent := Self;
         Top    := 25;
         // More initialization of ComboBox1...
      end;

  - Assignments to ActiveControl should be done at the end of 
    form initialization:

      TForm1.Create(AOwner : TComponent)
      begin
         inherited;
         Color  := clBtnFace;
         Label1 := TLabel.Create(Self);
         with Label1 do
         begin
            Parent := Self;
            // Initialize Label1...
         end;

         // More initialization code...
         // ...

         ActiveControl := Label1;
      end;


  - TBitBtn is not fully implemented, and should not be used.

  - The following classes and methods from Borland.Vcl.Graphics
    are unsupported in this release:

    - TBitmap.Mask method
    - TCanvas.BrushCopy method
    - TMetafile class
    - TIcon class
    - Palettes

  - Transparent images are not yet fully supported by the TImageList 
    class. 

  - Adding help to your application is not supported yet.

  - The BeforeDestruction and AfterConstruction methods are gone.
    One consequence is that the OnCreate and OnDestroy events of 
    form objects can only occur in the constructor and destructor,
    as they did when OldCreateOrder was set to True. Because there
    is only one option, the OldCreateOrder property has been removed.

  - The Borland.Vcl.Clipbrd unit uses the CLR implementation of the
    clipboard. This makes use of the COM interoperability layer, which
    requires a STA threading style. If you use the Clipbrd unit, add the
    attribute [System.STAThreadAttribute] before the begin statement in
    the project file.

  - The Borland.Vcl.Clipboard unit does not yet support assigning a graphic
    to the clipboard.

  - The ExtDlgs do not work yet, because support for linking Win32 resources 
    has not been implemented. The Borland.Vcl.ExtDlgs unit is included 
    only for build dependencies.

  - TComboBoxEx is not functional yet.
  
  - The actions in the Borland.Vcl.ExtActns unit all function except for
    TOpenPicture, TSavePicture, and TDownLoadURL.
    
  - TRichEdit has been upgraded from RichEdit1 to RichEdit2.   

  The Demos\VCL\Shape directory under the product installation contains 
  a demonstration of using the VCL with the Delphi for .NET Preview.


** Language and Compiler: Known Issues and New Features - UPDATED **

- New visibility specifiers: "strict private" and "strict protected" 
  are added to support CLR private and protected scope. Note these 
  were formerly called "class private" and "class protected" in 
  previous releases of the Delphi for .NET Preview compiler.
  See the file LanguageChanges.htm for more information. 

- New syntax for introducing a block of static fields within
  a class declaration. See the file LanguageChanges.htm for more information
  on the new "class var" syntax.
  
- Class static methods, class properties and fields, and class
  constructors are added. Note the syntax for declaring a 
  class static method has changed. See the file LanguageChanges.htm for more
  information on these new scope specifiers.

- The compiler now emits resourcestrings as translatable resources,
  instead of simple constants. The resources are emitted into the output
  assembly in the .NET .resource format. The .NET Resource Manager
  is used to locate resource strings at runtime.
  
- Known issues with constructors:

  - In your Create method, you must call the inherited constructor
    first, before making any assignments to class members.

      constructor TMyClass.Create;
      begin
        inherited Create;  // This must be first.
        // Now you can assign to class members.
      end;
      
    The CLR requires that the ancestor be initialized before accessing
    any instance fields.

  - When calling the inherited constructor of a CLR base class, call
    inherited, not inherited Create.

      constructor TMyClass.Create;
      begin
        inherited; // Call inherited when your base
                   // is a CLR class.
        
      end;

  - When a constructor in a base class is hidden by a constructor having a
    different signature in a derived class, the compiler will not produce an 
    error if you call the constructor matching the signature in the base class.
    Instead, the compiler will generate code to call the constructor of the 
    base class.

      type
      TBase = class
      public
        constructor Create;
      end;

      TDerived = class(TBase)
      public
        constructor Create(X: Integer);
      end;

      var
        d : TDerived;

      begin
         d := TDerived.Create; // This produced a compiler error with dcc32.
                               // It will not produce an error with dccil. 
                               // TBase.Create will be called instead.
         // ...
      end.

    This issue will be resolved in a future release of the compiler.

- Lvalue casting in assignment statements is - by design - no longer allowed. 
  You can cast an rvalue, but not an lvalue.

    var
      w : Word;
      i : Integer;

    begin
        w       := 1;
        Word(i) := w;          // No longer allowed by the compiler.
        i       := Integer(w); // OK.
    end.


- Pascal file handling routines such as AssignFile, Reset, Rename,
  Erase, etc.) are not implemented.
     
- Debugging in the Microsoft Debugger is supported (see
  Doc\GettingStarted.htm), however, the source line numbers shown in the
  debugger might not always match the actual execution position.
  
- Equality comparisons between types do not always evaluate correctly.
  The following code should output "yes", but does not:
    
    var
        classRef: TClass;
    begin
        classRef := TMyClass;
        if classRef = TMyClass then
             writeln('yes');
    end;
   
- Named virtual constructors in class helpers are not implemented yet.
   
- Variant method call support is not implemented yet.  
   
- Calling a procedure declared in another unit and which has default
  parameters can cause "WrSymRef" failures when writing the unit to
  disk.  To work around this issue, pass values for all of the
  parameters, including the default parameters, when calling such
  procedures.
   
- The compiler logic to detect changes in the .NET Framework
  installation and rebuild all affected units is not complete.

- You no longer have to rebuild the Borland.Delphi.System unit 
  to import CLR namespaces. When a Delphi source file refers to a
  namespace with no corresponding dcuil file, the compiler will
  attempt to import that namespace from the list of assemblies 
  specified with the -lu command-line option.

- You no longer have to list every referenced assembly in the 
  -lu command-line option. When the compiler imports a 
  CLR assembly, and that assembly references another assembly,
  the compiler will import the referenced assembly automatically.

  For example, if your application uses assembly X, and assembly X
  references assembly Y, you only need to specify assembly X 
  at the command line:

  dccil -m MyApp.pas -luX

  Previous releases of the Preview compiler required that both
  assemblies be specified.

- The compiler now searches for referenced assemblies on the unit search path,
  followed by the CLR framework directory.  The compiler no longer 
  searches the system path for assemblies.

- You can use a full path (including file extension) in the -lu command line
  option to specify an assembly that does not reside on the unit search path
  or in the CLR framework directory.

- Class method support in class helpers.

- Class references are now polymorphic (class reference type is
  determined by the type of the runtime instance, not the type of the
  variable).

- DCUs now record and check the file times of assemblies they reference.

- New compiler keywords: sealed (prevents creation of descendant
  classes) and final (prevents descendants from overriding a 
  virtual method).

- Untyped var, out, and const parameters are supported. See the file
  LanguageChanges.htm for more information.

- Virtual constructors and virtual named constructors have been implemented.
 
- Multiple inheritance of interfaces has been implemented.
 
- The Variant type and variant operations have been implemented.
 
- Type reference syntax (type of Interface) has been implemented.
 
- Nested procedures have been implemented.
 
- Resource linking of .NET binary resources: {$R filename.resource}
  has been implemented. Note that linking of Win32 .RES resources
  (DFMs) is not yet implemented.
 
- Improvements have been made to property getter and setter
  generation, and support for property declarations in interfaces.

** Documentation **

- This release of the Delphi for .NET Preview contains a
  draft copy of the Delphi for .NET Language Guide in PDF
  format. The HTML documentation has been folded into the book,
  however, the Language Guide is still very much a work-in-progress,
  and is subject to change prior to the final product release.
  
=======================================================
PRODUCT INFORMATION ON THE WEB - *UPDATED*

The following Borland Web-based resources provide a 
continuous stream of news, product information, updates, 
code, and other materials.


Code Central
------------

The CodeCentral Repository is a free, searchable
database of code, tips, and other materials of interest
to developers. For details and registration
information, visit

 http://codecentral.borland.com/


The Borland Web site
--------------------

Borland Software Corporation home page:
  http://www.borland.com

Sample Delphi for .NET Applications, including ASP.NET:
  http://dotnet.borland.com

Borland Developer Network articles relating to Delphi and .NET:
  http://bdn.borland.com/delphi/platforms/dotnet

Delphi home page:
  http://www.borland.com/delphi/

Delphi developer support and updates:
  http://www.borland.com/devsupport/delphi/

Delphi 5 and previous updates:
  http://www.borland.com/devsupport/delphi/downloads/

Delphi documentation site:
  http://www.borland.com/techpubs/delphi

Newsgroup:
  news://newsgroups.borland.com/borland.public.delphi.netPreview.non-technical

Worldwide offices and distributors:
  http://www.borland.com/bww/

FTP site (anonymous access):
  ftp://ftp.borland.com


=======================================================
Copyright © 2003 Borland Software Corporation.
All rights reserved.

Server Response from: ETNASC03