Главная страница
    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.007 c
15-1209848669
NaRuTo
2008-05-04 01:04
2008.06.15
Проблема с железом


15-1209876680
TUser
2008-05-04 08:51
2008.06.15
Лицензионное все на свете - это не для авторов продукта


2-1211457981
NieL
2008-05-22 16:06
2008.06.15
почему для некоторых EXE не получается извлечь инфу


2-1211222071
fics
2008-05-19 22:34
2008.06.15
Диспетчер устройств


2-1211463953
student_iz_muroma
2008-05-22 17:45
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский