Раз ты уже пилишь FileStream... У меня давно руки чешутся добавить свойство ShareMode (на основе констант ofShareExclusive, ofShareDenyWrite, ofShareDenyRead, ofShareDenyNone) и CreationFlags (константы ofCreateNew, ofCreateAlways, ofOpenExisting, ofOpenAlways, ofTruncateExisting).
Для этого в коде нужно вызовы NewReadFileStream, NewWriteFileStream и NewReadWriteFileStream заменить
на NewFileStream с указанием полного списка атрибутов. Это позволит, например, двум программам писать в один файл, или блокировать файл от чтения. Как идея?
Этот топик читают: Гость
Ответов: 4628
Рейтинг: 749
|
|||
карма: 26 |
| ||
Голосовали: | Konst |
Ответов: 1291
Рейтинг: 47
|
|||
Netspirit, идея отличная, но я так, попутно немного ковырнул FileStream.. Но глубоко в потоки еще не въехал (спасибо Hiasm ). Пока вышеописанная функция мне не нужна, как понадобится попробую реализовать, если кому-то не понадобится раньше. В принципе, так и должны создаваться, ИМХО, новые компоненты. Заранее впрок кодить неохота.
|
|||
карма: 3 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): Как идея?Но это будет уже совсем другой компонент, тк совместимость нулевая, те вообще никакая. И лепить его как мод стандаотного компонента я бы поостерегался, а лучше бы не советовал совсем |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
А какие проблемы с совместимостью? Добавить два новых свойства, значения по-умолчанию которых соответствуют старому поведению компонента.
По-умолчанию, ShareMode=ShareDenyWrite, что сейчас и установлено при Mode=(Read, Write, ReadWrite) Разве только свойство CreationFlags должно быть разным при разных Mode. Сейчас это: при Mode=Read - ofOpenExisting при Mode=Write - ofOpenAlways при Mode=ReadWrite - ofOpenAlways То-есть, в этом свойстве первым пунктом можно поставить "Auto" и компонент будет имитировать старое поведение. Я на выходных сделаю, если кто-то меня не обгонит. |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): компонент будет имитировать старое поведениеНу, если такого удасться добиться. И все же, назовите его лучше FileStreamEx, это будет более правильно |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Да я в компоненты выкладывать не буду. Я выложу в эту тему, как наиболее подходящую.
|
|||
карма: 26 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Как и обещал - модификация компонента FileStream.
Добавлены свойства ShareMode и CreationFlag, а также событие onError (которое в отличии от мода Aziz'а выдаёт код ошибки и позволяет более точно определить причину). Подробное описание нововведений - в файле Readme.txt. Предполагается полная совместимость со старыми схемами. Если найдете ошибку - сообщайте. FileStream Mod 2-4 Редактировалось 1 раз(а), последний 2016-09-16 17:05:17 |
|||
карма: 26 |
| ||
Голосовали: | Aziz, Konst |
Ответов: 817
Рейтинг: 52
|
|||
SMTP
http://forum.d2h.ru/forum_serv.php?q=56&id=3294 Позволяет отправлять письма в формате HTML Большое спасибо iarspider |
|||
карма: 1 |
| ||
Голосовали: | Konst, user_asm |
Ответов: 4628
Рейтинг: 749
|
|||
Модификация 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 |
|||
карма: 26 |
| ||
Голосовали: | login, Ex_ |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit, я еще раз повторюсь, что для копирования файлов такой длины кроме SharedStream лучше ничего не использовать. SharedStream использует API низкоуровневого копирования, быстрее которого не копирует уже ничего, а файлы в экзобайты длиной еще не скоро появятся
|
|||
карма: 22 |
|
Ответов: 1291
Рейтинг: 47
|
|||
Вот, потребовалось очищать нарисованые волны в волновом симуляторе, а кнопки ресет не нашел на компоненте. Добавил.
------------ Дoбавленo в 13.47: Добавил в Тranslator проверку свойств элемента, чтобы устранить взаимоисключающие ситуации, теперь элемент работает при любом сочетании свойств, и отдать приоритет внешним языковым файлам если они есть, если нет, перевод будет браться из программы. Удобно если пользователя не устраивает дефолтный перевод, он можт создать свой языковый файл. В стандартном компоненте альтернативный перевод не предусмотрен. hitranslator_with ai.rar |
|||
карма: 3 |
|
Ответов: 5227
Рейтинг: 587
|
|||
IC для отображения пункта меню в правой части, может кому пригодится. code_29997.txt
|
|||
карма: 4 |
| ||
файлы: 1 | code_29997.txt [1.4KB] [819] |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
andrestudio писал(а): IC для отображения пункта меню в правой частиДля информации -- MenuEx поддерживает эту фичу без IC (свойство EndItemRight=True) |
|||
карма: 22 |
|
Ответов: 5227
Рейтинг: 587
|
|||
nesco, в современных осях самопальные меню уже не актуальны, всё красиво система прорисовывает. Menu в HiAsm какое-то убожество, вот об этом можно подумать
|
|||
карма: 4 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
andrestudio писал(а): всё красиво система прорисовываетТы это офису расскажи, там всегда было самопальное меню, не такое как в системе |
|||
карма: 22 |
|