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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
14-51432
sapsi
2003-09-25 13:24
2003.10.16
Ремонт квартиры


6-51385
malkolinge
2003-08-18 19:00
2003.10.16
TwebBrowser


1-51240
Zheks
2003-10-03 16:06
2003.10.16
MaskEdit


14-51454
Александр-И
2003-09-27 01:37
2003.10.16
У кого есть Proxies.dcu ?


1-51234
Буфер обмена
2003-10-03 14:32
2003.10.16
Clipboard.AsText - белеберда получается





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский