Archive

Posts Tagged ‘delphi 4’

How to Convert Delphi Forms to Text

December 15th, 1999 m3Rlin No comments

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 Create Multiple Directories

December 15th, 1999 m3Rlin No comments

The standard MkDir() function can create only one directory, it can not create subdirectories at one time. This function allows you to create multiple directories (directories inside directories). Delphi 4+ have the ForceDirectories() routine which does the same thing. It is declared in the FileCtrl unit.

uses
  SysUtils, FileCtrl;
...
procedure MkDirMulti(sPath: string);
begin
  if sPath[Length(sPath)] = '' then
    sPath := Copy(sPath, 1, Length(sPath - 1));

  if (Length(sPath) < 3) or DirectoryExists(sPath) then
    Exit;

  MkDirMulti(SysUtils.ExtractFilePath(sPath));
  try
    MkDir(sPath);
  except
    { Handle errors }
  end;
end;

Example: MkDirMulti(‘C:Program FilesMy GameAudioSpeech’);