Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
ВнизПерекрыл Seek у TFileStream теперь не могу узнать Size :( Найти похожие ветки
← →
MegaVolt © (2005-07-20 17:51) [0]свойство Size читается так:
function TStream.GetSize: Longint;
var
Pos: Longint;
begin
Pos := Seek(0, 1);
Result := Seek(0, 2);
Seek(Pos, 0);
end;
Чтобы его узнать выполняется перемещение в конец файла. Если Seek перекрыт то вызывается мой Seek с требование переместиться на конец файла. В моём случае я хочу пересчитать перемещение от конца в перемещение от начала. И для этого нужно знать размер файла. А размер файла неузнать без перемещения на конец файла. Получается замкнутый круг.
Что делать?
Как вариант можно конечно реализовать
function TStream.GetSize: Longint;
var
Pos: Longint;
begin
Pos := текущее положение (извесно);
Result :=inherited Seek(0, 2);
inherited Seek(Pos, 0);
end;
но как то на мой взгляд это некрасиво выглядит. Может есть другие способы узнать размер TFileStream?
← →
Fay © (2005-07-20 19:57) [1]GetFileSize(DWORD(FHandle), ...
← →
Dok_3D © (2005-07-20 21:20) [2]2 MegaVolt © (20.07.05 17:51)
Что делать?
Не перекрывать Seek. Будь послушным мальчиком. Я серьезно.
← →
jack128 © (2005-07-21 00:39) [3]Зачем ты перекрываешь Seek?
← →
MegaVolt © (2005-07-21 11:29) [4]>Зачем ты перекрываешь Seek?
В моём компоненте есть внутренний буфер и Position не совпадает с Position реального физического файла. А Position вычисляется через Seek поэтому было решено его переопределить. Да и перемещение по файлу с учётом буфера отличается от оригинала.
← →
jack128 © (2005-07-21 12:12) [5]MegaVolt © (21.07.05 11:29) [4]
когда я чем подобным занимался, но не припомню, чтобы были проблемы.. просто используй inherited Seek там где те нужно рельное положение курсора в файле узнавать и все.
← →
MegaVolt © (2005-07-21 12:28) [6]>просто используй inherited Seek там где те нужно рельное положение курсора в файле узнавать и все.
Ага я это выше и писал :) Но я думал есть другие решения например GetFileSize мне кажется будет быстрее работать чем двойное перемещение по файлу. Хотя это нужно проверить.
← →
jack128 © (2005-07-21 12:37) [7]хе. А если сохранить размер файла в переменной, то это будет еще быстрее ;)
← →
MegaVolt © (2005-07-21 12:50) [8]А чтобы его сохранить в переменную нужно его вначале узнать.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.061 c