Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.15;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-1199891890
Kolan
2008-01-09 18:18
2008.06.15
При Open у TQuery c RequestLive = True получаю AV&amp;#133


3-1200209257
WladL
2008-01-13 10:27
2008.06.15
FireBird перестал видеть новосозданные поля и таблицы


15-1210052143
Slider007
2008-05-06 09:35
2008.06.15
С днем рождения ! 6 мая 2008 вторник


15-1209715515
Slider007
2008-05-02 12:05
2008.06.15
С днем рождения ! 2 мая 2008 пятница


2-1211435887
oleg_teacher
2008-05-22 09:58
2008.06.15
отчет





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