home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 1995 May
/
pcw-0595.bin
/
demos
/
databeck
/
wsounds
/
setup.dir
/
wswsrc.exe
/
DISKDLG.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-02
|
6KB
|
201 lines
Unit DiskDlg;
INTERFACE
uses WinTypes, WinProcs, WinDos, WObjects, Strings, MMSystem,
DataObj, WaveUtil, WAVEIO;
const
dn_DiskDlg = 'DiskDlg';
DS_OK = ID_Ok;
DS_Cancel = 2;
ID_DInput = 1500;
ID_DMedInf= 1501;
ID_DinDB = 1502;
ID_DRetry = 1503;
ID_DName = 1504;
ID_DSDir = 1505;
ID_DLabl = 1506;
type
PDiskDlg = ^TDiskDlg;
TDiskDlg = object(TDialog)
CurrCollect : PWaveCollection;
CurrNr : Integer;
CurrWD : WaveDataType;
constructor Init(AParent: PWindowsObject;AName: PChar; VAR AWaveDummy : WaveDataType);
Procedure HandlePathInDB(VAR Msg : TMessage);virtual id_First + id_DinDB;
PROCEDURE OK(VAR Msg : TMessage);Virtual id_First + id_Ok;
procedure Cancel(var Msg: TMessage); virtual id_First + id_Cancel;
procedure SetupWindow; virtual;
end;
PDiskPlay = ^TDiskPlay;
TDiskPlay = Object(TWindowsObject)
DiskDlgMessage : Integer;
DiskDummy : Array[0..130] OF CHar;
DiskTestDlg : Integer;
DiskDialog : PDiskDlg;
Constructor Init(AParent : PWindowsObject);
PROCEDURE DiskPlayDlg(VAR CurrWD : WaveDataType; VAR Mess : INTEGER);
END;
VAR
DPlayObj : PDiskPlay;
{DiskDlgMessage : Integer;}
DiskDummy : Array[0..130] OF CHar;
DiskTestDlg : Integer;
DiskDialog : PDiskDlg;
DiskIntoDataBase : BOOLEAN;
NewWaveDummy : WaveDataType;
implementation
Constructor TDiskPlay.Init(AParent : PWindowsObject);
BEGIN
TWindowsObject.Init(AParent);
DiskDlgMessage := idOK;
END;
PROCEDURE TDiskPlay.DiskPlayDlg(VAR CurrWD : WaveDataType; VAR Mess : INTEGER);
VAR
TDummy, MDummy : ARRAY[0..100] OF CHAR;
DDialog : PDiskDlg;
TestDlg : Integer;
BEGIN
{DiskDlgMessage := idOK;}
TDummy[0] := CurrWD.DiskDrive;
TDummy[1] := #0;
StrCat(TDummy, ':');
StrCat(TDummy,CurrWD.PathName);
StrCat(TDummy,CurrWD.FileName);
{WriteLn(TDummy);}
While ((DiskDlgMessage = DS_Ok) AND (Not(WAVExists(TDummy)))) DO BEGIN
DDialog := New(PDiskDlg, Init(@self, dn_DiskDlg, CurrWD));
{IF DDialog <> NIL THEN}
TestDlg := Application^.ExecDialog(DDialog);
IF TestDlg = id_OK THEN
BEGIN
TDummy[0] := CurrWD.DiskDrive;
TDummy[1] := #0;
StrCat(TDummy, ':');
StrCat(TDummy,CurrWD.PathName);
StrCat(TDummy,CurrWD.FileName);
{WriteLn('In program : ',TDummy);}
END
ELSE IF TestDlg = id_Cancel THEN BEGIN
DiskDlgMessage := id_Cancel;
END;
END;
Mess := DiskDlgMessage;
END;
constructor TDiskDlg.Init(AParent: PWindowsObject;AName: PChar; VAR AWaveDummy : WaveDataType);
{constructor TDiskDlg.Init(AParent: PWindowsObject;AName: PChar; ACollect : PWaveCollection; ANum : Integer);}
begin
TDialog.Init(AParent, AName);
{
CurrCollect := ACollect;
CurrNr := ANum;
PWaveData(CurrCollect^.At(CurrNr))^.GetData(CurrWD);
}
CurrWD := AWaveDummy;
DiskIntoDataBase := FALSE;
{ DiskDlgMessage := idOK;}
end;
procedure TDiskDlg.SetupWindow;
VAR
Msg : TMessage;
TDummy : Array[0..100] OF Char;
begin
TDialog.SetupWindow;
TDummy[0] := WaveDummy.DiskDrive;
TDummy[1] := #0;
StrCat(TDummy, ':');
SetDlgItemText(HWindow, ID_DMedInf, TDummy);
StrCat(TDummy,WaveDummy.PathName);
SendDlgItemMessage(HWindow, id_DInput, em_LimitText, Sizeof(DirStr)+2, 0);
SetDlgItemText(HWindow, ID_DInput, TDummy);
SetDlgItemText(HWindow, ID_DSDir, TDummy);
StrCat(TDummy,CurrWD.FileName);
SetDlgItemText(HWindow, ID_DName, CurrWD.FileName);
SetDlgItemText(HWindow, ID_DLabl, CurrWD.DiskLabel);
end;
procedure TDiskDlg.Cancel(var Msg: TMessage);
BEGIN
DiskIntoDataBase := FALSE;
TDialog.Cancel(Msg);
END;
procedure TDiskDlg.HandlePathInDB(var Msg: TMessage);
VAR
SplitChars : DirStr;
Dummy : DirStr;
FNam, FExt, FPath : ARRAY[0..129] OF CHAR;
Count : Integer;
OldComment : ARRAY[0..63] OF CHAR; { WAV comment }
BEGIN
GetDlgItemText (HWindow, ID_DInput, SplitChars,SizeOf(DirStr));
if SplitChars[StrLen(SplitChars)-1] <> '\' then StrCat (SplitChars,'\');
StrCopy(OldComment,WaveDummy.FileComment);
{
WriteLn('--------------------------------------------------');
WriteLn(' Name : ',WaveDummy.FileName,', Size : ',WaveDummy.FileSize);
WriteLn(' Disk : ', WaveDummy.DiskLabel,' -> ',WaveDummy.DiskDrive, ':',WaveDummy.PathName);
WriteLn(' Comm : ', WaveDummy.FileComment);
}
WD_ReadOneFileIntoWD(HWindow,SplitChars,WaveDummy.FileName,WaveDummy);
IF WaveDummy.Save2Wave = C2W_DontSave THEN StrCopy(WaveDummy.FileComment,OldComment);
{
WriteLn('+++++++++++++++++++++++++++++++++++++++++++++++++++++++');
WriteLn(' Name : ',WaveDummy.FileName,', Size : ',WaveDummy.FileSize);
WriteLn(' Disk : ', WaveDummy.DiskLabel,' -> ',WaveDummy.DiskDrive, ':',WaveDummy.PathName);
WriteLn(' Comm : ', WaveDummy.FileComment);
}
DiskIntoDataBase := TRUE;
TDialog.OK(Msg);
END;
PROCEDURE TDiskDlg.OK(VAR Msg : TMessage);
VAR
SplitChars : ARRAY[0..SizeOf(DirStr)+2] OF CHAR;
FNam, FExt, FPath : ARRAY[0..129] OF CHAR;
Count : Integer;
BEGIN
GetDlgItemText (HWindow, ID_DInput, SplitChars,SizeOf(DirStrP2));
FileSplit(SplitChars, FPath, FNam, FExt);
{
WriteLn('Path : ',FPath);
WriteLn('Name : ',FNam);
WriteLn('Ext : ',FExt);
}
IF (StrLen(SplitChars) >= 3) AND (SplitChars[1] = ':') AND (SplitChars[2] = '\') THEN BEGIN
IF StrRScan(SplitChars, '\') = NIL THEN StrCat(SplitChars,'\');
WaveDummy.DiskDrive := SplitChars[0];
FOR COunt := 0 to 129 do WaveDummy.PathName[Count] := #0;
For Count := 2 to StrLen(FPath) DO BEGIN
WaveDummy.PathName[Count-2] := FPath[Count];
{WriteLn('Wavedummy : ',WaveDummy.PathName[2-Count],' FPath : ',FPath[Count],' gesamt : ',WaveDummy.PathName);}
END;
END;
{DiskDlgMessage := DS_Ok;}
{WriteLn('In record : ',WaveDummy.PathName);}
DiskIntoDataBase := FALSE;
TDialog.OK(Msg);
END;
BEGIN
END.