Jim_Di
26.05.2009, 15:17
надо скопировать с указанного места кусок нужной длины и сохранить в файл, как сделать? у меня уже моск кипит. собсно сами данные и их размер (RIFF WAVE) я нашёл, теперь проблема в том, чтобы сохранить
var
FHandle, FSave, SizeFile, BytesRW, RW: Cardinal;
l: Longint;
oldstring: string;
SIZE: DWORD;
wavsize:integer;
n: integer;
begin
FHandle := FileOpen('c:\1.bin', FmOpenRead);
OldString := 'RIFF';
n:=1;
SizeFile := GetFileSize(FHandle, nil);
for l := 0 to SizeFile - Length(oldstring) do
begin
FileSeek(FHandle, l, 0);
FileRead(FHandle, oldstring[1], 4);
if oldstring = 'RIFF' then
begin
FileSeek(FHandle, l + 4, 0);
Memo1.Lines.Add(IntToStr(l));
FileRead(FHandle, SIZE, 4);
Memo1.Lines.Add(IntToStr(SIZE));
FileSeek(FHandle, l , 0);
//тут сильно лажовый код =)
FileRead(FHandle,BytesRW,size);
FSave := CreateFile(pchar('_out'+Int2Digs(N, 4)+'.bmp'), GENERIC_WRITE,
0, nil, CREATE_ALWAYS, 0, 0);
WriteFile(FSave, BytesRW, SizeOf(BytesRW), RW, nil);
CloseHandle(FSave);
//вот
n:=n+1;
end;
Application.ProcessMessages;
end;
CloseHandle(FHandle);
end;
var
FHandle, FSave, SizeFile, BytesRW, RW: Cardinal;
l: Longint;
oldstring: string;
SIZE: DWORD;
wavsize:integer;
n: integer;
begin
FHandle := FileOpen('c:\1.bin', FmOpenRead);
OldString := 'RIFF';
n:=1;
SizeFile := GetFileSize(FHandle, nil);
for l := 0 to SizeFile - Length(oldstring) do
begin
FileSeek(FHandle, l, 0);
FileRead(FHandle, oldstring[1], 4);
if oldstring = 'RIFF' then
begin
FileSeek(FHandle, l + 4, 0);
Memo1.Lines.Add(IntToStr(l));
FileRead(FHandle, SIZE, 4);
Memo1.Lines.Add(IntToStr(SIZE));
FileSeek(FHandle, l , 0);
//тут сильно лажовый код =)
FileRead(FHandle,BytesRW,size);
FSave := CreateFile(pchar('_out'+Int2Digs(N, 4)+'.bmp'), GENERIC_WRITE,
0, nil, CREATE_ALWAYS, 0, 0);
WriteFile(FSave, BytesRW, SizeOf(BytesRW), RW, nil);
CloseHandle(FSave);
//вот
n:=n+1;
end;
Application.ProcessMessages;
end;
CloseHandle(FHandle);
end;