Анимация
JavaScript
|
Главная Библионтека
char AskStr (char defval,char prompt); Функция создает и выводит модальный диалог ввода строки. Используется в скриптах, тесно взаимодействующими с пользователем. В консольной версии окно будет выглядеть следующим образом: AskStr("MyDefaultString","MyPromt"); А в графической версии приглашения ввода выглядит так:
Если пользователь откажется от ввода и нажмет <Esc> или Cancel, то функция возвратит пустую строку, а не значение по умолчанию. Пример использования: auto s; s=""; while(s!="-") { s=AskStr(s,"Ваше имя?"); Message ("Добрый деньь (утро, вечер, ночь!) %s! \n",s); } char AskFile (long forsave,char mask,char prompt); Функция выдает диалоговое окно, предназначенное для выбора файла, оснащенное минимальными средствами навигации. Внешний вид окна для консольной и GUI версий, естественно различен. И в последнем случае у пользователя значительно больше возможностей и свободы действий. Флаг forsave, вероятно, должен был уточнять тип окна - на отктыие файла или на запись. За кажущейся идентичностью (и то и другое окно с точни зрения пользователя выгдядит одинаково) скрыта большая разница. Окно выбора файла для записи должно само запрашивать подтверждение, если запрошенный файл уже существет. IDA, однако, это не делает не зависимо от значения флага forsave. И в любом случае не выдает никаких подтверждений, если указанный файл уже существует. Если пользователь откажется от выбора и нажмет <Esc> или CANCEL - функция вернет пустую строку. В противном случае имя файла. Эта функция поддерживает длинные имена Windows 95\Windows NT 4.0, и это следует учитывать при операциях с именами файлов (например, синтаксическом разборе)
вызова) Пример использования (два приведенные выше окна были созданы с помощью AskFile(0,"*.*","MyPromt"); long AskAddr (long defval,char prompt); Функция выводит модальный диалог, запрашивающий у пользователя ввод адреса в формате segment : offset. Если сегмент указан, то функция вернет значение, вычисленное по следующей формуле. Value == segment « 4 + offset При этом функция позволяет указывать не только адреса, но и имена сегментов, вычисляя при этом адреса автоматически (обратите внимание, что при этом необходимо соблюдать регистр). Например: Message ("%x \n", AskAddr(0,"MyPromt")); [seg000:0] 10000 Но вот уже [Seg000:0] приведет к выводу диалога, предупреждающего о неверно введенном адресе, а функция возвратит ошибку BADADDR. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 [ 103 ] 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |