Avandom
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Zloy_Gelud У тебя получается цикл, при котором, если ты выберешь диск "C:" то у тебя он приостановится, а если ты выберешь диск "D:", то Цитата: if (tPath.Drive.."\\" ~= cDriveLetter) then | сначала сверится с диском С и так как возвращается в данном случае true, то и выходит один раз сообщение Цитата: Dialog.Message("Ошибка", "Установка на этот диск не возможна.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1); | Если же ты выбираешь другой диск, отличный от своих локальных, то у тебя будет два раза выводится сообщение, так как цикл два раза проверит и два раза условия будут true и поэтому выводится два раза сообщение. делай так: Код: local sPath = Input.GetText("Install Directory Entry"); -- путь установки local tPath = String.SplitPath(sPath); -- разлаживаем путь... local cDrive = String.Left(sPath, 3); -- первые 3 знака в пути установки tDrives = Drive.Enumerate(); -- таблица дисков -- если буква диска не получена или третий символ в пути установки не является слэшем или путь установки менее 3 знаков if (tPath.Drive == "") or (String.Right(cDrive, 1) ~= "\\") or (String.Length(sPath) <= 3) then Dialog.Message("Ошибка", "Вы должны указать полный путь с буквой диска; например:\r\n\nC:\\APP", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1); else for i, cDriveLetter in tDrives do -- перебитаем в цикле по одному диску if (Drive.GetType(tPath.Drive) == 3) then else Dialog.Message("Ошибка", "Установка на этот диск не возможна.", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1); break; end end end |
| Всего записей: 37 | Зарегистр. 11-05-2007 | Отправлено: 00:45 13-06-2007 | Исправлено: Avandom, 00:56 13-06-2007 |
|