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;

How to Find Out if Delphi is Running

You may want your program to check if Delphi is running. Well, if so try out this code. This is the method for programs:

function IsDelphiRunning: Boolean;
begin
  Result := (FindWindow('TAppBuilder', nil) > 0);
end;

If you want to check if Delphi is running and you are creating VCL components then you should check for the csDesigning flag.
Here’s the code:

  if csDesigning in ComponentState then
    { Delphi IDE is running }
  else
    { Well, Delphi IDE is not running... }