Вверх ↑
Этот топик читают: Гость
Ответов: 3943
Рейтинг: 622
#16: 2012-02-06 13:40:10 ЛС | профиль | цитата
Раз ты уже пилишь FileStream... У меня давно руки чешутся добавить свойство ShareMode (на основе констант ofShareExclusive, ofShareDenyWrite, ofShareDenyRead, ofShareDenyNone) и CreationFlags (константы ofCreateNew, ofCreateAlways, ofOpenExisting, ofOpenAlways, ofTruncateExisting).

Для этого в коде нужно вызовы NewReadFileStream, NewWriteFileStream и NewReadWriteFileStream заменить
на NewFileStream с указанием полного списка атрибутов. Это позволит, например, двум программам писать в один файл, или блокировать файл от чтения. Как идея?
карма: 19

1
Голосовали:Konst
Ответов: 966
Рейтинг: 34
#17: 2012-02-08 00:28:12 ЛС | профиль | цитата
Netspirit, идея отличная, но я так, попутно немного ковырнул FileStream.. Но глубоко в потоки еще не въехал (спасибо Hiasm ). Пока вышеописанная функция мне не нужна, как понадобится попробую реализовать, если кому-то не понадобится раньше. В принципе, так и должны создаваться, ИМХО, новые компоненты. Заранее впрок кодить неохота.
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 25463
Рейтинг: 2071
#18: 2012-02-08 01:24:04 ЛС | профиль | цитата
Netspirit писал(а):
Как идея?

Но это будет уже совсем другой компонент, тк совместимость нулевая, те вообще никакая. И лепить его как мод стандаотного компонента я бы поостерегался, а лучше бы не советовал совсем
карма: 19

0
Ответов: 3943
Рейтинг: 622
#19: 2012-02-08 13:43:01 ЛС | профиль | цитата
А какие проблемы с совместимостью? Добавить два новых свойства, значения по-умолчанию которых соответствуют старому поведению компонента.
По-умолчанию, ShareMode=ShareDenyWrite, что сейчас и установлено при Mode=(Read, Write, ReadWrite)

Разве только свойство CreationFlags должно быть разным при разных Mode. Сейчас это:
при Mode=Read - ofOpenExisting
при Mode=Write - ofOpenAlways
при Mode=ReadWrite - ofOpenAlways
То-есть, в этом свойстве первым пунктом можно поставить "Auto" и компонент будет имитировать старое поведение.

Я на выходных сделаю, если кто-то меня не обгонит.


карма: 19

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#20: 2012-02-08 13:50:48 ЛС | профиль | цитата
Netspirit писал(а):
компонент будет имитировать старое поведение

Ну, если такого удасться добиться. И все же, назовите его лучше FileStreamEx, это будет более правильно
карма: 19

0
Ответов: 3943
Рейтинг: 622
#21: 2012-02-08 14:16:26 ЛС | профиль | цитата
Да я в компоненты выкладывать не буду. Я выложу в эту тему, как наиболее подходящую.
карма: 19

0
Ответов: 3943
Рейтинг: 622
#22: 2012-02-13 12:19:01 ЛС | профиль | цитата
Как и обещал - модификация компонента FileStream.

