Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему TFileStream.size показывает 0 если файл отрывается


novill ©   (2006-10-12 18:07:00) 

и не пуст??? Данные из него читаются, но size как был  0 так и остается.


DrPass   (2006-10-13 00:22:00) [1]

Действительно... на меня склероз напал. А почему-то был уверен, что не работает. Сорри за дезинформацию :)


Джо   (2006-10-12 19:15:00) [2]

> [2] DrPass ©   (12.10.06 18:59)

Пардон, где такое написано?

Написано просто:

TStream.Size
Indicates the size in bytes of the stream.
Description

Use Size to find the size of the stream. Size is used internally in routines that read and write to and from the stream. Setting the Size property of TStream does nothing. Some descendants of TStream override this property to allow applications to change the size of the resource accessed using the stream.

В исходнике TStream.GetSizeеще лаконичнее:
 Pos := Seek(0, soCurrent);
 Result := Seek(0, soEnd);
 Seek(Pos, soBeginning);


Leonid Troyanovsky   (2006-10-12 19:13:00) [3]


> DrPass ©   (12.10.06 18:59) [2]

> или исходники, и узнать, что TFileStream.Size не обозначает
> размер файла... и вообще ничего не обозначает,


Ну, чего-то да и обозначает.
Оным можно даже размер файла изменить.
Hint: procedure THandleStream.SetSize

--
Regards, LVT.


Ketmar   (2006-10-12 19:13:00) [4]

угу. приходилось делать эмулятор seek для своих хитрых потоков. потому что есть гении, которые seek'ом и определяют размеры, и перекрытие сайза не спасает. %-)


DrPass   (2006-10-12 18:59:00) [5]

Потому что у кого-то религия не позволяет посмотреть хелп или исходники, и узнать, что TFileStream.Size не обозначает размер файла... и вообще ничего не обозначает, используется только для вызова seek по файлу


Ketmar   (2006-10-12 18:32:00) [6]

потому что ошибка в коде. или открывают вовсе не файл на локальном диске.


Наверх

Титульная страница Поиск, карта сайта Написать письмо