1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Скрипт Diablo 3 Install 1.5.8

Скрипт Diablo 3 Install.

  1. Ветеран

    Регистрация:
    16 июн 2011
    Сообщения:
    101
    Симпатии:
    90
    Пользователь Zimbo разместил новый ресурс:

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

    Узнать больше об этом ресурсе...
     
    Krinkels, Loner, GARID и 9 другим нравится это.
  2. Старожил

    Регистрация:
    24 май 2012
    Сообщения:
    1
    Симпатии:
    0
  3. Ветеран

    Регистрация:
    16 июн 2011
    Сообщения:
    101
    Симпатии:
    90
     
  4. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    А без пруфа - я-бы удалил.
    Эмм... дефолт винды - юникод, начиная с вин 2000
    для этого и нужны директивы перпроцессора, чтоб вызывать соответствующие версии апишных функций и соответствующие версии типы.
     
  5. Ветеран

    Регистрация:
    17 июн 2011
    Сообщения:
    471
    Симпатии:
    278
    SimSalabim,
     
    RameR, Zimbo, ARS_23 и 2 другим нравится это.
  6. Ветеран Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    647
    Симпатии:
    253
    хм... какбы странно то не было, но у меня заработало если:
    Код (Text):
    function LoadImage(hInst: THandle; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImage{#A}@user32.dll stdcall';
    заменить на:
    Код (Text):
    function LoadImage(hInst: THandle; ImageName: PAnsiChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall';
    так, у меня, пашет, и на анси, и на юникоде... хотя вызов под анси... :unknown:

    ЗЫ и да я догадываюсь, что скажет Gnom ;)
     
    Zimbo нравится это.
  7. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    Не угадал. Я тоже обратил внимание, что на юникоде работают более правильно именно анси вызовы. просто нужно смотреть юникодные вызова - там отличие не только в букве но и в переменных - в принципе при вызове ты можешь указать и ансишные, но требуются как раз другие :
    Код (Text):

    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;
    Как видим, юникодный вызов отличается своими переменными, от того и не работает с теми, которые ему пытались подсунуть.

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

    Регистрация:
    16 июн 2011
    Сообщения:
    101
    Симпатии:
    90
    Спасибо за подсказку, я думал что или в ней ошибка или в function DeleteObject(p1: LongWord): BOOL; external 'DeleteObject@gdi32.dll stdcall'; которая для юникода вызывается DeleteObjectW, но она работала как раз правильно, спасибо Вам и Эде

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

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

    Регистрация:
    15 июн 2011
    Сообщения:
    647
    Симпатии:
    253
    ну да точно, вчера вечером было лень глянуть... ну тогда поидее можно просто в вызове вместо PAnsiChar написать String, должно и на анси, и на юникоде работать.

    Там всего один вызов DeleteObjectW, вызов DeleteObjectA отсутствует...

    лучше заменить переменую :)
     
    Последнее редактирование: 29 май 2012
  10. Ветеран

    Регистрация:
    16 июн 2011
    Сообщения:
    101
    Симпатии:
    90
    Да, я видел:)

    проверил, на анси и на юникоде работает ;)
     
  11. Ветеран

    Регистрация:
    13 авг 2011
    Сообщения:
    91
    Симпатии:
    33
    а почему скрипты в 2-х версиях не сделать (для юникод и анси) так бы владельцы разных версий качали бы подходящий для их компилятора скрипт, а не мучились с редактированием.
     
  12. Борода Модератор

    Регистрация:
    15 июн 2011
    Сообщения:
    718
    Симпатии:
    534
    Пол:
    Мужской
    PUNISHER, Там это легко выправить с помощью директивы препроцессара
    Код (Text):
    #ifdef UNICODE
    юникодный вызов
    #else
    анси-вызов
    #ehdif
    В принципе так и сделано, не учтено, что переменные тоже отличаются. тут эдя правильно сказал - переменная string вполне подходит для временного решения, поскольку в анси она равна AnsiString а в юникоде - WideString, что по размеру уже подхит к условим.
     
    Последнее редактирование: 29 май 2012
  13. Ветеран

    Регистрация:
    16 июн 2011
    Сообщения:
    101
    Симпатии:
    90
    Вот в этом и была моя ошибка :(
     
  14. Старожил

    Регистрация:
    8 дек 2011
    Сообщения:
    7
    Симпатии:
    0
    В скрипте возникает проблема при выборе папки в меню пуск. Какую бы директорию не указал, адрес в поле не меняется. Как решить?
     
  15. Ветеран

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

    Регистрация:
    15 июн 2011
    Сообщения:
    193
    Симпатии:
    51
     
    zero 414, YURSHAT и aLLeXUs нравится это.

Поделиться этой страницей