Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-1114319054
XLDiB
2005-04-24 09:04
2005.08.07
Как узнать набранную строку в броузере


5-1092297064
AlexFe
2004-08-12 11:51
2005.08.07
Изменение размера ComboBox


14-1121298969
Михаил(Киров)
2005-07-14 03:56
2005.08.07
Администрирование компьютерных клубов


1-1121867507
MegaVolt
2005-07-20 17:51
2005.08.07
Перекрыл Seek у TFileStream теперь не могу узнать Size :(


9-1113984845
Novice
2005-04-20 12:14
2005.08.07
Какой класс для объекта выбрать в ГЛС





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