Вниз
Скачать: CL | DM;

Перекрыл 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
1-1121435444
Destroyer
2005-07-15 17:50
2005.08.07
Как узнать какой объект лежит ниже?


4-1117472658
duk_
2005-05-30 21:04
2005.08.07
температура скорость


3-1120125911
Belkova
2005-06-30 14:05
2005.08.07
onKeyPress


4-1118307065
Maxuz
2005-06-09 12:51
2005.08.07
COM порты и Power User


1-1121522210
tmp266011
2005-07-16 17:56
2005.08.07
ComboBox отступ от границ




   Наверх