home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HomeWare 14
/
HOMEWARE14.bin
/
prog
/
totsrc11.arj
/
TOTDIR.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1993-05-04
|
23KB
|
860 lines
{ Copyright 1991 TechnoJock Software, Inc. }
{ All Rights Reserved }
{ Restricted by License }
{ Build # 1.10 }
Unit totDIR;
{$I TOTFLAGS.INC}
{
Development Notes:
1.00a 3/25/91 Allowed typing of filename when no files
in list.
1.00b 5/18/91 Added DIRinit to interface
1.00c 2/04/92 Trapped for ? * chars in path
}
INTERFACE
uses DOS,CRT,
totIO1, totIO2, totLINK, totSTR, totSYS, totWIN,
totINPUT, totFAST, totMISC, totMsg;
CONST
SignalUpdateDirField = 10; {Signal ID}
SignalUpdateFileField = 11;
ReadMessage: string[20] = 'Reading files...';
SortMessage: string[20] = 'Sorting files...';
TYPE
pDirDLLOBJ = ^DirDLLOBJ;
DirDLLOBJ = object (DLLOBJ)
vShowDrives: boolean;
{methods ...}
constructor Init;
procedure FillList;
procedure SetDrives(On:boolean);
function GetStr(Node:DLLNodePtr;Start,Finish: longint):string; VIRTUAL;
destructor Done;
end; {DirDLLOBJ}
pFilesFieldOBJ = ^FilesFieldOBJ;
FilesFieldOBJ = object (ListIOOBJ)
vFileList: ^FileDLLOBJ;
vSortCode: byte;
vSortOrder: boolean;
{methods ...}
constructor Init;
procedure SetFileDetails(FileMasks:string; FileAttrib: word);
procedure SetSortDetails(SortCode: byte; SortOrder: boolean);
procedure FillList;
function GetChosenFile: string;
function Select(K:word; X,Y:byte):TAction; VIRTUAL;
procedure ShowItemDetails(HiPick: integer); VIRTUAL;
function GetString(Pick:integer): string; VIRTUAL;
function SelectPick(InKey:word;X,Y:byte): tAction; VIRTUAL;
procedure HandleSignal(var BaseSig:tSignal; var NewSig:tSignal); VIRTUAL;
destructor Done; VIRTUAL;
end; {FilesFieldOBJ}
pDirFieldOBJ = ^DirFieldOBJ;
DirFieldOBJ = object (ListIOOBJ)
vDirList: ^DirDLLOBJ;
{methods ...}
constructor Init;
procedure FillList;
procedure ReadDir(Status:tStatus);
function Select(K:word; X,Y:byte):TAction; VIRTUAL;
function GetString(Pick:integer): string; VIRTUAL;
function SelectPick(InKey:word;X,Y:byte): tAction; VIRTUAL;
procedure RaiseSignal(var TheSig:tSignal); VIRTUAL;
procedure HandleSignal(var BaseSig:tSignal; var NewSig:tSignal); VIRTUAL;
destructor Done; VIRTUAL;
end; {DirFieldOBJ}
pFileInputFieldOBJ = ^FileInputFieldOBJ;
FileInputFieldOBJ = object (LateralIOOBJ)
vChangeDir: boolean;
vChangeMask: boolean;
vLastInput: string;
{methods ...}
constructor Init;
procedure SetLastValue(Mask:string);
procedure WriteLabel(Status:tStatus); VIRTUAL;
function ProcessEnter:tAction; VIRTUAL;
procedure RaiseSignal(var TheSig:tSignal); VIRTUAL;
procedure ShutdownSignal(var BaseSig:tSignal); VIRTUAL;
function Suspend:boolean; VIRTUAL;
destructor Done; VIRTUAL;
end; {FileInputFieldOBJ}
pDirWinOBJ = ^DirWinOBJ;
DirWinOBJ = object
vFileSpec: ^FileInputFieldOBJ;
vFileList: ^FilesFieldOBJ;
vDirList: ^DirFieldOBJ;
vOK: Strip3DIOOBJ;
vCancel: Strip3DIOOBJ;
vHelp: Strip3DIOOBJ;
vControl: ControlKeysIOOBJ;
vManager: WinFormOBJ;
vOldDir: string[80];
vStartDir: string[80];
vEndDir: string[80];
{methods ...}
constructor Init;
function Action: pWinFormOBJ;
function Go: tAction;
procedure SetFileDetails(StartDir:string; FileMasks:string; FileAttrib: word);
procedure SetSortDetails(SortCode: byte; SortOrder: boolean);
function Win: MoveWinPtr;
function FilenameTyped:boolean;
function GetChosenFile: string;
destructor Done; VIRTUAL;
end; {DirWinOBJ}
procedure DIRInit;
IMPLEMENTATION
var Floppies: byte;
{|||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ M i s c. P r o c s & F u n c s }
{ }
{|||||||||||||||||||||||||||||||||||||||||||||}
procedure WriteFullDir;
{}
var Str:string;
begin
GetDir(0,Str);
Screen.WritePlain(1,17,padleft(Str,45,' '));
end; {WriteFullDir}
{$F+}
procedure DirHelp(ID:word);
{}
var HelpWin: MessageOBJ;
begin
with HelpWin do
begin
Init(1,'File Load Help');
AddLine('Enter a filename (or file mask) in the Name ');
Addline('box, or TAB to the file list and select a');
Addline('file from the list by pressing Enter or ');
AddLine('double clicking the mouse.');
AddLine('');
AddLine('To change directories, TAB to the Directories');
AddLine('list and select one.');
AddLine('');
Show;
Done;
end;
end; {DirHelp}
{$IFNDEF OVERLAY}
{$F-}
{$ENDIF}
{|||||||||||||||||||||||||||||||||||||||||||}
{ }
{ D i r D L L O b j M E T H O D S }
{ }
{|||||||||||||||||||||||||||||||||||||||||||}
constructor DirDLLOBJ.Init;
{}
begin
DLLOBJ.Init;
vShowDrives := true;
end; {DirDLLOBJ.Init}
procedure DirDLLOBJ.SetDrives(On:boolean);
{}
begin
vShowDrives := On;
end; {DirDLLOBJ.SetDrives}
procedure DirDLLOBJ.FillList;
{}
var
DirInfo: SearchRec;
Drive: string;
I : integer;
Result: longint;
Ecode : integer;
ActiveDrive: integer;
begin
if vStartNodePtr <> Nil then
EmptyList;
FindFirst('*.*', AnyFile, DirInfo);
while DOSError = 0 do
begin
if ((DirInfo.Attr and Directory) = Directory)
and (DirInfo.Name <> '.') then
begin
Drive := '['+DirInfo.Name+']';
Ecode := Add(Drive,succ(length(Drive)));
if Ecode = 0 then
vActiveNodePtr^.SetStatus(0,true); {indicates directory change}
end;
FindNext(DirInfo);
end;
if vShowDrives then {get active drives}
begin
{$I-}
getdir(0,Drive);
{$I-}
if IOResult = 0 then
ActiveDrive := ord(Drive[1]) - 64
else
ActiveDrive := 0;
if (Floppies >= 1) and (ActiveDrive <> 1) then
begin
Drive := '[ -A- ]';
Ecode := Add(Drive,8);
end;
if (Floppies >= 2) and (ActiveDrive <> 2) then
begin
Drive := '[ -B- ]';
Ecode := Add(Drive,8);
end;
for I := 3 to 26 do {test all letters}
begin
Result := DiskSize(I);
if (Result <> -1) and (ActiveDrive <> I) then {valid drive}
begin
Drive := '[ -'+char(I+64)+'- ]';
Ecode := Add(Drive,8);
end;
end;
end;
Jump(1);
end; {DirDLLOBJ.FillList}
function DirDLLOBJ.GetStr(Node:DLLNodePtr;Start,Finish: longint):string;
{ignores Start and Finish parameters}
var temp : string;
begin
if (Node = Nil)
or (Node^.vDataPtr = Nil)
or (Node^.vSize = 0) then
GetStr := ''
else
begin
Move(mem[seg(Node^.vDataPtr^):ofs(Node^.vDataPtr^)],Temp[0],15);
GetStr := Temp;
end;
end; {DirDLLOBJ.GetStr}
destructor DirDLLOBJ.Done;
{}
begin
DLLOBJ.Done;
end; {DirDLLOBJ.Done}
{||||||||||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ F i l e s F i e l d O B J M e t h o d s }
{ }
{||||||||||||||||||||||||||||||||||||||||||||||||||||}
constructor FilesFieldOBJ.Init;
{}
begin
ListIOOBJ.Init(3,4,13,12,'Files:');
new(vFileList,Init);
vSortCode := 0;
vSortOrder := true;
end; {FilesFieldOBJ.Init}
procedure FilesFieldOBJ.SetFileDetails(FileMasks:string; FileAttrib: word);
{}
begin
vFileList^.SetFileDetails(FileMasks,FileAttrib);
end; {FilesFieldOBJ.SetFileDetails}
procedure FilesFieldOBJ.ShowItemDetails(HiPick: integer);
{}
var FileInfo: tFileInfo;
begin
vFileList^.GetFileRecord(FileInfo,HiPick);
if FileInfo.FileName = NoFiles then
Screen.WritePlain(1,18,replicate(45,' '))
else
Screen.WritePlain(1,18,padleft(LongName(FileInfo),45,' '));
end; {FilesFieldOBJ.ShowItemDetails}
procedure FilesFieldObj.FillList;
{}
begin
Screen.WritePlain(1,18,padleft(ReadMessage,45,' '));
vFileList^.FillList;
Screen.WritePlain(1,18,padleft(SortMessage,45,' '));
vFileList^.Sort(vSortCode,vSortOrder);
vListAssigned := true;
vTotPicks := vFileList^.TotalNodes;
end; {FilesFieldObj.AssignList}
function FilesFieldOBJ.GetString(Pick:integer): string;
{}
var
TempPtr : DLLNodePtr;
begin
TempPtr := vFileList^.NodePtr(Pick);
if TempPtr <> Nil then
vFileList^.ShiftActiveNode(TempPtr,Pick);
GetString := vFileList^.GetStr(TempPtr,0,0);
end; {FilesFieldOBJ.GetString}
function FilesFieldOBJ.SelectPick(InKey:word;X,Y:byte):tAction;
{}
var SP: tAction;
begin
if (Inkey = 523) and (TargetPick(X,Y) <> 0) then {select the new pick}
begin
MouseChoose(X,Y);
SP := Finished;
end
else if (Inkey = 13) then
SP := Finished
else
SP := none;
if (SP = Finished) and (GetString(vFileList^.ActiveNodeNumber) = NoFiles) then
SP := none;
SelectPick := SP;
end; {FilesFieldOBJ.SelectPick}
function FilesFieldOBJ.Select(K:word; X,Y:byte):TAction;
{}
var New: byte;
begin
vScrollBarOn := (vTotPicks >= vRows);
vActiveField := true;
Display(HiStatus);
WriteLabel(HiStatus);
WriteMessage;
if (K = 513) or (K=523) then
begin
if vScrollBarOn and (X = vBorder.X2) then
{nothing for now}
else
begin
New := HitItem(Y);
if New > 0 then
begin
WriteItem(vActivePick,false);
vActivePick := New;
WriteItem(vActivePick,true);
if (K=523) then
begin
Select := SelectPick(K,X,Y);
exit;
end;
end;
end;
end;
Select := none;
end; {FilesFieldOBJ.Select}
procedure FilesFieldOBJ.SetSortDetails(SortCode: byte; SortOrder: boolean);
{}
begin
vSortCode := SortCode;
vSortOrder := SortOrder;
end; {FilesFieldOBJ.SetSortDetails}
procedure FilesFieldOBJ.HandleSignal(var BaseSig:tSignal; var NewSig:tSignal);
{}
var
Len : byte;
NewMask: string;
begin
if BaseSig.ID = SignalUpdateFileField then
begin
if (BaseSig.MSGtype = 0) then {new filemask}
begin
move(BaseSig.MsgPtr^,Len,1);
if len > 0 then
begin
move(BaseSig.MsgPtr^,NewMask,succ(Len));
Screen.WritePlain(1,18,padleft(ReadMessage,45,' '));
vFileList^.FillNewMask(NewMask);
Screen.WritePlain(1,18,padleft(SortMessage,45,' '));
vFileList^.Sort(vSortCode,vSortOrder);
end;
end
else
FillList;
vTopPick := 1;
vTotPicks := vFileList^.TotalNodes;
vActivePick := 1;
Display(Norm);
BaseSig.ID := 0; {All Done!}
end;
end; {FilesFieldOBJ.HandleSignal}
function FilesFieldOBJ.GetChosenFile:string;
{}
begin
GetChosenFile := GetString(vTopPick + pred(vActivePick));
end; {FilesFieldOBJ.GetChosenFile}
destructor FilesFieldOBJ.Done;
{}
begin
ListIOOBJ.Done;
dispose(vFileList,Done);
end; {FilesFieldOBJ.Done}
{||||||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ D i r F i e l d O B J M e t h o d s }
{ }
{||||||||||||||||||||||||||||||||||||||||||||||||}
constructor DirFieldOBJ.Init;
{}
begin
ListIOOBJ.Init(18,4,15,12,('Directories:'));
new(vDirList,Init);
end; {DirFieldOBJ.Init}
function DirFieldOBJ.GetString(Pick:integer): string;
{}
var
TempPtr : DLLNodePtr;
begin
TempPtr := vDirList^.NodePtr(Pick);
if TempPtr <> Nil then
vDirList^.ShiftActiveNode(TempPtr,Pick);
GetString := vDirList^.GetStr(TempPtr,0,0);
end; {DirFieldOBJ.GetString}
procedure DirFieldOBJ.RaiseSignal(var TheSig:tSignal);
{}
begin
with TheSig do
begin
ID := SignalUpdateFileField;
MsgType := 99;
end;
end; {DirFieldOBJ.RaiseSignal}
procedure DirFieldOBJ.HandleSignal(var BaseSig:tSignal; var NewSig:tSignal);
{}
begin
if (BaseSig.ID = SignalUpdateDirField) then
begin
ReadDir(Norm);
BaseSig.ID := 0; {All Done!}
end;
end; {DirFieldOBJ.HandleSignal}
procedure DirFieldOBJ.FillList;
{}
begin
vDirList^.FillList;
vTopPick := 1;
vTotPicks := vDirList^.TotalNodes;
vActivePick := 1;
vListAssigned := true;
end; {DirFieldOBJ.FillList}
procedure DirFieldOBJ.ReadDir(Status:tStatus);
{}
begin
FillList;
Display(Status);
end; {DirFieldOBJ.ReadDir}
function DirFieldOBJ.SelectPick(InKey:word;X,Y:byte):tAction;
{}
var
TempPtr : DLLNodePtr;
NewDir : string;
begin
if (Inkey = 523) then {select the new pick}
begin
if TargetPick(X,Y) <> 0 then
MouseChoose(X,Y)
else
begin
SelectPick := none;
exit;
end;
end;
{change to the new drive/directory and display the new list}
NewDir := GetString(pred(vTopPick)+vActivePick);
TempPtr := vDirList^.NodePtr(pred(vTopPick)+vActivePick);
if TempPtr^.GetStatus(0) then {directory}
begin
delete(NewDir,1,1); {remove []}
delete(NewDir,length(NewDir),1);
end
else
begin
NewDir := NewDir[4]+':';
end;
{$I-}
ChDir(NewDir);
{$I+}
if IOResult = 0 then
begin
WriteFullDir;
ReadDir(HiStatus);
vScrollBarOn := vTotPicks > vRows;
{now raise a signal to load a new directory}
SelectPick := Signal;
end
else
SelectPick := none;
end; {DirFieldOBJ.SelectPick}
function DirFieldOBJ.Select(K:word; X,Y:byte):TAction;
{}
var New: byte;
begin
vScrollBarOn := (vTotPicks >= vRows);
vActiveField := true;
Display(HiStatus);
WriteLabel(HiStatus);
WriteMessage;
if (K = 513) or (K=523) then
begin
if vScrollBarOn and (X = vBorder.X2) then
{nothing for now}
else
begin
New := HitItem(Y);
if New > 0 then
begin
WriteItem(vActivePick,false);
vActivePick := New;
WriteItem(vActivePick,true);
if (K=523) then
begin
Select := SelectPick(K,X,Y);
exit;
end;
end;
end;
end;
Select := none;
end; {DirFieldOBJ.Select}
destructor DirFieldOBJ.Done;
{}
begin
ListIOOBJ.Done;
dispose(vDirList,Done);
end; {DirFieldOBJ.Done}
{||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ F i l e I n p u t F i e l d O B J M e t h o d s }
{ }
{||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||}
constructor FileInputFieldOBJ.Init;
{}
begin
LateralIOOBJ.Init(3,2,30,75);
vRules := EraseDefault;
vInputStr := '*.*';
vLastInput := vInputStr;
vChangeDir := false;
vChangeMask := false;
SetPadChar(' ');
end; {FileInputFieldOBJ.Init}
procedure FileInputFieldOBJ.SetLastValue(Mask:string);
{}
begin
vLastInput := Mask;
end; {FileInputFieldOBJ.SetLastValue}
procedure FileInputFieldOBJ.WriteLabel(Status:tStatus);
{}
var
Norm,Hi: byte;
begin
AssignColors(IOTOT^.vLabel,IOTOT^.vField,Status,Hi,Norm);
if (Hi = 0) or (Norm = 0) then
Screen.WritePlain(vBoundary.X1,pred(vBoundary.Y1),'Name:')
else
Screen.WriteHi(vBoundary.X1,pred(vBoundary.Y1),Hi,Norm,'Name:');
end; {FileInputFieldOBJ.WriteLabel}
function FileInputFieldOBJ.ProcessEnter: tAction;
{if a file is specified, finish, otherwise raise a signal}
var
D,N,E,FN : string;
begin
vChangeDir := false;
vChangeMask := false;
if vInputStr = '' then
begin
vInputStr := '*.*';
vChangeMask := true;
end
else
begin
FSplit(vInputStr,D,N,E);
FN := N+E;
if (pos('*',vInputStr) = 0) {1.00c}
and (pos('?',vInputStr) = 0)
and (FN <> '') then {a real filename was entered}
begin
ProcessEnter := Finished;
exit;
end
else
begin
if D <> '' then
begin
if (D[length(D)] = '\')
and not ((length(D) = 3) and (pos(':',D) = 2) )
and (D <> '\') then
delete(D,length(D),1);
{$I-}
chdir(D);
{$I+}
if IOResult = 0 then
begin
WriteFullDir;
vChangeDir := true;
end;
if FN = '' then
vInputStr := '*.*'
else
vInputStr := FN;
vChangeMask := true;
end
else {must have entered one or more wildcard file names}
vChangeMask := true;
end;
end;
CursorHome;
Display(HiStatus);
vLastInput := vInputStr;
ProcessEnter := signal;
end; {FileInputFieldOBJ.ProcessEnter}
procedure FileInputFieldOBJ.RaiseSignal(var TheSig:tSignal);
{}
begin
with TheSig do
begin
if vChangeDir then
begin
ID := SignalUpdateDirField;
MsgType := 99;
vChangeDir := false;
end
else
begin
ID := SignalUpdateFileField;
MsgType := 0;
MsgPtr := @vInputStr;
vChangeMask := false;
end;
end;
end; {FileInputFieldOBJ.RaiseSignal}
procedure FileInputFieldOBJ.ShutdownSignal(var BaseSig:tSignal);
{}
begin
with BaseSig do
begin
if vChangeMask then
begin
ID := SignalUpdateFileField;
MsgType := 0;
MsgPtr := @vInputStr;
vChangeMask := false;
end;
end;
MoveCursor;
end; {FileInputFieldOBJ.ShutdownSignal}
function FileInputFieldOBJ.Suspend:boolean;
{}
begin
Suspend := LateralIOOBJ.Suspend;
if (vLastInput <> vInputStr)
and ( (pos('*',vInputStr) > 0) or (pos('?',vInputStr) > 0)) {1.00a}
then
begin
Suspend := false;
Key.StuffBuffer(13);
Key.StuffBuffer(9);
end;
end; {FileInputFieldOBJ.Suspend}
destructor FileInputFieldOBJ.Done;
{}
begin
LateralIOOBJ.Done;
end; {FileInputFieldOBJ.Done}
{||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ D i r W i n O B J M e t h o d s }
{ }
{||||||||||||||||||||||||||||||||||||||||||||}
constructor DirWinOBJ.Init;
{}
begin
new(vFileSpec,Init);
new(vFileList,Init);
new(vDirList,Init);
vOK.Init(35,2,' ~O~K ',Finished);
vOK.SetHotKey(280); {Alt-O}
vCancel.Init(35,5,' ~C~ancel ',Escaped);
vCancel.SetHotkey(302); {Alt-C}
vHelp.Init(35,8,' ~H~elp ',Help);
vHelp.SetHotkey(291); {Alt-H}
vControl.Init; {Tab, STab, F10, Esc}
vStartDir := '';
vFileSpec^.SetID(1);
vFileList^.SetID(2);
vDirList^.SetID(3);
vOK.SetID(4);
vCancel.SetID(5);
vHelp.SetID(HelpID);
with vManager do
begin
Init;
Win^.SetSize(18,3,63,22,1);
Win^.SetTitle(' Choose a file ');
AddItem(vControl);
AddItem(vFileSpec^);
AddItem(vFileList^);
AddItem(vDirList^);
AddItem(vOK);
AddItem(vCancel);
AddItem(vHelp);
SetHelpHook(DirHelp);
end;
end; {DirWinOBJ.Init}
function DirWinOBJ.Win:MoveWinPtr;
{}
begin
Win := vManager.Win;
end; {DirWinOBJ.Win}
function DirWinOBJ.Action: pWinFormOBJ;
{}
begin
Action := @vManager;
end; {DirWinOBJ.Action}
procedure DirWinOBJ.SetFileDetails(StartDir:string; FileMasks:string; FileAttrib: word);
{}
begin
vStartDir := StartDir;
vFileList^.SetFileDetails(FileMasks,FileAttrib);
vFileSpec^.SetValue(FileMasks);
vFileSpec^.SetLastValue(FileMasks);
end; {DirWinOBJ.SetFileDetails}
procedure DirWinOBJ.SetSortDetails(SortCode: byte; SortOrder: boolean);
{}
begin
vFileList^.SetSortDetails(SortCode,SortOrder);
end; {DirWinOBJ.SetSortDetails}
function DirWinOBJ.FilenameTyped:boolean; {1.00a}
{}
var
Str: string;
begin
Str := vFileSpec^.GetValue;
FilenameTyped := (pos('*',Str) = 0)
and (pos('?',Str) = 0)
and (Str <> '');
end; {DirWinOBJ.FilenameTyped}
function DirWinOBJ.Go: tAction;
{}
var
Visible,kDouble: boolean;
Result: tAction;
begin
Visible:= Mouse.Visible;
kDouble := Key.GetDouble;
if not kDouble then
Key.SetDouble(true);
getdir(0,vOldDir);
if vStartDir <> '' then
begin
{$I-}
chdir(vStartDir);
{$I+}
if IOResult <> 0 then
{whogivesashit};
end;
vManager.Draw;
vFileList^.FillList;
vDirList^.FillList;
WriteFullDir;
if not Visible then
Mouse.Show;
repeat
Result := vManager.Go;
until (Result <> Finished) or
( (Result = Finished) and ( {1.00a}
FilenameTyped
or
((vFileList^.GetChosenFile=NoFiles) = false)
)
);
Go := Result;
vManager.Win^.Remove;
getdir(0,vEndDir);
{$I-}
chdir(vOldDir);
{$I+}
if IOResult <> 0 then
{whogivesashit};
Key.SetDouble(kDouble);
if not Visible then
Mouse.Hide;
end; {DirWinOBJ.Go}
function DirWinOBJ.GetChosenFile:string;
{}
begin
if FilenameTyped then {1.00a}
GetChosenFile := vFileSpec^.GetValue
else
GetChosenFile := SlashedDirectory(vEndDir)+vFileList^.GetChosenFile;
end; {DirWinOBJ.GetChosenFile}
destructor DirWinOBJ.Done;
{}
begin
dispose(vFileSpec,Done);
dispose(vFileList,Done);
dispose(vDirList,Done);
vOK.Done;
vCancel.Done;
vHelp.Done;
vControl.Done;
vManager.Done;
end; {DirWinOBJ.Done}
{|||||||||||||||||||||||||||||||||||||||||||||||}
{ }
{ U N I T I N I T I A L I Z A T I O N }
{ }
{|||||||||||||||||||||||||||||||||||||||||||||||}
procedure DIRInit;
{initilizes objects and global variables}
var Equip: EquipObj;
begin
Equip.Init;
Floppies := Equip.FloppyDrives;
end;
{end of unit - add initialization routines below}
{$IFNDEF OVERLAY}
begin
DIRInit;
{$ENDIF}
end.