Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

бесконечная запись в файл [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

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)  

> пример ниже. работает очень медленно.

Гм... есть подозрение, что он вообще не работает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо