home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 1995 May
/
pcw-0595.bin
/
demos
/
databeck
/
wsounds
/
setup.dir
/
wswsrc.exe
/
RIFFCOMM.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-11-09
|
4KB
|
167 lines
{
RIFFComm.TPU
Reads and saves comments as a chunk in
an existing RIFF file
Thorsten Petrowski 1992
for NobleSoft
(c) Copyright 1992
}
UNIT RIFFComm;
INTERFACE
uses WinCrt,Strings, WinTypes, WinProcs, WObjects, WinDOS, Win31, ShellAPI,
MMSystem,BWCC,dataobj, WaveUtil;
CONST
MMWriteOK = 0;
MMWriteCancel = 1;
MMWriteSecure = 2;
MMReadOK = 0;
MMReadCancel = 1;
MMReadNoSuccess = 2;
PROCEDURE GetRIFFCommentICMT (Var Data : WaveDataType; VAR MMessage : INTEGER );
PROCEDURE GetRIFFCommentINAM (Var Data : WaveDataType; VAR Message : INTEGER );
PROCEDURE PutRIFFComment (Data: WaveDataType; VAR MMessage : Integer);
IMPLEMENTATION
CONST
SOWChunk = 'ICMT';
PROCEDURE GetRIFFCommentINAM (Var Data : WaveDataType; VAR Message : INTEGER );
Var InFile : THMMIO;
Parent : TMMCKINFO;
Infos : TMMIOInfo;
Result : Integer;
FileP : Array[0..300] of char;
Begin
{FileP[0] := Data.DiskDrive;
FileP[1] := #0;
StrCat (FileP,':');
StrCat (FileP,Data.PathName);
StrCat (FileP,Data.FileName);
WriteLn('FileP:',FileP);
InFile := mmioOpen (FileP,NIL,MMIO_READ);
IF InFile <> 0 then
Begin
Parent.ckID := mmioStringToFourCC ('INFO',0);
Parent.fccType := mmioStringToFourCC ('INAM',0);
Result := mmioDescend (InFile,@Parent,NIL,MMIO_FINDList);
if result = 0 then
Begin
Message := MMReadOK;
mmioRead (InFile,@Data.FileComment,64);
End
ELSE BEGIN
Message := MMReadNoSuccess;
END;
End
ELSE BEGIN
Message := MMReadCancel;
END;
mmioClose (InFile,0);}
message := MMREADNOSUCCESS;
End;
PROCEDURE GetRIFFCommentICMT (Var Data : WaveDataType; VAR MMessage : INTEGER );
Var InFile : THMMIO;
Parent : TMMCKINFO;
Infos : TMMIOInfo;
Result : Integer;
FileP : Array[0..140] of char;
Begin
FileP[0] := Data.DiskDrive;
FileP[1] := #0;
StrCat (FileP,':');
StrCat (FileP,Data.PathName);
StrCat (FileP,Data.FileName);
InFile := mmioOpen (FileP,NIL,MMIO_READ);
IF InFile <> 0 then
Begin
FillChar(Parent,SizeOf(Parent),0);
Parent.fccType := mmioStringToFourCC (SOWChunk,0);
Result := mmioDescend (InFile,@Parent,NIL,MMIO_FINDLIST);
if result = 0 then
Begin
MMessage := MMReadOK;
mmioRead (InFile,@Data.FileComment,64);
End
ELSE BEGIN
MMessage := MMReadNoSuccess;
END;
End
ELSE BEGIN
MMessage := MMReadCancel;
END;
mmioClose (InFile,0);
End;
PROCEDURE PutRIFFComment (Data: WaveDataType; VAR MMessage : Integer);
Var InFile : THMMIO;
Parent : TMMCKINFO;
Infos : TMMIOInfo;
Result : Integer;
F : File;
FileP : Array[0..140] of char;
FPath :Array[0..140] of char;
Begin
MMessage := MMReadCancel+5;
FileP[0] := Data.DiskDrive;
FileP[1] := #0;
StrCat (FileP,':');
StrCat (FileP,Data.PathName);
StrCopy (FPath, FileP);
StrCat (FileP,Data.FileName);
Assign(F, FileP);
InFile := mmioOpen (FileP,NIL,MMIO_READWRITE);
IF InFile <> 0 then
Begin
Parent.fccType := mmioStringToFourCC (SOWChunk,0);
Result := mmioDescend (InFile,@Parent,NIL,MMIO_FINDLIST);
if (result <> 0) then
Begin
mmioSeek (InFile,LongInt(0),SEEK_END);
Parent.fccType := mmioStringToFourCC (SOWChunk,0);
Parent.ckSize := 64;
mmioCreateChunk (InFile,@parent,MMIO_CREATELIST);
mmioWrite (InFile,Data.FileComment,64);
MMessage := MMWriteOK;
End
Else
Begin
MMessage := MMWriteOK;
mmioWrite (InFile,Data.FileComment,64);
End;
End
ELSE BEGIN
MMessage := MMWriteCancel;
END;
mmioClose (InFile,0);
IF MMessage = MMWriteOK THEN BEGIN
{$I-}
Reset(F);
SetFTime(F,Data.CreationDate);
Close(F);
{$I+}
IF IOResult = 0 THEN BEGIN
END
ELSE BEGIN
MMessage := MMWriteCancel;
END;
END;
End;
Begin;
End.