![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
бесконечная запись в файл [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
officeman © (2005-08-05 14:21:00)нужно писать в файл, главное чтобы файл 'рос' в объёме стремительно быстро. реально ли 1гб в 1-3 секунды ?
если да, то каким методом ?
т.к. пример ниже. работает очень медленно. гдето 3-6 Mb/сек.
begin
Hand:=FileCreate('c:\1.rec');
for v:=0 to v+1 do v+1 begin
FileWrite(Hand,'000000000000000000000000000',30);
end;
Styx (2005-08-05 16:06:00) [21]http://msdn.microsoft.com/library/en-us/fileio/fs/sparse_file_operations.asp
3DxFantastika (2005-08-05 15:48:00) [22]скорость записи в файл ограничена скоростью работы винчестера, но возможно ли "создать" 1ГБ файл не записываяего? это действительно интересно (как-бы создать 1 байт файл и "поставить" ему размер в 1 ГБ)
officeman (2005-08-05 15:28:00) [23]хахахаха! =) приколист
Джо (2005-08-05 15:21:00) [24]
> [10] officeman (05.08.05 14:58)
Ну уж нет, твой код создал файл размером 1073741825 байт, то есть 1 Гб + 1 байт :)
officeman (2005-08-05 14:58:00) [25]да =)я тут уже опробовал. =) минут 5 назад
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,Classes;
var
FS: TFileStream;
begin
FS:=TFileStream.Create('c:\1.rec',fmCreate);
FS.Position:=1024*1024*1024;
FS.Write('000',1);
FS.Free;
end.
всё записло на ~10 секунд. =0 даже (ctrl+alt+del) неработало =/
Но файл создался на 1 Gb
Джо (2005-08-05 14:56:00) [26]Впрочем, на моем далеко не слабом компьютере и винчестере это дело пишется совсем не 1-3 секунды, а несколько больше...
Джо (2005-08-05 14:54:00) [27]
> [3] Slym © (05.08.05 14:30)
Немного не так. Записать 1 Гб так:
procedure TForm1.Button1Click(Sender: TObject);
var
FS: TFileStream;
N: Integer;
begin
FS:=TFileStream.Create('e:\1.rec',fmCreate);
try
FS.Position:=(1024*1024*1024)-SizeOf(N);
FS.Write(N,SizeOf(N));
finally
FS.Free;
end;
end;
Alexander Panov (2005-08-05 14:42:00) [28]officeman (05.08.05 14:41) [6]
FS: TFileStream;
officeman (2005-08-05 14:41:00) [29]to Slym
как правильно описать FS ?
officeman (2005-08-05 14:37:00) [30]хотел сказать
for v:=0 to v+1 do begin
ну вы меня поняли. =))
спасибо за ответ. попробую.
officeman (2005-08-05 14:36:00) [31]for v:=0 to v+1 do v+1 begin
=)) опечатался.
Slym (2005-08-05 14:30:00) [32]Если не ошибаюсь...
FS:=TFileStream.Create('c:\1.rec',fsCreate);
FS.Position:=1024*1024*1024;
FS.Free;
Получишь 1 Гб
Джо (2005-08-05 14:29:00) [33]
> for v:=0 to v+1 do v+1 begin
Красотишша! :)
Юрий Зотов (2005-08-05 14:26:00) [34]> officeman (05.08.05 14:21)
> пример ниже. работает очень медленно.
Гм... есть подозрение, что он вообще не работает.