Diablo 3 Install

Скрипт Diablo 3 Install 1.5.8

Нет прав для скачивания

Zimbo

Участник
Пользователь Zimbo разместил новый ресурс:

Diablo 3 Install - Скрипт Diablo 3 Install.

Информация:

Описание:
В данном скрипте реализована проверка необходимого места на жёстком диске, использование внешнего шрифта. Для распаковки используется модуль ISDone.​

Использованные библиотеки:
- botva2 (0.9.5)
-...​
Узнать больше об этом ресурсе...
 

Zimbo

Участник
Что за косяк Zimbo в Diablo 3 Install v 1 2 0, белая рамка при установке по краям в инстала ???
Что за косяк Zimbo в Diablo 3 Install v 1 2 0 белые полосы в инстале
 

LexBell

Борода
Супер модератор
блин, еще и на видео снял
А без пруфа - я-бы удалил.
Эмм... дефолт винды - юникод, начиная с вин 2000
не хотела маска вроде работать
для этого и нужны директивы перпроцессора, чтоб вызывать соответствующие версии апишных функций и соответствующие версии типы.
 

Edison007

Ветеран
Модератор
Что за косяк Zimbo в Diablo 3 Install v 1 2 0, белая рамка при установке по краям в инстала ???
хм... какбы странно то не было, но у меня заработало если:
Код:
function LoadImage(hInst: THandle; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImage{#A}@user32.dll stdcall';
заменить на:
Код:
function LoadImage(hInst: THandle; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall';
так, у меня, пашет, и на анси, и на юникоде... хотя вызов под анси... :unknown:

ЗЫ и да я догадываюсь, что скажет Gnom ;)
 

LexBell

Борода
Супер модератор
ЗЫ и да я догадываюсь, что скажет
Не угадал. Я тоже обратил внимание, что на юникоде работают более правильно именно анси вызовы. просто нужно смотреть юникодные вызова - там отличие не только в букве но и в переменных - в принципе при вызове ты можешь указать и ансишные, но требуются как раз другие :
Код:
function LoadImageA(hInst: HINST; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; stdcall;
function LoadImageW(hInst: HINST; ImageName: PWideChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; stdcall;
Как видим, юникодный вызов отличается своими переменными, от того и не работает с теми, которые ему пытались подсунуть.

дефолт не всмысле юникод, а дефолтный инстал
А для чего ты такой красивый инсталл писал( или точнее собирал из того,что нашел)? что-бы люди с ним помучались, и ввиду невозможности использования этой красоты "юзали дефолт"?
 
Последнее редактирование:

Zimbo

Участник
Не угадал. Я тоже обратил внимание, что на юникоде работают более правильно именно анси вызовы. просто нужно смотреть юникодные вызова - там отличие не только в букве но и в переменных - в принципе при вызове ты можешь указать и ансишные, но требуются как раз другие :
Код:
function LoadImageA(hInst: HINST; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; stdcall;
function LoadImageW(hInst: HINST; ImageName: PWideChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; stdcall;
Как видим, юникодный вызов отличается своими переменными, от того и не работает с теми, которые ему пытались подсунуть.
Спасибо за подсказку, я думал что или в ней ошибка или в function DeleteObject(p1: LongWord): BOOL; external 'DeleteObject@gdi32.dll stdcall'; которая для юникода вызывается DeleteObjectW, но она работала как раз правильно, спасибо Вам и Эде

Gnom написал(а):
А для чего ты такой красивый инсталл писал( или точнее собирал из того,что нашел)? что-бы люди с ним помучались, и ввиду невозможности использования этой красоты "юзали дефолт"?
Ну "собрал" это как то значить вроде я куски скрипта клеил, а и я оптимизировал вызовы, но не знал что функции отличются
буду как нибудь оптимизировать весь скрипт - буду нуждатся в Вашей помощи, чтобы избежать подобных проколов

З.Ы. SimSalabim для исправления косяка смотрите пост Edison007
 

Edison007

Ветеран
Модератор
Как видим, юникодный вызов отличается своими переменными, от того и не работает с теми, которые ему пытались подсунуть.
ну да точно, вчера вечером было лень глянуть... ну тогда поидее можно просто в вызове вместо PAnsiChar написать String, должно и на анси, и на юникоде работать.

в function DeleteObject(p1: LongWord): BOOL; external 'DeleteObject@gdi32.dll stdcall'; которая для юникода вызывается DeleteObjectW
Там всего один вызов DeleteObjectW, вызов DeleteObjectA отсутствует...

SimSalabim для исправления косяка смотрите пост Edison007
лучше заменить переменую :)
 
Последнее редактирование:

Zimbo

Участник
Edison007 написал(а):
Там всего один вызов DeleteObjectW, вызов DeleteObjectA отсутствует...
Да, я видел:)

Edison007 написал(а):
просто в вызове вместо PAnsiChar написать String, должно и на анси, и на юникоде работать.
проверил, на анси и на юникоде работает ;)
 

PUNISHER

Участник
а почему скрипты в 2-х версиях не сделать (для юникод и анси) так бы владельцы разных версий качали бы подходящий для их компилятора скрипт, а не мучились с редактированием.
 

LexBell

Борода
Супер модератор
PUNISHER, Там это легко выправить с помощью директивы препроцессара
Код:
#ifdef UNICODE
юникодный вызов
#else
анси-вызов
#ehdif
В принципе так и сделано, не учтено, что переменные тоже отличаются. тут эдя правильно сказал - переменная string вполне подходит для временного решения, поскольку в анси она равна AnsiString а в юникоде - WideString, что по размеру уже подхит к условим.
 
Последнее редактирование:

Inknorth

Мимокрокодил
В скрипте возникает проблема при выборе папки в меню пуск. Какую бы директорию не указал, адрес в поле не меняется. Как решить?
 

aLLeXUs

Участник
Inknorth, держи — http://rghost.ru/39772271
P.S. Если подробнее, то нужно было в DirEditOnChange добавить
Код:
if WizardForm.CurPageID = wpSelectProgramGroup then begin
  GroupEditLabel.Caption:=MinimizePathName(WizardForm.GroupEdit.Text, GroupEditLabel.Font, GroupEditLabel.Width);
end;
В секции SelectProgrammGroupPage закомментировать две строчки(я не знаю почему их там две)
Код:
WizardForm.DirEdit.OnChange:=@DirEditOnChange;
и там же добавить
Код:
WizardForm.GroupEdit.OnChange := @DirEditOnChange;
 
Сверху