Добавлены свойства ShareMode и CreationFlag, а также событие onError (которое в отличии от мода Aziz'а выдаёт код ошибки и позволяет более точно определить причину).

Подробное описание нововведений - в файле Readme.txt.

Предполагается полная совместимость со старыми схемами. Если найдете ошибку - сообщайте.

FileStream Mod 2-4

Редактировалось 1 раз(а), последний 2016-09-16 17:05:17
карма: 19

2
Голосовали:Aziz, Konst
Ответов: 817
Рейтинг: 52
#23: 2012-09-07 21:21:24 ЛС | профиль | цитата
SMTP
http://forum.d2h.ru/forum_serv.php?q=56&id=3294
Позволяет отправлять письма в формате HTML

Большое спасибо iarspider
карма: 1

2
Голосовали:Konst, user_asm
Ответов: 3943
Рейтинг: 622
#24: 2012-09-29 11:30:15 ЛС | профиль | цитата
Модификация StreamCopy

Позволяет работать со стримами до 4 Гб. Существующий компонент использует функцию KOL, которая копирует Count байт напрямую в память, поэтому размер копируемых данных жестко ограничен максимальным непрерывным свободным блоком оперативной памяти. У меня при ОЗУ 3.5 Гб (Win 32 bit) 1.3 Гб файл таким образом уже не копируется.

В моем моде используется переработанная KOL-овская процедура, которая копирует в память не сразу Count байт, а блоками в BufferSize байт. В архиве есть демонстрационная схема: проверьте максимальный размер копируемого файла при BufferSize=0 и например BufferSize=10485760 (10 Мб).

При работе со стримами более 2 Гб следует учитывать, что свойства стрима Size и Position будут отрицательными. Если эти свойства напрямую передаются от одного компонента к другому без проведения вычислений - всё будет работать как надо. Но если вам нужно выполнить какую-нибудь мат. операцию с этими числами (например, компонентом Math) - нужно предусмотреть соответствующую логику с положительными и отрицательными числами.

При BufferSize=0 (по-умолчанию) полностью отключается новый функционал и компонент работает по-старому.

StreamCopy Mod 1-4

ВНИМАНИЕ: в предыдущих версиях мода BufferSize указывался в мегабайтах, теперь - в байтах

Редактировалось 3 раз(а), последний 2017-04-05 11:29:05
карма: 19

2
Голосовали:login, Ex_
Разработчик
Ответов: 25463
Рейтинг: 2071
#25: 2012-09-29 14:02:36 ЛС | профиль | цитата
Netspirit, я еще раз повторюсь, что для копирования файлов такой длины кроме SharedStream лучше ничего не использовать. SharedStream использует API низкоуровневого копирования, быстрее которого не копирует уже ничего, а файлы в экзобайты длиной еще не скоро появятся
карма: 19

0
Ответов: 966
Рейтинг: 34
#26: 2012-11-05 13:47:56 ЛС | профиль | цитата
Вот, потребовалось очищать нарисованые волны в волновом симуляторе, а кнопки ресет не нашел на компоненте. Добавил.

------------ Дoбавленo в 13.47:
Добавил в Тranslator проверку свойств элемента, чтобы устранить взаимоисключающие ситуации, теперь элемент работает при любом сочетании свойств, и отдать приоритет внешним языковым файлам если они есть, если нет, перевод будет браться из программы. Удобно если пользователя не устраивает дефолтный перевод, он можт создать свой языковый файл. В стандартном компоненте альтернативный перевод не предусмотрен.
hitranslator_with ai.rar
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4400
Рейтинг: 472
#27: 2013-01-08 14:17:14 ЛС | профиль | цитата
IC для отображения пункта меню в правой части, может кому пригодится. code_29997.txt
карма: 4

0
файлы: 1code_29997.txt [1.4KB] [203]
Разработчик
Ответов: 25463
Рейтинг: 2071
#28: 2013-01-08 15:03:49 ЛС | профиль | цитата
andrestudio писал(а):
IC для отображения пункта меню в правой части

Для информации -- MenuEx поддерживает эту фичу без IC (свойство EndItemRight=True)
карма: 19

0
Ответов: 4400
Рейтинг: 472
#29: 2013-01-08 16:17:23 ЛС | профиль | цитата
nesco, в современных осях самопальные меню уже не актуальны, всё красиво система прорисовывает. Menu в HiAsm какое-то убожество, вот об этом можно подумать
карма: 4

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#30: 2013-01-08 16:55:07 ЛС | профиль | цитата
andrestudio писал(а):
всё красиво система прорисовывает

Ты это офису расскажи, там всегда было самопальное меню, не такое как в системе
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)