Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

TFileStream?   Найти похожие ветки 

 
ZasranYolidza   (2003-10-02 20:22) [0]

Доброе время суток Мастера!
Помогите разобратся, как работать с потоками, а именно с TFileStream?
Дело в том что мне необходимо считывать данные из файла побайтно, что занимает огромное количество времени при использовании AssignFile..CloseFile, при использовании TFileStream процесс ускоряется, но осуществить доступ к байтам я сумел лиш через копибуффер (фактически это тоже повторение AssignFile...). Может есть возможность работать напрямую?


 
-=x77=-   (2003-10-02 20:27) [1]

А почему нельзя считать данные целиком, а потом побайтно работать с ними уже из памяти? Возьмите TMemoryStream, сделайте LoadFromFile, а потом уже из памяти читайте побайтно: MyMemoryStream.Read (buf, 1);


 
-=x77=-   (2003-10-02 20:27) [2]

А почему нельзя считать данные целиком, а потом побайтно работать с ними уже из памяти? Возьмите TMemoryStream, сделайте LoadFromFile, а потом уже из памяти читайте побайтно: MyMemoryStream.Read (buf, 1);


 
Юрий Федоров ©   (2003-10-02 20:56) [3]

>>-=x77=- (02.10.03 20:27) [2]
А смысл ( TMemoryStream)? Все равно операционка все закеширует в оперативку...
Лучше просто считать из TFileStream в array of byte, а потом с этим массивом работать поэлементно


 
DeScriptor ©   (2003-10-02 23:43) [4]

Я всегда делал так:

procedure DoSomething();
var DataBlock: array of byte;
DataFile: file;
succ:integer;

begin
AssignFile(DataFile,"filename.ext");
Reset(DataFile,1);
SetLength(DataBlock,65536);
repeat
BlockRead(DataFile,DataBlock[0],65563,succ);
тут происходит то, что вам нужно
until EOF(DataFile);
CloseFile(DataFile);
end;


Надеюсь, вам это поможет...


 
Amoeba   (2003-10-03 12:38) [5]

А может просто отобразить этот файл в память (MemoryMapped File) и далее просто обращаться к нему как к байтовому массиву в памяти, хотя на самом деле все остается на диске. Единственно придется вызвать несколько API функций.


 
Serginio1   (2003-10-03 14:13) [6]

Используй кольцевой буффер. Пример
http://www.1c.hippo.ru/cgi-bin/predownl.cgi?id=2019



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

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
7-51539
mihmax
2003-07-31 15:29
2003.10.16
Администрирование Windows2000


14-51465
Turin
2003-09-29 13:10
2003.10.16
Delphi - классы, массивы


9-51047
Gayrus
2003-03-22 16:14
2003.10.16
Без OpenGL


1-51285
nomadpo
2003-10-06 15:31
2003.10.16
Отображение на панели задач Windows


3-51122
KIR
2003-09-24 18:39
2003.10.16
Страшно тормозит запрос к базе IB