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;
Merlin’s Delphi Forge














Leave a comment