Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FireMonkey - macos - SetEndOfFile, нужен аналог SetEndOfFile 
:(
    Опции темы
ekzo
Дата 26.7.2014, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.8.2009

Репутация: нет
Всего: нет



Есть такая функция, не пойму чем на FireMonkey заменить SetEndOfFile

Код

procedure SetStreamEnd(aStream: TStream);
begin
  if aStream is THandleStream then SetEndOfFile((aStream as THandleStream).Handle)
  else if aStream is TMemoryStream then TMemoryStream(aStream).SetSize(aStream.Position);
end;


Это сообщение отредактировал(а) ekzo - 26.7.2014, 04:58
PM MAIL   Вверх
CynicRus
Дата 28.7.2014, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 31.5.2012

Репутация: нет
Всего: 5



В Posix есть функция ftruncate.

Полагаю, что в код будет выглядеть типа:
Код

 if aStream is THandleStream then  ftruncate((aStream as THandleStream).Handle, 0) 

PM MAIL   Вверх
ekzo
Дата 29.7.2014, 05:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.8.2009

Репутация: нет
Всего: нет



Была такая мысль. Спасибо, попробую.
PM MAIL   Вверх
bems
Дата 29.7.2014, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



а что, присваивание Size не работает?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ekzo
Дата 30.7.2014, 05:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 4.8.2009

Репутация: нет
Всего: нет



Цитата(CynicRus @ 28.7.2014,  10:10)
В Posix есть функция ftruncate.

Полагаю, что в код будет выглядеть типа:
Код

 if aStream is THandleStream then  ftruncate((aStream as THandleStream).Handle, 0) 

В итоге файл получается нулевого размера...

Добавлено через 1 минуту и 14 секунд
Цитата(bems @ 29.7.2014,  12:52)
а что, присваивание Size не работает?

Будьте добры поподробней smile
PM MAIL   Вверх
bems
Дата 30.7.2014, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(ekzo @  30.7.2014,  05:47 Найти цитируемый пост)
Будьте добры поподробней

я имею в виду присваивание aStream.Size := aStream.Position

это фактически тоже самое что у тебя для случая TMemoryStream. но не понятно зачем ты особо предусматриваешь случай TMemoryStream а особо THandleStream, еще и скатываешься в апи-вызовы для последнего случая. в ХЕ4 например THandleStream.SetSize реализована так:
Код

procedure THandleStream.SetSize(const NewSize: Int64);
begin
  Seek(NewSize, soBeginning);
{$IF Defined(MSWINDOWS)}
  Win32Check(SetEndOfFile(FHandle));
{$ELSEIF Defined(POSIX)}
  if ftruncate(FHandle, Position) = -1 then
    raise EStreamError(sStreamSetSize);
{$ENDIF POSIX}
end;

то есть ты можешь всегда делать SetSize(Positioin) или Size := Positioin

или я не уловил какую-то тонкость?


--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.