Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Вниз

Кааим образом можно быстро работать с байтовой структурой файлов?   Найти похожие ветки 

 
Pasechnik   (2002-12-22 11:08) [0]

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


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

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


 
Pasechnik   (2002-12-22 12:29) [2]

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



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;


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


 
Rooman   (2002-12-22 12:38) [3]

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


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

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

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


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

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


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

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


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

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

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



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
4-15362
С.М.
2002-11-19 15:25
2003.01.06
Как не занимать время процессора?


14-15271
Anatoly Podgoretsky
2002-12-17 07:40
2003.01.06
Именинники 17 декабря


14-15257
linker
2002-12-15 04:44
2003.01.06
Delphi 2!


1-14976
ПростоСтудент1-гоКурса
2002-12-24 00:33
2003.01.06
Помогите плз проблемы с 0


1-15095
vicheslav
2002-12-21 14:36
2003.01.06
Excel как можно получить выделеный диапазон?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский