FrancK,
Зачотно ты сделал)
Форум Записи участника |
Результаты поиска |
|
[DUОS]#167 | Тема: [ВАЖНО] Предложения на модерациюQuote (nikikin) надо изменить дизайн кнопок) Не забывай, что у меня накрылся комп и я с линукса. Но дизайн кнопок я постараюсь как можно скорее поменять. Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#168 | Тема: Отчёты дизайнераУ вас недостаточно прав для просмотра данного сообщения.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#169 | Тема: Разделение администраторского форума на советыУ вас недостаточно прав для просмотра данного сообщения.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#170 | Тема: [ВАЖНО] Покупка warcraft3infoУ вас недостаточно прав для просмотра данного сообщения.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
|
[DUОS]#172 | Тема: Разделение администраторского форума на советыУ вас недостаточно прав для просмотра данного сообщения.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#173 | Тема: Примитивные типы данных в JassВ информатике примитивным называется тип, который является базовым для языка программирования. В Jass таких типов шесть - integer, real, string, boolean, code и handle.
integer - самый простой тип данных. Jass использует 32-битные целочисленные, которые представляются путём парной арифметики (я сам не понял, что есть two's-complement, может, кто подскажет?), в общем, это то же самое, что и long на языке программирования С. Примеры целочисленных: Code local integer a = 5 // 5 local integer b = 2+3 // 5 local integer c = a+3 // 8 local integer d = 19/10 // 1 local integer e = R2I(19.0/10.0) // 1 local integer f = S2I("5") // 5 local integer g = 010 // 8 local integer h = 0x10 // 16 local integer i = 'a' // 97 local integer j = 'abcd' // 1633837924 Переменная d - пример деления. Jass отбрасывает дробную часть, когда одну целочисленную делит на другую. Переменная e - Пример деления реальных (подробнее об этом ниже) и конвертации результата в целочисленную через R2I. Переменная f - Конвертация строки через S2I. Переменная g - Восьмеричное число. Переменная h - Шестнадцатеричное число (или просто хекс). Переменная i - Символ ASCII или 256-ричное число. Переменная j - Комбинация четырёх ASCII символов. Известна больше как равкод. Немного о равкодах. Если в GUI они имеют персональные типы "Тип объекта" и "Способность", то в Jass это простые, обычные числа. К примеру, равкод 'hfoo'. Значения в ASCII его символов такие: 'h', 'f' и 'o' равны 104 (0x68), 102 (0x66) и 111 (0x6F) соответственно. Давайте рассмотрим несколько методов конвертации равкода в десятичное число. Способ 1. Просто заменить каждый символ равкода на его шестнадцатеричный аналог. В примере получим 'hfoo' = 0x68666F6F, при конвертации в десятичную систему получим 1751543663. Способ 2. Если с хексом у вас беда, просто сразу переведите в десятичную систему из 256-ричной. В примере 1751543663=((104*256+102)*256+111)*256+111. real. Jass использует 32-битные floating points (тоже скажите мне корректный перевод Оо)для этого типа переменных - они эквивалентны типу float на языке программирования C. Поддерживается до трёх символов - выражение 0.0001 == 0.00 всегда вернёт true. Примеры реальных: Code local real a = 5.00 // 5.000 local real b = 5. // 5.000 local real c = S2R("5.0") // 5.000 local real d = I2R(5) // 5.000 local real e = 5 // 5.000 local real f = 19/10 // 1.000 local real g = 19./10. // 1.900 Переменная c - пример конвертации строк через S2R. Переменная d - пример конвертации целочисленной через I2R. Переменная e - то же самое, что и переменная d, но конвертация неявная. Поэтому использование 5. по сравнению с 5 намного лучше, так как второе работает медленнее (требует конвертации). Переменная f - такая же неявная конвертация целочисленных (и 19 и 10 - целочисленные, у них нет точки. Парсер сначала сделает деление целочисленных, затем сконвертирует в real). Переменная g - надлежащий способ деления реальных. string. На языке программирования C все строки являются по сути массивами символов, а тип string - указатель на первый символ в этом массиве. Строки в Jass немного сложнее - принцип указателя на первый символ остался, но настоящими указателями служат индексы во внутренней таблице строк. Поэтому строки в Jass могут считаться смарт-указателями. Каждая строка, которую вы используете, должна быть размещена и записана где-то в памяти. Но если одна строка нужна более одного раза, то выделять на неё больше памяти неразумно, так как она уже где-то в ней есть. Таблица строк может гарантировать, что у вас никогда не будет двух одинаковых строк, записанных в память. Ниже даны примеры строк, а также пометки, когда память размещает их, а когда использует существующие строки. Code local string a = "foo" // "foo" рамещена local string b = "bar" // "bar" размещена local string c = "foobar" // "foobar" размещена local string d = a+b // "foobar" использована local string e = I2S(50) // "50" размещена local string f = "50" // "50" использована Таким образом, переменных 6, а размещённых строк - 4. boolean в Jass 32-битная, хотя в большинстве случаев её значение может быть true (1) или false (0). Условие такого типа: Code if (boolvar) then call BJDebugMsg("yes") else call BJDebugMsg("no") endif будет показывать "yes", если логическая boolvar будет иметь значение, не равное 0. Тем не менее, фильтр boolexpr будет считать как true только значение, равное 1. Из-за этого до патча 1.24 существовала ошибка с функцией IsUnitType, которая в некоторых случаях вместо 1 возвращала 64 и прочие не равные 1 числа. code - тип данных, используемый для сохранения ссылок на функции и, скорее всего, является 32-битной целочисленной. Так как тип используется очень редко, известно о нём очень мало. Он используется в нескольких функциях, таких как TimerStart и ForGroup. Также это единственный известный тип, который не может быть использован в массиве. handle - это 32-битный целочисленный смарт-указатель на объект. Это примитивный тип, от которого наследуются все прочие не описанные в этой статье типы данных. Сам тип почти вообще в Jass не использован - common.j не содержит ни одной native-функции, которая бы принимала или возвращала handle. Исключение из этого правила лишь одно - известная функция GetHandleId, официальный наследник неофициальной H2I. Известно, что Jass применяет подсчёт ссылок, благодаря чему ссылки на уничтоженные объекты могут быть использованы позднее. Именно поэтому все локальные переменные типа handle и всех тех типов, которые от него наследуются, должны быть заданы как null. Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#174 | Тема: Примитивные типы данных в JassQuote (KO3bMA) кто нить из крутых программеров подумал о каком нить компиляторе в жас, кроме близзовского перевести в текст? Ты про то, чтобы переписать компилятор близзов? Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#175 | Тема: Примитивные типы данных в JassQuote (Spirit_of_Dragon) Тип string представляет последовательность из нуля или более символов в кодировке Юникод. Тип string — это псевдоним для типа String платформы .NET Framework. Несмотря на то, что тип string является ссылочным типом, операторы равенства (== и !=) определены для сравнения значений объектов типа string, а не ссылок. Это упрощает проверку равенства строк. (с) MSDN Хммм, == и != да, тоже имеется такое. Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#176 | Тема: Примитивные типы данных в JassQuote (Spirit_of_Dragon) jasshelper? не? JassHelper - средство JNGP вроде. Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#177 | Тема: Примитивные типы данных в JassQuote (KO3bMA) мапа сделанная юзером на гуи,после компилирования была на жасс ) Так Anti-Leaks Library изобрели уже. Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#178 | Тема: С 1 октября обязательно для всех модераторовУ вас недостаточно прав для просмотра данного сообщения.
Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
[DUОS]#179 | Тема: Omni174 повышение в журналистыN1ghtElf,
Ты видел его новости вообще? Журналист должен хоть более-менее быть грамотным и чётко формулировать свои фразы. Давайте уж лучше я буду новости писать. Без обид, Омни. Школа - это место, где шлифуют булыжники и портят алмазы. © Роберт Ингерсолл
|
|
| ||