|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
Ветеран Сообщения: 1264 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
Отправлено: 16:09, 04-04-2018 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Спасибо! Попробую
|
Отправлено: 15:09, 18-04-2019 | #301 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 284
|
Профиль | Отправить PM | Цитировать Цитата alexander-mex:
Сделано на Inno Setup |
|
------- Последний раз редактировалось ZVSRus, 18-04-2019 в 16:27. Отправлено: 16:06, 18-04-2019 | #302 |
Пользователь Сообщения: 74
|
Профиль | Отправить PM | Цитировать Здраствуйте. Подскажите пож. константу папки Сохраненные игры (C:\Users\XXX\Saved Games). В справке такой нет.
|
Отправлено: 01:04, 27-04-2019 | #303 |
Ветеран Сообщения: 855
|
Профиль | Отправить PM | Цитировать ROMKA-1977, как вариант
или
[Code] if RegValueExists(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', '{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}') then begin // The value exists end; end; {4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4} = это путь к папке в случае если пользователь изменит путь через свойства. Проверил от 7 и до 10. Везде один и тот же {4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4} |
------- Последний раз редактировалось habib2302, 27-04-2019 в 01:57. Отправлено: 01:39, 27-04-2019 | #304 |
Ветеран Сообщения: 855
|
Профиль | Отправить PM | Цитировать ROMKA-1977, или же
%USERPROFILE%\Saved Games |
------- Отправлено: 14:07, 27-04-2019 | #305 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Цитата Iska:
IsAnsi
Наверху кода создаю такую функцию:
function IsAnsi(S: String): Boolean; var S1, S2: string; begin S1 := AnsiUppercase(S); S2 := Uppercase(S); if CompareStr(S1, S2) = 0 then begin S1 := Lowercase(S); S2 := AnsiLowercase(S); if CompareStr(S1, S2) = 0 then Result := True; end; end; В инете нашёл такую интересную процедуру определения символов по их номерам и даже по диапазонам номеров в десятичном виде: procedure justNumbers(Sender: TObject; var Key: Char); begin if not ((Key = #8) or (Key = #43) or ((Key >= #48) and (Key <= #57))) then begin Key := #0; end; end; Либо отказаться от первой функции и сделать определение символов по их номерам? Чую собака неглубоко зарыта, но что-то у меня пока не получается никак. |
|
Последний раз редактировалось ErikPshat, 29-04-2019 в 08:49. Отправлено: 19:43, 27-04-2019 | #306 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Для одного из проектов искал самый быстрый подсчет crc32 для файлов и решил сделать dll, кому интересно забирайте в аттаче.
подробнее...
Алгоритм работает так: если поддержку SSE 4.2 процессор имеет, срабатывает аппаратный подсчет crc32c (с - использование Intel полинома: $1EDC6F41), в противном случае, если процессор слишком старый и не имеет поддержку SSE 4.2, то срабатывает crc32cfast с оптимизацией на ассемблере (имеет тот же результат подсчета). отличие результата подсчета от стандартного crc32 только из-за использования другого инициализационного полинома.
По заверению авторов кода, результаты подсчета следующие: - Our optimized unrolled x86 version - aka crc32cfast() - performs the test at a very good pace of 1.7 GB/s; - SSE 4.2 version - aka crc32csse42() - gives an amazing 3.7 GB/s speed (on both Win32 and Win64 platforms); - simple rolled version of the algorithm (similar to the one in Delphi zlib unit) runs at 330 MB/s. Основано на: https://synopse.info/fossil/info/8fe7cc53b7 |
Последний раз редактировалось usermode, 29-04-2019 в 15:03. Отправлено: 22:54, 28-04-2019 | #307 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать usermode, ещё одна DLL конечно никогда не помешает. Только в наши времена подсчёт CRC32 имеет актуальность на маленьких файлах, пускай даже самый быстрый подсчёт CRC32. По крайней мере даже MD5 быстрее подсчитывается стандартной функцией препроцессора GetMD5OfFile, не говоря уже про более точный SHA-1 и более быстрый подсчёт больших файлов по 1-4-10-20 Гига стандартной функцией препроцессора GetSHA1OfFile. Может быть я ошибаюсь, вашу утилиту не пробовал, но на практике часто приходится подсчитывать файлы по 4 и более Гб, так вот, какой бы быстрый не был бы CRC32, так это можно уснуть надолго, тогда как SHA-1 обычно замечено мною, что на несколько махов быстрее подсчитывается
Кстати, стоит мне изменить путь s:='D:\somebigfile.dat'; или подсунуть по этому пути реальный файл, как прога тут же выдаёт ошибку: Ну а мне никто так и не поможет? |
Последний раз редактировалось ErikPshat, 29-04-2019 в 09:38. Отправлено: 09:01, 29-04-2019 | #308 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать ErikPshat, у меня dll на всех ОС, включая Windows 10, работает нормально. Может причина в "неуниверсальных" параметрах выделения или освобождения памяти.
Можно попросить протестировать "болванку" на дельфи? Нужно прописать путь к существующему файлу, нажать каждую кнопку и сообщить, на каких будут ошибки. Заодно сравните на гигабайтных файлах скорость подсчета сравнительно md5 и sha-1 (предпочтительно на ssd при наличии) и убедитесь в обратном У меня на ssd подсчитывает фильм 2.22 Gb стандартной системной реализацией за 4.8sec, sse4.2 за 0.8sec, fast assembler за 1.2 sec. Цитата:
Скрытый текст
procedure InitializeWizard; var i,j: integer; s,abc: string; begin j := 0; abc := '0123456789абв%*@abc'; s:='012'; for i:=1 to Length(s) do begin if Pos(s[i],abc) = 0 then inc(j); end; if j >= 1 then begin MsgBox('Error! 0123456789абв%*@abc chars only are allowed!', mbInformation, MB_OK); Exit; end; end; лучше учесть те символы, что можно, чем учитывать все, что нельзя. add причина ошибки dll в некорректном определении технологии SSE 4.2, там где ее нет, например на CPU с SSE 4.1, она определяется что есть. |
|
Последний раз редактировалось usermode, 29-04-2019 в 15:03. Отправлено: 11:32, 29-04-2019 | #309 |
Пользователь Сообщения: 54
|
Профиль | Отправить PM | Цитировать Цитата usermode:
За код спасибо, правда я видел подобные варианты, но видимо это самый универсальный вариант, правда я хотел бы взять диапазон через Key: Char по нумерации в таблице ASCII-символов. |
|
Последний раз редактировалось ErikPshat, 29-04-2019 в 15:23. Отправлено: 14:26, 29-04-2019 | #310 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 |
|