Главная страница
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.014 c
2-1211361068
Crookers
2008-05-21 13:11
2008.06.15
Повторяющиеся записи DBGrid


2-1211289822
NieL
2008-05-20 17:23
2008.06.15
описание из EXE


15-1209447922
sql
2008-04-29 09:45
2008.06.15
ЦАП


2-1211459186
Tommy
2008-05-22 16:26
2008.06.15
DBLookupCombobox, postgresql, ADO


15-1209596280
PEAKTOP
2008-05-01 02:58
2008.06.15
Delphi 7/Project/Options = AV. Может кто знает ?