Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.15;
Скачать: CL | DM;

Вниз

Truncate и TFileStream   Найти похожие ветки 

 
Nucer   (2008-05-19 22:53) [0]

Как так же быстро обрезать файл через TFileStream как это делает функция Truncate?


 
{RASkov} ©   (2008-05-19 23:08) [1]

> [0] Nucer   (19.05.08 22:53)

Помоему просто выставить новый Size достаточно.... Это если хвост обрезать...


 
Anatoly Podgoretsky ©   (2008-05-19 23:15) [2]

> {RASkov}  (19.05.2008 23:08:01)  [1]

Из справки

Call SetSize to set the size of the resource. SetSize calls Seek to go to the indicated position, and then writes an end of file marker. If the size of the resource can not be changed, an exception is raised. For example, calling SetSize for a file handle that was opened in fmOpenRead mode will raise an exception.


 
Nucer   (2008-05-20 10:28) [3]

В classes у TStream:
property Size: Int64 read GetSize write SetSize64;

procedure TStream.SetSize(NewSize: Longint);
begin
 // default = do nothing  (read-only streams, etc)
 // descendents should implement this method to call the Int64 sibling
end;

procedure TStream.SetSize64(const NewSize: Int64);
begin
 SetSize(NewSize);
end;

procedure TStream.SetSize(const NewSize: Int64);
begin
{ For compatibility with old stream implementations, this new 64 bit SetSize
 calls the old 32 bit SetSize.  Descendent classes that override this
 64 bit SetSize MUST NOT call inherited. Descendent classes that implement
 64 bit SetSize should reimplement their 32 bit SetSize to call their 64 bit
 version.}
 if (NewSize < Low(Longint)) or (NewSize > High(Longint)) then
   raise ERangeError.CreateRes(@SRangeError);
 SetSize(Longint(NewSize));
end;


Получается такой вариант не работает?


 
Nucer   (2008-05-20 10:55) [4]

Хотя работает... но КАК - для меня остается загадкой


 
palva ©   (2008-05-20 10:59) [5]

Nucer   (20.05.08 10:28) [3]
Сначала вы спрашивали про TFileStream, а теперь почему-то перешли на TStream.
Вы лучше сначала попробуйте, а потом говорите, что не работает.


 
ЮЮ ©   (2008-05-20 11:00) [6]

> В classes у TStream:


> Получается такой вариант не работает?


> Хотя работает&#133 но КАК &#151; для меня остается загадкой


Смотреть, наверное, следует у TFileStream


 
palva ©   (2008-05-20 11:01) [7]


> Хотя работает... но КАК - для меня остается загадкой
>

Выхода два. Либо сами учите английский либо платите деньги переводчику.


 
Nucer   (2008-05-20 11:13) [8]

Прошу прощения, это delphi привело к методу TStream, когда я щелкнул по Size с зажатыми CTRL и ALT, хотя должно было привести к THandleStream.SetSize.


 
Palladin ©   (2008-05-20 11:23) [9]


> хотя должно было привести к THandleStream.SetSize

с чего ты взял?


 
Nucer   (2008-05-20 11:31) [10]

Потому что TFileStream потомок THandleStream и наследует его переопределенный метод SetSize.


 
Palladin ©   (2008-05-20 11:34) [11]


> Nucer   (20.05.08 11:31) [10]

а с чего ты взял, что щелкнув на свойстве Size, ты вдруг в мнгновение ока полетишь на SetSize ? откуда среде знать, что тебе нужно от свойства Size, его метод/поле Read или его метод/поле Write ?


 
Nucer   (2008-05-20 11:41) [12]

Согласен, что среда показала то, что смогла показать, но если продолжить демагогию...

В коде:
sr.Size:=vers[i].size
Навожу на sr.Size. Логично предположить, что мне нужен Write? =)


 
Palladin ©   (2008-05-20 11:44) [13]

среда - не является компилятором и на то что происходит в коде ей глубоко монопенисуально...



Страницы: 1 вся ветка

Текущий архив: 2008.06.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
15-1209827357
Pavia
2008-05-03 19:09
2008.06.15
Удаленный рабочий стол


15-1209962523
Илья Корстин
2008-05-05 08:42
2008.06.15
Синхронизация двух Outlook


2-1211328694
snake-as
2008-05-21 04:11
2008.06.15
Окно подтверждения


15-1209694656
TCanvas
2008-05-02 06:17
2008.06.15
Блюр без затемнения?


2-1211401846
ivan8511
2008-05-22 00:30
2008.06.15
Слаживание времени