Главная страница
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.018 c
7-51545
sharkq
2003-08-02 15:32
2003.10.16
Передача файлов между двумя модемами.


14-51494
Knight
2003-09-28 10:10
2003.10.16
Опять на рыбалку...


14-51450
Viktor Kushnir
2003-09-29 18:27
2003.10.16
Зубы мудрости


6-51384
iWorm
2003-08-21 03:34
2003.10.16
Как передать c cокета TServerSocket на сокет TClientSocket


1-51245
ExE
2003-10-03 15:20
2003.10.16
Поможите ПОЖАЛУЙСТА с датой