How to Convert Delphi Forms to Text

You shouldn’t have too much problem opening a Delphi 4 form in Delphi 2 but you won’t have luck opening a 32 bit or C++ Builder form in Delphi 1. The only way is to save the file in text form. Delphi 5 can do this automatically but in all the previous versions you have to do this all by yourself, form by form.
This is a full featured program that will do all the work for you. The source is dumped into Public Domain.

(* DfmToTxt 1.0
**
** Author: Jacob Dybala (m3Rlin). Public Domain
**   <m3rlin@programmer.net>
**
** Created : January 2 2000
** Modified: April 12 2000
*)
program DfmToTxt; 

{$apptype console} { Generate console application }
{$debuginfo off}
{$localsymbols off}
{$optimizations on}
{$rangechecks off} 

uses
  Classes, SysUtils; 

var
  sNewFileName: string;
  strInput, strOutput: TStream;
begin
  { Initialize streams }
  strInput := nil;
  strOutput := nil; 

  { Get commandline parameters }
  if (ParamCount > 2) or (ParamCount = 0) then begin
    WriteLn('DfmToTxt 1.0');
    WriteLn('By Jacob Dybala (m3Rlin). Public Domain.');
    WriteLn;
    WriteLn('Usage: DfmToTxt <input /> <output></output>');
    Exit;
  end else if not FileExists(ParamStr(1)) then begin
    WriteLn(Format('Error: %s can not be found.', [sNewFileName]));
    Exit;
  end if ExtractFileExt(ParamStr(1) <> ‘.dfm’) then begin
    WriteLn(’Error: Input file must be a .dfm (Delphi Form) file’);
    Exit;
end; 

if ParamCount = 1 then begin
  sNewFileName := ParamStr(1);
  sNewFileName := ChangeFileExt(sNewFileName, ‘.txt’);
end else begin
  sNewFileName := ParamStr(2);
  if FileExists(sNewFileName) then begin
    WriteLn(Format(’Error: A file named %s already exists.’, [sNewFileName]));
    Exit;
  end;
end; 

{ Main code }
try
  try
    strInput := TFileStream.Create(ParamStr(1), fmOpenRead);
    strOutput := TFileStream.Create(sNewFileName, fmCreate);
  expect
    Write(’Error: Failed creating ‘);
    WriteLn(sNewFileName);
    Exit;
  end;
  ObjectResourceToText(strInput, strOutput);
  finally
    strInput.Free;
    strOutput.Free;
  end;
end;

No Comments Yet

You can be the first to comment!

Leave a comment

OpenID Login

Standard Login