[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]
{
LP> Ok like in bbs programs when you upload a file it checks for a
LP> file_id.diz, if the file exists it inserts the description into the
LP> dir listing, that is basically what i am trying to accomplish, but i
LP> have no idea where to start, i need to add that code into a bbs
LP> program i am working on, but everyoe i know has no idea how to do
LP> that.
I'm not quite clear as to what you want exactly, but maybe the DIZExist()
function in the following program will be of some help to you. It reads the
ZIP file header and returns a boolean reflecting the existence of a
FILE_ID.DIZ file (it can be easily modified to retrieve various information
for all the files in the archive).
This code is tested:
{===========================================================================}
PROGRAM ZIPRead;
type
ZFHeader = record
Signature : longint;
Version,
GPBFlag,
Compress,
Date,Time : word;
CRC32,
CSize,
USize : longint;
FNameLen,
ExtraField : word;
end;
var
Hdr: ^ZFHeader;
FName: string;
{-------------------------------------------------------}
FUNCTION DIZExist(ZIPFile: string): boolean;
const
SIG = $04034B50;
var
F: file;
S: string;
begin
New(Hdr);
DIZExist := False;
Assign(F, ZIPFile);
{$I-}
Reset(F,1);
{$I+}
if IoResult = 0 then
repeat
FillChar(S,SizeOf(S), #0);
BlockRead(F,Hdr^,SizeOf(ZFHeader));
BlockRead(F,Mem[Seg(S) : Ofs(S) + 1], Hdr^.FNameLen);
S[0] := Chr(Hdr^.FNameLen);
if (Hdr^.Signature = Sig) and (S = 'FILE_ID.DIZ') then
begin
DIZExist := True;
Close(F);
Exit;
end;
Seek(F,FilePos(F) + Hdr^.CSize + Hdr^.ExtraField);
until Hdr^.Signature <> SIG;
Close(F);
end;
{-------------------------------------------------------}
BEGIN
FName := 'TEST.ZIP';
if DIZExist(FName) then WriteLn('FILE_ID.DIZ is present.')
else WriteLn('FILE_ID.DIZ is not present.');
END.
{===========================================================================}
Now if you want something that will extract the FILE_ID.DIZ file you will be
best off to use PKUNZIP rather than doing it via some source code that unzips
files, because the source code method will eventually fail due to version
differences.
To actually import the extracted file into your dir listing you are going to
have to either work it out yourself, or else give us specifics on how your
BBS program is currently designed in this area (i.e. actual code).
If you want more help with this I would be glad to give it...
-- Kim Forwood --
[Back to ARCHIVES SWAG index] [Back to Main SWAG index] [Original]