Я работаю с файлами потоков, но произошла ошибка «из памяти». Кажется, я должен читать поток, байт за байт. Затем я загрузить файл с помощью этого метода:Delphi - как читать байк байта байта?
fs := TFileStream.Create("c:\a\a.avi", fmOpenRead or fmShareDenyWrite) ;
Далее я сбросить позицию потока:
fs.positon:=0;
Тогда я пытаюсь прочитать первые байты потока:
var
oneByte:byte;
begin
fs.Read(oneByte,2);
но не работает должным образом. Где моя ошибка?
Байт по байту не будет намного лучше, чем чтение всего файла за один раз. Потребуется навсегда чтение байта байтом. Вам нужна средняя почва. Читайте куски большего размера. Несколько МБ за раз. –
@DavidHeffernan AFAIK 'TFileStream' использует буферный доступ к файлу. Все еще чтение байта в байт может быть не самым подходящим вариантом, но это зависит от того, что должно быть сделано с данными чтения. –
@Dalija Вы совершенно ошибаетесь. У него нет буфера. Каждый вызов Read - это вызов win32 ReadFile. Очень неэффективен. Следовательно, необходимость в таких вещах: http://stackoverflow.com/a/5639712/505088 –