home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FMI Superhry 1
/
Superhry-I.bin
/
bonus
/
darkforc
/
editors
/
make_gob
/
extr_gob.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-03-19
|
2KB
|
83 lines
Program Extract_Dark_Forces_GOB;
var
file1, file2 : file;
buffer : array[0..32767] of byte;
infile, outfile,lstfile : string;
i : integer;
directory : text;
offset, len, dirbegin : longint;
result : word;
b : array[1..13] of byte;
actlen : longint;
begin
if paramcount < 1 then
begin
writeLn('Usage: EXTR_GOB gobfile');
halt;
end;
infile := paramstr(1);
for i := 1 to length(infile) do
infile[i] := upcase(infile[i]);
if pos('.GOB', infile) = 0 then
begin
lstfile := infile + '.LST';
infile := infile + '.GOB';
end
else
begin
lstfile := copy(infile, 1, length(infile) - 4) + '.LST';
end;
assign(file1, infile);
{$I-}
reset(file1,1);
{$I+}
if ioresult <> 0 then
begin
writeln('Datei ', infile, ' nicht gefunden.');
halt;
end;
blockread(file1, dirbegin, 4, result);
blockread(file1, dirbegin, 4, result);
dirbegin := dirbegin + 4;
assign(directory,lstfile);
rewrite(directory);
while dirbegin < filesize(file1) do
begin
seek(file1, dirbegin);
blockread(file1, offset, 4, result);
blockread(file1, len, 4, result);
outfile := '';
blockread (file1, b, 13, result);
for i := 1 to 13 do
if b[i] <> 0 then
outfile := outfile + chr(b[i]);
dirbegin := filepos(file1);
seek(file1, offset);
writeln(outfile);
writeln(directory,outfile);
assign(file2, outfile);
rewrite(file2, 1);
actlen := 0;
while actlen < len do
begin
blockread(file1, buffer, 32768, result);
if (actlen + 32768) > len then
begin
blockwrite(file2, buffer, len - actlen, result);
actlen := len;
end
else
begin
blockwrite(file2, buffer, 32768, result);
actlen := actlen + 32768;
end;
end;
close(file2);
end;
close(file1);
close(directory);
end.