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

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

Кааим образом можно быстро работать с байтовой структурой файлов? [D6, WinXP]


Pasechnik ©   (2002-12-22 11:08:00) 

TFileStream показывает удивительно низкие результаты в скрости, требуется произвести xor для каждого байта файла, как сделать это быстрее?


Юрий Зотов   (2002-12-24 06:13:00) [1]

Думаю, намного быстрее будет делать то же самое в TMemoryStream и обрабатывать по 4 байта, а не по одному. И не использовать seek/read с seek/write, а двигаться по памяти, используя Memory, указатель и его инкремент.

Учитывая, что у TMemoryStream него есть готовые LoadFromFile/SaveToFile, код практически не усложняется.


Fantasist   (2002-12-24 02:08:00) [2]

А еще, пожалуй, будет быстрее читать из одного файла, а писать в другой. Не поручусь, но думается так.


Anatoly Podgoretsky   (2002-12-22 13:07:00) [3]

Что же ты хочел при побайтовой работе, или обрабатывая весь файл целикоа или хотя бы поблочно, скажем за раз 64к


Rouse_   (2002-12-22 12:56:00) [4]

в дополнение progressbar1.Position:=st; убрать, он сильно тормозит данный цикл

Желаю успехов


Rooman   (2002-12-22 12:38:00) [5]

либо читай в буфер (несколько сот байт), либо пользуй FileMapping


Pasechnik   (2002-12-22 12:29:00) [6]

Примерно так...



procedure TForm1.Button2Click(Sender: TObject);
var
st:integer;
begin
for st:=0 to fsize-1 do //fsize - размер файла
begin
f.Seek(st,sofrombeginning);
f.read(bt,1);
bt:=bt xor strtoint(edit1.text);
f.Seek(st,sofrombeginning);
f.Write(bt,1);
application.ProcessMessages;
progressbar1.Position:=st;

end;
f.free;
progressbar1.Position:=0;
end;


...тормоза жуткие


Anatoly Podgoretsky   (2002-12-22 11:20:00) [7]

Что же ты такого сделал с TFileStream, что ты так на него обижен, дело конечно не в нем.
Код давай.


Наверх

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