はじめに
Delphi 25 周年記念で、Delphi 1.0 Client/Server がアンティークソフトウェアとして無償公開されたのでこれをインストールして試した記事を書きました。
そちらにも書いたのですが、Delphi 1.0 は 16bit アプリケーションなので 64bit Windows にはインストールできません。
winevdm on 64-bit Windows (OTVDM)
このソフトウェアは winevdm(16bit Windows エミュレータ)の 64bit Windows 版です。64bit Windows 上で 16bit Windows アプリケーションを実行する事ができます。
OTVDM のインストール方法
最新版を以下から持ってきます。
-
[Job name] リストのいずれかをクリック。私は上を選択しました。
-
[Artifacts] タブを選択。
-
アーカイブを解凍したら名前を
OTVDM
に変更してC:\
へ移動。つまりC:\OTVDM
フォルダができる事になります。 -
C:\OTVDM
フォルダに移動、install.inf
を Explorer で右クリックして [インストール]。
これでインストール完了です。
Delphi 1.0 Client/Server
まずは Delphi 1.0 をダウンロードしてアーカイブを解凍します。解凍した先を $(SOURCE)
とします。
$(SOURCE)\INSTALL
フォルダにある インストーラは動作しないので $(SOURCE)\RUNIMAGE
フォルダの中身をコピーしてセットアップします。
ファイルコピー
- フォルダが取っ散らかるので
C:\WIN16
フォルダを作成します。 -
$(SOURCE)\RUNIMAGE
フォルダのWINDOWS
サブフォルダ以外をC:\WIN16
へコピーします。
-
$(SOURCE)\RUNIMAGE
フォルダのWINDOWS
サブフォルダをC:\OTVDM
へコピーします (WINDOWS フォルダは既に存在するので上書きする形になります)。
環境変数 PATH の設定
Windows の環境変数に PATH16
を追加します。これが OTVDM で参照されるパスとなります。
システム環境変数の変更を行う [システムのプロパティ | 詳細設定]
は [ファイル名を指定して実行]
(〔Win〕+〔R〕) から SystemPropertiesAdvanced
で開けます。
環境変数 PATH16
の値は C:\;C:\WINDOWS;C:\WIN16\IBLOCAL\BIN;C:\WIN16\IDAPI;
です。
環境設定ファイルの作成
C:\OTVDM\WINDOWS
に 9 つのファイルを作成します。
[Library]
SearchPath=C:\WIN16\DELPHI\LIB
ComponentLibrary=C:\WIN16\DELPHI\BIN\COMPLIB.DCL
[Gallery]
BaseDir=C:\WIN16\DELPHI\GALLERY
[Experts]
ExptDemo=C:\WIN16\DELPHI\BIN\EXPTDEMO.DLL
[ReportSmith]
ExePath=C:\WIN16\RPTSMITH
[Transfer]
Count=4
Title0=ReportSmith
Path0=RPTSMITH.EXE
WorkingDir0=C:\WIN16\RPTSMITH
Params0=
Title1=Image Editor
Path1=IMAGEDIT.EXE
WorkingDir1=
Params1=
Title2=Database Desktop
Path2=DBD.EXE
WorkingDir2=C:\WIN16\DBD
Params2=
Title3=BDE Config
Path3=BDECFG.EXE
WorkingDir3=C:\WIN16\IDAPI
Params3=
[Session]
Project=
[ODBC Data Sources]
InterBase=Borland Interbase
RS_Btrieve=Btrieve Data (file.ddf)
RS_MS_Access=Access Data (*.mdb)
RS_dBASE=dBase Files (*.dbf)
RS_Excel=Excel Files (*.xls)
RS_FoxPro=FoxPro Files (*.dbf)
RS_Paradox=Q+E ParadoxFile
RS_Text=Text Files (*.txt; *.csv)
[InterBase]
Driver=C:\WINDOWS\SYSTEM\BLINT04.DLL
Workarounds=29
[RS_Btrieve]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=Btrieve
SingleUser=False
[RS_MS_Access]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=RedISAM
SingleUser=False
UseSystemDB=False
[RS_dBASE]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=dBase4
SingleUser=False
DataDirectory=C:\WIN16\RPTSMITH\video
[RS_Excel]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=Excel
MaxScanRows=200
[RS_FoxPro]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=FoxPro 2.5
SingleUser=False
DataDirectory=C:\WIN16\RPTSMITH\video
[RS_Paradox]
Driver=C:\WINDOWS\SYSTEM\BIPDX04.DLL
TableVersion=4
SortOrder=ASCII
ReadConsistency=0
LockReadBlob=0
IntlSort=0
Database=C:\WIN16\RPTSMITH\video
[RS_Text]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
FileType=Text
ColNameHeader=False
Format=CSVDelimited
MaxScanRows=25
CharacterSet=OEM
[ODBC Drivers]
Borland InterBase=Installed
dBase Files (*.dbf)=Installed
Text Files (*.txt; *.csv)=Installed
Q+E ParadoxFile=Installed
Excel Files (*.xls)=Installed
FoxPro Files (*.dbf)=Installed
Btrieve Files (file.ddf)=Installed
Btrieve Data (file.ddf)=Installed
Access Files (*.mdb)=Installed
Access Data (*.mdb)=Installed
[Borland InterBase]
Driver=C:\WINDOWS\SYSTEM\BLINT04.DLL
Setup=C:\WINDOWS\SYSTEM\BLINT04.DLL
[dBase Files (*.dbf)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Text Files (*.txt; *.csv)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Q+E ParadoxFile]
Driver=C:\WINDOWS\SYSTEM\BIPDX04.DLL
Setup=C:\WINDOWS\SYSTEM\BIPDX04.DLL
[Excel Files (*.xls)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[FoxPro Files (*.dbf)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Btrieve Files (file.ddf)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Btrieve Data (file.ddf)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Access Files (*.mdb)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Access Data (*.mdb)]
Driver=C:\WINDOWS\SYSTEM\SIMBA.DLL
Setup=C:\WINDOWS\SYSTEM\SIMADMIN.DLL
[Installable ISAMS]
RedISAM=red110.dll
Btrieve=btrv110.dll
dBase4=xbs110.dll
FoxPro 2.5=xbs110.dll
Excel=xlsisam.dll
Text=txtisam.dll
[Red ISAM]
MaxBufferSize=512
NetworkAccess=On
PageTimeout=600
[Btrieve ISAM]
CollatingSequence=ASCII
NetworkAccess=On
PageTimeout=600
[dBase ISAM]
CollatingSequence=ASCII
Deleted=On
Statistics=Truth
NetworkAccess=On
PageTimeout=600
[ReportSmith]
ReportOpenLastUsedDirectory=C:\WIN16\RPTSMITH\video
X=66
Y=87
Width=960
Height=787
Style=0
[OptionsSection]
StartupTask=0
NewTask=0
FontEnumMode=2
[MACRO]
MacroPath=C:\WIN16\RPTSMITH\macros
BinaryPath=C:\WIN16\RPTSMITH\macros
[OptionsSection]
StartupTask=2
NewTask=0
FontEnumMode=2
[MACRO]
MacroPath=C:\WIN16\RS_RUN\macros
BinaryPath=C:\WIN16\RS_RUN\macros
[RS_Runtime]
ExePath=C:\WIN16\RS_RUN
[dBase Files (*.dbf)]
IsLocal=1
CountStarSupport=1
OpListType=1
OpGrpDCount=4
OpGrpWCount=1
OpGrp1Title="Comparison operators:"
OpGrp1Count=2
OpGrp1Item1Disp="x IN (a, b, c, ...)"
OpGrp1Item1Text=" IN (\r) \n"
OpGrp1Item2Disp="x NOT IN (a, b, c, ...)"
OpGrp1Item2Text=" NOT IN (\r) \n"
OpGrp2Title="Patterns, ranges and lists:"
OpGrp2Count=2
OpGrp2Item1Disp="x BETWEEN y AND z"
OpGrp2Item1Text=" BETWEEN \n AND "
OpGrp2Item2Disp="x NOT BETWEEN y AND z"
OpGrp2Item2Text=" NOT BETWEEN \n AND "
OpGrp3Title="Constants:"
OpGrp3Count=1
OpGrp3Item1Disp="'YYYY-MM-DD' - date"
OpGrp3Item1Text=" '\n' "
OpGrp4Title="Summary functions:"
OpGrp4Count=6
OpGrp4Item1Disp="AVG(col) - Average of column or column expression"
OpGrp4Item1Text=" AVG(\r) \n"
OpGrp4Item2Disp="COUNT(*) - Count of rows"
OpGrp4Item2Text=" COUNT(*) \n"
OpGrp4Item3Disp="COUNT(col) - Count of rows"
OpGrp4Item3Text=" COUNT(\r) \n"
OpGrp4Item4Disp="MAX(col) - Maximum value of column or column expression"
OpGrp4Item4Text=" MAX(\r) \n"
OpGrp4Item5Disp="MIN(col) - Minimum value of column or column expression"
OpGrp4Item5Text=" MIN(\r) \n"
OpGrp4Item6Disp="SUM(col) - Sum of column or column expression"
OpGrp4Item6Text=" SUM(\r) \n"
OpGrp5Title="SQL statement keywords:"
OpGrp5Count=2
OpGrp5Item1Disp="GROUP BY colexp1, colexp2... - Group and summarize results"
OpGrp5Item1Text=" GROUP BY \n"
OpGrp5Item2Disp="HAVING expr - Additional selection criteria for groups"
OpGrp5Item2Text=" HAVING \n"
;FnListType=1
FnGrpCount=1
FnGrp1Count=1
FnGrp1Title="String functions:"
FnGrp1Item1Disp="CONVERT(col,data type) - Conversion of column into specified data type"
FnGrp1Item1Text=" {fn CONVERT(\r,\n)}"
[Btrieve Data (file.ddf)]
IsLocal=1
CountStarSupport=1
OpListType=1
OpGrpDCount=3
OpGrpWCount=2
OpGrp1Title="Comparison operators:"
OpGrp1Count=2
OpGrp1Item1Disp="x IN (a, b, c, ...)"
OpGrp1Item1Text=" IN (\r) \n"
OpGrp1Item2Disp="x NOT IN (a, b, c, ...)"
OpGrp1Item2Text=" NOT IN (\r) \n"
OpGrp2Title="Patterns, ranges and lists:"
OpGrp2Count=2
OpGrp2Item1Disp="x BETWEEN y AND z"
OpGrp2Item1Text=" BETWEEN \n AND "
OpGrp2Item2Disp="x NOT BETWEEN y AND z"
OpGrp2Item2Text=" NOT BETWEEN \n AND "
OpGrp3Title="Constants:"
OpGrp3Count=1
OpGrp3Item1Disp="'YYYY-MM-DD' - date"
OpGrp3Item1Text=" '\n' "
OpGrp4Title="SQL statement keywords:"
OpGrp4Count=2
OpGrp4Item1Disp="GROUP BY colexp1, colexp2... - Group and summarize results"
OpGrp4Item1Text=" GROUP BY \n"
OpGrp4Item2Disp="HAVING expr - Additional selection criteria for groups"
OpGrp4Item2Text=" HAVING \n"
OpGrp5Title="Summary functions:"
OpGrp5Count=6
OpGrp5Item1Disp="AVG(col) - Average of column or column expression"
OpGrp5Item1Text=" AVG(\r) \n"
OpGrp5Item2Disp="COUNT(*) - Count of rows"
OpGrp5Item2Text=" COUNT(*) \n"
OpGrp5Item3Disp="COUNT(col) - Count of rows"
OpGrp5Item3Text=" COUNT(\r) \n"
OpGrp5Item4Disp="MAX(col) - Maximum value of column or column expression"
OpGrp5Item4Text=" MAX(\r) \n"
OpGrp5Item5Disp="MIN(col) - Minimum value of column or column expression"
OpGrp5Item5Text=" MIN(\r) \n"
OpGrp5Item6Disp="SUM(col) - Sum of column or column expression"
OpGrp5Item6Text=" SUM(\r) \n"
;FnListType=1
FnGrpCount=1
FnGrp1Count=1
FnGrp1Title="String functions:"
FnGrp1Item1Disp="CONVERT(col,data type) - Conversion of column into specified data type"
FnGrp1Item1Text=" {fn CONVERT(\r,\n)}"
[Excel Files (*.xls)]
IsLocal=1
CountStarSupport=1
OpListType=1
OpGrpDCount=3
OpGrpWCount=2
OpGrp1Title="Comparison operators:"
OpGrp1Count=2
OpGrp1Item1Disp="x IN (a, b, c, ...)"
OpGrp1Item1Text=" IN (\r) \n"
OpGrp1Item2Disp="x NOT IN (a, b, c, ...)"
OpGrp1Item2Text=" NOT IN (\r) \n"
OpGrp2Title="Patterns, ranges and lists:"
OpGrp2Count=2
OpGrp2Item1Disp="x BETWEEN y AND z"
OpGrp2Item1Text=" BETWEEN \n AND "
OpGrp2Item2Disp="x NOT BETWEEN y AND z"
OpGrp2Item2Text=" NOT BETWEEN \n AND "
OpGrp3Title="Constants:"
OpGrp3Count=1
OpGrp3Item1Disp="'YYYY-MM-DD' - date"
OpGrp3Item1Text=" '\n' "
OpGrp4Title="SQL statement keywords:"
OpGrp4Count=2
OpGrp4Item1Disp="GROUP BY colexp1, colexp2... - Group and summarize results"
OpGrp4Item1Text=" GROUP BY \n"
OpGrp4Item2Disp="HAVING expr - Additional selection criteria for groups"
OpGrp4Item2Text=" HAVING \n"
OpGrp5Title="Summary functions:"
OpGrp5Count=6
OpGrp5Item1Disp="AVG(col) - Average of column or column expression"
OpGrp5Item1Text=" AVG(\r) \n"
OpGrp5Item2Disp="COUNT(*) - Count of rows"
OpGrp5Item2Text=" COUNT(*) \n"
OpGrp5Item3Disp="COUNT(col) - Count of rows"
OpGrp5Item3Text=" COUNT(\r) \n"
OpGrp5Item4Disp="MAX(col) - Maximum value of column or column expression"
OpGrp5Item4Text=" MAX(\r) \n"
OpGrp5Item5Disp="MIN(col) - Minimum value of column or column expression"
OpGrp5Item5Text=" MIN(\r) \n"
OpGrp5Item6Disp="SUM(col) - Sum of column or column expression"
OpGrp5Item6Text=" SUM(\r) \n"
;FnListType=1
FnGrpCount=1
FnGrp1Count=1
FnGrp1Title="String functions:"
FnGrp1Item1Disp="CONVERT(col,data type) - Conversion of column into specified data type"
FnGrp1Item1Text=" {fn CONVERT(\r,\n)}"
[Paradox Files (*.db )]
IsLocal=1
CountStarSupport=1
SQLExecReturnsQualifiedNames=0
OpListType=1
OpGrpDCount=3
OpGrpWCount=2
OpGrp1Title="Comparison operators:"
OpGrp1Count=2
OpGrp1Item1Disp="x IN (a, b, c, ...)"
OpGrp1Item1Text=" IN (\r) \n"
OpGrp1Item2Disp="x NOT IN (a, b, c, ...)"
OpGrp1Item2Text=" NOT IN (\r) \n"
OpGrp2Title="Patterns, ranges and lists:"
OpGrp2Count=2
OpGrp2Item1Disp="x BETWEEN y AND z"
OpGrp2Item1Text=" BETWEEN \n AND "
OpGrp2Item2Disp="x NOT BETWEEN y AND z"
OpGrp2Item2Text=" NOT BETWEEN \n AND "
OpGrp3Title="Constants:"
OpGrp3Count=1
OpGrp3Item1Disp="'YYYY-MM-DD' - date"
OpGrp3Item1Text=" '\n' "
OpGrp4Title="SQL statement keywords:"
OpGrp4Count=2
OpGrp4Item1Disp="GROUP BY colexp1, colexp2... - Group and summarize results"
OpGrp4Item1Text=" GROUP BY \n"
OpGrp4Item2Disp="HAVING expr - Additional selection criteria for groups"
OpGrp4Item2Text=" HAVING \n"
OpGrp5Title="Summary functions:"
OpGrp5Count=6
OpGrp5Item1Disp="AVG(col) - Average of column or column expression"
OpGrp5Item1Text=" AVG(\r) \n"
OpGrp5Item2Disp="COUNT(*) - Count of rows"
OpGrp5Item2Text=" COUNT(*) \n"
OpGrp5Item3Disp="COUNT(col) - Count of rows"
OpGrp5Item3Text=" COUNT(\r) \n"
OpGrp5Item4Disp="MAX(col) - Maximum value of column or column expression"
OpGrp5Item4Text=" MAX(\r) \n"
OpGrp5Item5Disp="MIN(col) - Minimum value of column or column expression"
OpGrp5Item5Text=" MIN(\r) \n"
OpGrp5Item6Disp="SUM(col) - Sum of column or column expression"
OpGrp5Item6Text=" SUM(\r) \n"
;FnListType=1
FnGrpCount=1
FnGrp1Count=1
FnGrp1Title="String functions:"
FnGrp1Item1Disp="CONVERT(col,data type) - Conversion of column into specified data type"
FnGrp1Item1Text=" {fn CONVERT(\r,\n)}"
[FoxPro Files (*.dbf)]
IsLocal=1
CountStarSupport=1
OpListType=1
OpGrpDCount=3
OpGrpWCount=2
OpGrp1Title="Comparison operators:"
OpGrp1Count=2
OpGrp1Item1Disp="x IN (a, b, c, ...)"
OpGrp1Item1Text=" IN (\r) \n"
OpGrp1Item2Disp="x NOT IN (a, b, c, ...)"
OpGrp1Item2Text=" NOT IN (\r) \n"
OpGrp2Title="Patterns, ranges and lists:"
OpGrp2Count=2
OpGrp2Item1Disp="x BETWEEN y AND z"
OpGrp2Item1Text=" BETWEEN \n AND "
OpGrp2Item2Disp="x NOT BETWEEN y AND z"
OpGrp2Item2Text=" NOT BETWEEN \n AND "
OpGrp3Title="Constants:"
OpGrp3Count=1
OpGrp3Item1Disp="'YYYY-MM-DD' - date"
OpGrp3Item1Text=" '\n' "
OpGrp4Title="SQL statement keywords:"
OpGrp4Count=2
OpGrp4Item1Disp="GROUP BY colexp1, colexp2... - Group and summarize results"
OpGrp4Item1Text=" GROUP BY \n"
OpGrp4Item2Disp="HAVING expr - Additional selection criteria for groups"
OpGrp4Item2Text=" HAVING \n"
OpGrp5Title="Summary functions:"
OpGrp5Count=6
OpGrp5Item1Disp="AVG(col) - Average of column or column expression"
OpGrp5Item1Text=" AVG(\r) \n"
OpGrp5Item2Disp="COUNT(*) - Count of rows"
OpGrp5Item2Text=" COUNT(*) \n"
OpGrp5Item3Disp="COUNT(col) - Count of rows"
OpGrp5Item3Text=" COUNT(\r) \n"
OpGrp5Item4Disp="MAX(col) - Maximum value of column or column expression"
OpGrp5Item4Text=" MAX(\r) \n"
OpGrp5Item5Disp="MIN(col) - Minimum value of column or column expression"
OpGrp5Item5Text=" MIN(\r) \n"
OpGrp5Item6Disp="SUM(col) - Sum of column or column expression"
OpGrp5Item6Text=" SUM(\r) \n"
;FnListType=1
FnGrpCount=1
FnGrp1Count=1
FnGrp1Title="String functions:"
FnGrp1Item1Disp="CONVERT(col,data type) - Conversion of column into specified data type"
FnGrp1Item1Text=" {fn CONVERT(\r,\n)}"
[WATCOM SQL]
FnListType=2
CountStarSupport=1
QuoteODBCOuterJoin=1
QuoteAlias=1
[ShowCase ODBC]
FnListType=2
CountStarSupport=1
[ShowCase ODBC - VISTA]
FnListType=2
CountStarSupport=1
[ShowCase ODBC - ReadOnly]
FnListType=2
CountStarSupport=1
[Q+E ParadoxFile]
IsLocal=1
CountStarSupport=1
SQLExecReturnsQualifiedNames=0
QuoteFromList=0
OuterJoinSyntax=1
OuterJoinText="*"
OuterJoinSupport="LRM"
QuoteAlias=1
[RDS]
HasOwners=0
CountStarSupport=1
OuterJoinSyntax=1
OuterJoinSupport="LR"
OuterJoinText="*"
;DBInFullColumnName=0
;SortExprSupport=0
;DateFormat=""date '"yyyy-mm-dd"'""
;TimeFormat=""time '"hh:mm:ss"'""
[Velocis Standalone]
HasOwners=0
CountStarSupport=1
[Velocis]
HasOwners=0
CountStarSupport=1
[Lotus Notes]
CountStarSupport=1
SQLExecReturnsQualifiedNames=0
TableTypes=
[Microsoft Btrieve Driver (file.ddf)]
QuoteFromList=0
IsLocal=1
HasDatabases=0
IDQuote=
[Microsoft Dbase Driver (*.dbf)]
IDQuote=
[Microsoft Excel Driver (*.xls)]
IDQuote=
[Microsoft FoxPro Driver (*.dbf)]
IDQuote=
[Microsoft Text Driver (*.txt; *.csv)]
QuoteFromList=0
IDQuote=
[Microsoft Access Driver (*.mdb)]
QuoteFromList=0
HasDatabases=0
[Microsoft Paradox Driver (*.db )]
QuoteFromList=0
SQLExecReturnsQualifiedNames=0
IDQuote=
[Microsoft Btrieve Driver (file.ddf) (32 bit)]
QuoteFromList=0
IsLocal=1
HasDatabases=0
IDQuote=
[Microsoft dBase Driver (*.dbf) (32 bit)]
IDQuote=
[Microsoft Excel Driver (*.xls) (32 bit)]
IDQuote=
[Microsoft FoxPro Driver (*.dbf) (32 bit)]
IDQuote=
[Microsoft Text Driver (*.txt; *.csv) (32 bit)]
QuoteFromList=0
IDQuote=
[Microsoft Access Driver (*.mdb) (32 bit)]
QuoteFromList=0
HasDatabases=0
[Microsoft Paradox Driver (*.db ) (32 bit)]
QuoteFromList=0
SQLExecReturnsQualifiedNames=0
IDQuote=
[Files]
DELPHI.HLP=C:\WIN16\DELPHI\BIN
WINAPI.HLP=C:\WIN16\DELPHI\BIN
CWG.HLP=C:\WIN16\DELPHI\BIN
CWH.HLP=C:\WIN16\DELPHI\BIN
LOCALSQL.HLP=C:\WIN16\DELPHI\BIN
VQB.HLP=C:\WIN16\DELPHI\BIN
SQLREF.HLP=C:\WIN16\IBLOCAL\BIN
WISQL.HLP=C:\WIN16\IBLOCAL\BIN
BDECFG.HLP=C:\WIN16\IDAPI
RPTSMITH.HLP=C:\WIN16\RPTSMITH
RS_DD.HLP=C:\WIN16\RPTSMITH
SBL.HLP=C:\WIN16\RPTSMITH
RS_RUN.HLP=C:\WIN16\RPTSMITH
DBD.HLP=C:\WIN16\DBD
[Index Path]
DELPHI.HLP=C:\WIN16\DELPHI\BIN
WINAPI.HLP=C:\WIN16\DELPHI\BIN
CWG.HLP=C:\WIN16\DELPHI\BIN
CWH.HLP=C:\WIN16\DELPHI\BIN
LOCALSQL.HLP=C:\WIN16\DELPHI\BIN
VQB.HLP=C:\WIN16\DELPHI\BIN
SQLREF.HLP=C:\WIN16\IBLOCAL\BIN
WISQL.HLP=C:\WIN16\IBLOCAL\BIN
BDECFG.HLP=C:\WIN16\IDAPI
RPTSMITH.HLP=C:\WIN16\RPTSMITH
RS_DD.HLP=C:\WIN16\RPTSMITH
SBL.HLP=C:\WIN16\RPTSMITH
RS_RUN.HLP=C:\WIN16\RPTSMITH
DBD.HLP=C:\WIN16\DBD
※ 設定はすべてデフォルトインストール時のものです (パス以外)。設定を変更したい場合には、VM の XP 等に Delphi 1.0 をインストールして、自分で環境設定ファイルを持ってくる必要があります。
Windows 環境設定ファイルの編集
C:\OTVDM\WINDOWS\WIN.INI
をテキストエディタで開き、以下を追記します(WIN.INI は空かもしれません)。
[IDAPI]
DLLPATH=C:\WIN16\IDAPI
CONFIGFILE01=C:\WIN16\IDAPI\IDAPI.CFG
[Borland Language Drivers]
LDPath=C:\WIN16\IDAPI\LANGDRV
[BWCC]
BitmapLibrary=BWCC.DLL
[Interbase]
RootDirectory=C:\WIN16\IBLOCAL
[Paradox Engine]
UserName=PxEngine
NetNamePath=C:\WIN16
MaxTables=64
RecBufs=64
MaxLocks=64
MaxFiles=64
SwapSize=64
[DDE Servers]
DBD=C:\WIN16\DBD\DBD
[DBD]
WORKDIR=C:\WIN16\DBD
PRIVDIR=C:\WIN16\DBD\DBDPRIV
実行
Explorer で C:\WIN16\DELPHI\BIN
を開き、DELPHI.EXE
をダブルクリックすると Delphi 1.0 Client/Server が起動します。
DB 系のデモを読み込むためには C:\WIN16\IDAPI
にある BDECFG.EXE
を実行し、[Aliasses] タブの DBDEMOS
と IBLOCAL
のパスを正しいものにします。
Alias | Item | Value |
---|---|---|
DBDEMOS | PATH | C:\WIN16\DELPHI\DEMOS\DATA |
IBLOCAL | SERVER NAME | C:\WIN16\IBLOCAL\EXAMPLES\EMPLOYEE.GDB |
[Drivers] タブの PARADOX
も書き換えておいたほうがいいでしょう。
Driver Name | Item | Value |
---|---|---|
PARADOX | NET DIR | C:\WIN16 |
てゆーか、当方の環境だとコンパイルすると落ちますね。 ver 1650 で落ちなくなりました (^o^)/
DOSBox(-X) との併用
プロジェクトを DOSBox 上のコマンドラインコンパイラ (dcc.exe) でコンパイルし、
生成された EXE (16bit Windows アプリケーション) を (OTVDM で) 実行する事もできます。
See also:
DCC.EXE (コマンドラインコンパイラ)
コマンドラインコンパイラ (DCC.EXE) は MS-DOS アプリケーションなので、DOSBox(-X) や MS-DOS Player で動作します。
コマンドラインコンパイラ を動作させるために最低限必要なのは、$(SOURCE)\RUNIMAGE
の LIB
フォルダ全部と、BIN
フォルダの次のファイルです。
- DCC.CFG
- DCC.EXE
- DELPHI.DMT
- DELPHI.DSL
- DLIB.EXE
- DPMI16BI.OVL
- RTM.EXE
DCC.CFG
は、コマンドラインコンパイラ用の環境設定ファイルです。パスを次のように書き換える必要があります。
/m
/cw
/rC:\WIN16\DELPHI\LIB
/uC:\WIN16\DELPHI\LIB
/iC:\WIN16\DELPHI\LIB
DCC.EXE を使ってコンパイルするには、引数にプロジェクトファイルを指定します。
DCC プロジェクトファイル
プロジェクトが単一のファイル (*.DPR のみ) で構成される場合には普通にコンパイルできますが、他にユニットが存在する場合にはプロジェクトファイルのある場所へカレントディレクトリを移動する必要があります。
CD プロジェクトファイルのあるディレクトリ
DCC プロジェクトファイル
生成された実行ファイルは Win16 アプリケーションなので、OTVDM をインストールしているか、16bit/32bit Windows 環境でないと実行できません。
おわりに
Delphi 1.0 C/S をちゃんと試したいのなら、VM の XP とかで動作させる事をオススメします。
ただ、やりようによっては 64bit の Windows 10 (や Windows 11) で 16bit 版 Delphi を動かせるってのはちょっと魅力的ですね。他の 16bit Windows アプリも動かせますし、古い WinHelp も読めます。
See also:
- Delphi Configuration Files (Embarcadero Blogs)
- Turbo Pascal 1.0 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)
- Turbo Pascal 3.02 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)
- Turbo Pascal 5.5 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)
- Turbo C 2.01 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)
- Turbo C++ 1.01 を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)
- C++Builder 1.0 Client/Server を Windows 10 (64bit) / 11 にインストールしてみる (Qiita)