Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Зачем нужны двойные квадратные скобки (что это даёт)?
Переменная [yazik] содержит используемый в первом поле язык (например Rus), а [yazik_2] противоположный ему (соответственно Eng). Получается, что вмето [yazik_2] мы должны поставить Eng. В результате просто выходит [Eng]. Двумя словами - это состовная переменная (также как массивы).
Quote (VadimLevkin)
Зачем переменная rezult повторяется в собственном значении?
Предположим переменная [result] содержит цифру 1, а переменная [bukva] цифру 2. В это строчке кода мы присваеваем переменной [result] её же значение и плюс еще переменную [bukva]. В результате получится 12.
Надеюсь у меня получилось объяснить доступно для понимания, а то, как вы поняли, из меня объясняльщик ни какой.
Все таки я решил поробовать решить эту интересную задачку, и вот что у меня получилось
Bodi, весьма недурно получилось! Можно будет отправить в "копилку"?
Quote (VadimLevkin)
Зачем переменная rezult повторяется в собственном значении?
Небольшое дополнение... Подобное "повторное" присваивание применяется тогда, когда какой-либо переменной нужно присвоить новое значение, но с учетом уже имеющегося содержимого самой этой переменной.
Добавлено (21 Июль 2009, 00:10) ---------------------------------------------
Quote (VadimLevkin)
В каких случаях обычно используют составные переменные вида [[]]?
Типичный случай - массивы переменных. Они имеют вид: [Name[n]], где: Name - имя массива, а n - порядковый номер переменной в массиве. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Зачем создавать конструкцию типа [[n]]? В данном случае программа все-равно "поймет" её как [n]. А составные переменный можно применять не только в массивах, а ВЕЗДЕ, где это будет необходимо. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
НЕТ! не в коем случае! Я ж его еще не причесал , тем более у меня еще есть несколько идей.
Quote (Peter)
Зачем создавать конструкцию типа [[n]]? В данном случае программа все-равно "поймет" её как [n].
Мне кажется здесь вы не правы, хотя может это я не прав, не буду утверждать, но попробую доказать... Есть такая строчка:
Code
SubStr "[[yazik_2]]" "[poisk]" "1" "[bukva]"
Переменная [yazik_2] содержит значение Rus. Если поставить по одной квадратной скобочке, то копирование произойдет из переменной [yazik_2], то бишь из строки Rus. А если оставить по две скобки, то копирование уже будет не из строки Rus, а из переменной [Rus].
НЕТ! не в коем случае! Я ж его еще не причесал , тем более у меня еще есть несколько идей.
Замечательно! А я и не спешу.
Quote (Bodi)
А если оставить по две скобки, то копирование уже будет не из строки Rus, а из переменной [Rus].
Bodi, мы оба неправы! Я теоретически понадеялся на "умный" интерпретатор, не проверив практически, а зря! В этом случае НИЧЕГО не произойдет, а точнее результат просто обнулится.
В квадратные скобки заключаются ИМЕНА переменных, и каждое имя должно быть в отдельных скобках, и если в скобках ничего нет, значит и нет переменной! Проверьте свой же пример на практике.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Bodi, мы оба неправы! Я теоретически понадеялся на "умный" интерпретатор, не проверив практически, а зря! В этом случае НИЧЕГО не произойдет, а точнее результат просто обнулится.
Вы меня окончательно запутали
Quote (Peter)
и каждое имя должно быть в отдельных скобках, и если в скобках ничего нет, значит и нет переменной!
Логично. Но в моем то случае переменная [yazik_2] не пуста, а содержит значение Rus, значит, как я уже говорил, в итоге из [[yazik_2]] получится просто [Rus]. Или я опять что-то туплю
Quote (Peter)
Проверьте свой же пример на практике.
Дак в том то и дело, что проект который я сделал (см. выше) работает коректно. Лучше вы с ним поподробней разберитесь, как время будет.
В каждом языце есть свой синтаксис, который должен быть описан как дважды два. Его надо просто изучить, чего я не делал, но по класике жанра, чего то разобрать все же возможно, [[yazik_2]] может быть или ссылкой на переменную или несуразицей, [yazik_2[x]] несомненно может быть элементом массива, конструкции типа [[[yazik_2]]] и так далее, мне и в голову никогда не придут, в виду несуразности Синтаксис надо просто изучить. К стати, ради интереса, поддерживает ли необук многомерные масcивы?
Как раз там и должны излагаться основы синтаксиса. Описание любых языцей начинается с элементарных понятий, исключения конечно возможны, если речь идет о чем то широко известном ранее.
Дак в том то и дело, что проект который я сделал (см. выше) работает коректно. Лучше вы с ним поподробней разберитесь, как время будет.
Я с ним давно уже разобрался! А тут:
Quote (Peter)
Проверьте свой же пример на практике.
речь шла о:
Quote (Bodi)
А если оставить по две скобки, то копирование уже будет не из строки Rus, а из переменной [Rus].
Проделайте такой эксперимент:
Code
SetVar "[yazik_2]" "Rus"
затем:
Code
SetVar "[Result]" "[yazik_2]"
затем:
Code
SetVar "[Result]" "[[yazik_2]]"
и посмотрите ЧТО будет в итоге в переменной [Result] в первом и во втором случае .
Quote (VadimLevkin)
Peter, может быть ты уже написал такую книгу?
.... May be...
Quote (Alex3A)
Как раз там и должны излагаться основы синтаксиса.
Это верно теоретически, но необушная справка написана из рук вон плохо, точнее - формально. Программа на пять баллов, а справка на тройку с минусом. В ММВ же справка на 5 баллов, и написана куда лучше самой программы! Парадокс...
Добавлено (21 Июль 2009, 19:17) ---------------------------------------------
Quote (Peter)
и посмотрите ЧТО будет в итоге в переменной [Result] в первом и во втором случае .
Да, совершенно верно! Я забыл про переменную [Rus] - она была пустой! Во втором случае будет копирование из этой переменной. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Я - не Лев Толстой или Федор Достоевский. Может что-нибудь и получится... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Программа на пять баллов, а справка на тройку с минусом.
Так как же вы живете? Синтаксис ведь весьма оригинален!
Quote (Bodi)
А если проделывать эксперимент с пустой переменной [Rus], то конечно последствия непредсказуемы
Пачему? Там или пусто или густо, то есть мусор, в зависимости от интерпритатора, некоторые обнуляют переменную, а иные просто выделяют под нее память, что в ней окажется неизвестно.
Так как же вы живете? Синтаксис ведь весьма оригинален!
Да вот так-вот и живем, грустно. Разбираемся в основном методом проб и ошибок! Правиьно говорят, что программисту написать толковую справку к программе в сотни раз труднее, чем саму программу! И NeoBook, к сожалению, типичная предствительница этого случая. ММВ-шнкам тут можно только позавидовать!
Quote (VadimLevkin)
Чур я первый покупатель!
Покупатель чего? Вроде бы ничем не торгуем... - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Книги по NeoBook, вестимо! Торговать не надо, это не булочки :). Это результат большого труда, таланта и творчества! А такие результаты должны людьми цениться по достоинству, если они люди вообще, а не халявщики. Надо только выложить на сайте и кнопочку рядом поставить "сделать заказ". Или хотя бы номер электронного кошелька разместить, для самоокупаемости будущего проекта... Хотя одно другому не мешает. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
VadimLevkin, ты серьезно? Не все всегда можно и нужно мерять на деньги. В жизни полно такого чего никогда не купишь ни за какие деньги! Простые человеческие ценности: любовь, дружба, уважение... И в природе ещё пока существуют люди, которые не ищут во всем коммерческую выгоду, а просто делают что-то в свое удовольствие, и делятся этим с другими. Пример у тебя прямо перед глазами - создатель этого сайта, АС-МАСТЕР!
А если говорить о коммерции, то для того, чтобы что-то продавать, сначала надо это создать в таком виде, чтобы у людей было желание это купить! Главный, и всем известный, "бизнес-необукер страны" попробовал подзаработать на так называемых "уроках" по NeoBook. Думаешь, он что-то заработал?...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Целиком разделяю эту позицию! Не мог и подумать, что мои слова можно было так истолковать. Люди, которые во всем ищут коммерческую выгоду - ущербны, по определению, это мое глубокое убеждение. А приводить в пример плагиатчика не нужно, это не пример для сравнения и уж тем более подражания. Но в одном я ему от чистого сердца благодарен - благодаря его рекламе я узнал о существовании этого чуда - NeoBook и попал на ваш форум. Кстати, я ему не платил. Не нужно было ему "тырить" материалы, и "копипастить", как здесь говорят - это первое. Ну и другие серьезные ошибки он допустил, но они по сравнению с первой ошибкой второстепенны и не относятся к сути вопроса. Поэтому дальше. Вот скажи мне, Петр, раз уж мы на "ты", разве есть что-то плохое в том, чтобы не просто заниматься любимым делом, но, помогая людям, обеспечивать свои базовые (еда, вода, сон, укрытие и пр.) потребности? И не только базовые, если уж на то пошло (возможность дарить радость близким и любимым, обеспечивать их необходимым и желаемым и т.д.). Приведу немного утрированный, для ясности, пример. Если хороший врач хорошо помогает людям, делится с ними знанием и любит свое дело, то он должен отказаться от зарплаты? И тогда он пойдет ночью "вагоны разгружать" (т.е. заниматься нелюбимым делом, за которое ему будет не зазорно взять деньги на еду, одежду и оплату жилья), а утром придет к пациентам - уставший и неспособный сосредоточиться. Много он напомогает? А вот если он будет ценить свою работу (а не только любить) и свое время (которое невосполнимо), то только тогда будет по-настоящему ценить Идею и своих Пациентов, потому, что будет помнить, что ему нужно поддерживать квалификацию, изучать новые материалы, встречаться с коллегами на конференциях, проводить какие-то изыскания, чтобы не заниматься профанацией своей профессии. Подобным образом продавец, который, предположим, привозит всё лучшее для людей (именно искренне радеет за свое дело) и отдаёт практически задаром - он в следующий раз сможет закупить лучшее и привезти людям то, в чем они действительно нуждаются? Нет, не привезет, у него не будет возможности съездить и выбрать. Конечно, если будет загибать с ценами - вообще потеряет покупателей. Это другая крайность. Так вот, привезет тот, кто решит "срубить бабки" на дешевом и некачественном, потому, что он не любит свое дело и людей не уважает, а только деньги делает. И что, люди получат им необходимое? Всё взаимосвязано. Мне, к примеру, очень импонирует твой подход к обучению и я очень заинтересован в том, чтобы ты написал книгу по NeoBook, создавал уроки по NeoBook, отвечал на вопросы, писал русификации и т.д. и т.п., а не "вагоны разгружал" образно говоря, конечно... Я хочу изучать NeoBook по книге человека, который любит то, что делает, а не того, кто просто решил срубить бабки. И пофигу мне на то, что книга не идеально написана, не Толстым и не Пушкиным, в ней содержание важно и души наличие, а все недочеты - это всего лишь признание того, что в другой раз будет сделано лучше! Мое желание неэтично?? Но мое желание было бы совершенно неэтичным и безответственным, и, по сути своей - детским, если бы я считал, что ты, Петр, обязан мне что-то дать, раз уж ты любишь это дело. Ты совершенно мне ничем не обязан, как тебе известно. Вообще читать эти строки даже не обязан. Так на каком основании я должен ожидать такого? Напротив, если я несу ответственность за свои желания, то я должен постараться обеспечить результат. Это значит, что если я собираюсь попросить "дорогой Петр, напиши, бога ради, русификатор для распоследней и распрекрасной NB!", то я должен понимать, что время и силы у Петра из ниоткуда не возьмутся, что у Петра есть те, у кого я его пытаюсь на это время отнять, что у Петра есть масса интересов, задумок и других дел, и отрывая его от всего этого их нужно хоть чем-то компенсировать. А в противном случае, как Петр сможет помогать потом мне? Он скажет, однажды, всё, баста ребята, вас стало слишком много, а у меня тут "коровы недоены, фашисты нестреляны и пр."... Откуда у человека может появиться столько времени на такое кол-во серьезных задач, если приходится "вагоны разгружать", образно говоря? Почему если ты помогаешь мне знанием, то отказываешь мне в ответном уважении времени твоей жизни и твоей творческой энергии? Я не хочу воровать твое время!! Я хочу подарить прибыльную идею, хочу заплатить деньгами, чтобы ты мог вызвать сантехника, а не делать кран самому (кстати, от этого, сантехник и его семья будет только счастливее...), хочу, чтобы платили другие, чтобы ты мог нанять профессионалов для ремонта в доме (они тоже будут совсем не против, уж точно) и т.д. Хочу, чтобы вместо того чтобы тратить время на ремонт, ты был по ту сторону экрана или ваял очередной шедевр. Деньги - это возможности, я хочу, чтобы у тебя были возможности делиться с людьми (в т.ч. со мной) знанием. Это ответственный и уж точно не меркантильный подход. А что касается "сделать так, чтобы люди захотели купить", то это вообще не проблема - не хотят, пусть не покупают. Просто делай от души, от всего сердца, и не требуй от себя абсолютного совершенства! Абсолютно совершенных автомобилей нет, но ведь это не мешает производителям их делать, продавцам продавать, а людям - с удовольствием использовать. Короче, не отнимай хлеб у сантехника! Мы все на одном маленьком шарике живем. Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Сообщение отредактировано VadimLevkin - Чт, 23 Июля 2009, 04:43
Ну и наваял! Это трудное дело, не просто написать а со знанием дела и любовью к излагаемой теме, по себе знаю, у меня уже лет семь лежит недописанная книга по ммв, пропал интузиазизм и образовался дефицит времени.
Это трудное дело, не просто написать а со знанием дела и любовью к излагаемой теме, по себе знаю, у меня уже лет семь лежит недописанная книга по ммв, пропал интузиазизм и образовался дефицит времени.
Чертовски верно! Вот я об этом и говорю.
Кстати, желаю вдохновения и поддержки! Я думаю, что и 10 книг по MMB не будут лишними. Вон сколько книг по Дельфи, и будет только больше. И читают далеко не только те, что выходят последними. И Ваша книга, Алекс, обязательно найдет свою аудиторию! Потому, что там будет то, чего не будет в других книгах.
Добавлено (23 Июль 2009, 04:29) ---------------------------------------------
Поскольку у меня сходная задача (проконтролировать ввод символов в поле пароля), то я так применил идеи Петра и Дмитрия: В команды загрузки пишем переменную [Eng] со всеми английскими буквами и цифрами (и теми символами, которые мы хотим допустить к вводу), а на событие Text Change для поля ввода пишем:
Code
StrLen "[PoleVvoda]" "[dlinStr]" If "[PoleVvoda]" "=" "" DisableObject "ButtonVvod" Else Loop "1" "[dlinStr]" "[N]" SubStr "[PoleVvoda]" "[N]" "1" "[Simvol]" SearchStr "[Simvol]" "[Eng]" "[NumSimvol]" If "[NumSimvol]" "=" "0" AlertBox "Неверный ввод данных" "Недопустимый символ.||Пароль может состоять только из английских букв и цифр." DisableObject "ButtonVvod" ExitLoop EndIf EnableObject "ButtonVvod" EndLoop EndIf
Как вам такой вариант?
Этот код можно рассматривать как способ контроля любых необходимых для ввода символов (ведь вместо английской раскладки мы можем принимать только определенные символы или их сочетания).
нормально, кстати можно еще использовать в место этого - маску ввода в свойствах TextEntry. ---------------------------------------- Можно еще добавить в ваш код строчку
Code
StrDel "[PoleVvoda]" "[N]" "1" "[PoleVvoda]"
удаление ненужного(неправильного) символа, но это чисто для удобства пользователя
Сообщение отредактировано sp3d - Пт, 24 Июля 2009, 08:55
Дмитрий, уже можно посмотреть причесанный код? Шибко любопытно - как его можно еще сильнее укоротить!
Я не стал его укорачивать, просто сделал более красивым, убрал составные переменные, дабы не запутать пользователя. Хотел еще добавить перевод на транслит, но тут уж кажется без массивов не получится... Может у кого есть какие-нибудь другие идеи?
Quote (VadimLevkin)
Как вам такой вариант?
Code
StrLen "[PoleVvoda]" "[dlinStr]" If "[PoleVvoda]" "=" "" DisableObject "ButtonVvod" Else
Если поле ввода будет пустым, то зачем же мы будем считать кол-во символов в нем? Команду StrLen лучше поместить после Else. Да и вообще этот скрипт намного логичней будет присвоить просто кнопке, иначе он будет исполнятся каждый раз при именении текста в поле ввода.
Quote (sp3d)
удаление ненужного(неправильного) символа, но это чисто для удобства пользователя
Ага, представляю: пользователь, не зная какие символы можно писать в данное поле, пишет что-либо, а они (символы) сразу же сами удаляются
Ага, представляю: пользователь, не зная какие символы можно писать в данное поле, пишет что-либо, а они (символы) сразу же сами удаляются
почему не знает, там же предусмотрено предупреждение... добавить в месагу тот самый символ, а потом удалить. Там неудобство в том, что пользователь изначально не видит вводимые символы (вместо символов звездочки)
Code
If "[NumSimvol]" "=" "0" AlertBox "Неверный ввод данных" "[color=red][переменная неправильного символа][/color] -Недопустимый символ.||Пароль может состоять только из английских букв и цифр." DisableObject "ButtonVvod" StrDel "[PoleVvoda]" "[N]" "1" "[PoleVvoda]" ExitLoop EndIf
а по поводу "запретных символов", надо будет VadimLevkin-у заранее предупредить пользователя
Добавлено (24 Июль 2009, 12:41) --------------------------------------------- что то неподсвечиваютя слова
Сообщение отредактировано sp3d - Пт, 24 Июля 2009, 13:51
Я не стал его укорачивать, просто сделал более красивым, убрал составные переменные, дабы не запутать пользователя.
Уже можно полюбопытствовать?
Quote (Bodi)
Если поле ввода будет пустым, то зачем же мы будем считать кол-во символов в нем? Команду StrLen лучше поместить после Else.
Это верно! Спасибо!!
Quote (Bodi)
Да и вообще этот скрипт намного логичней будет присвоить просто кнопке, иначе он будет исполнятся каждый раз при именении текста в поле ввода.
Да, смысл именно в том, чтобы проверялся каждый вводимый символ, тут я прислушался к высказываниям Петра. И в этом есть большой смысл, ведь многие не владеют десятипальцевым методом слепой печати и для человека набрать десяток символов пароля только для того, чтобы в самом конце убедиться, что он использовал не ту раскладку - то еще удовольствие... А так, мы ему сразу показали, что надо раскладку сменить и, кроме прочего, пользователь понимает в какой именно момент он ошибся. Это забота о пользователе.
Quote (sp3d)
удаление ненужного(неправильного) символа, но это чисто для удобства пользователя
Я считаю, это хорошая идея, ведь неправильный символ все равно надо удалить, а зачем пользователю это делать вручную, если прога сама может? Пользователь увидел сообщение, что надо изменить раскладку, поменял ее и набирает себе дальше, уже в правильной раскладке. Спасибо! Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)
Хорошо получилось! ЗдОрово! Буду ждать варианта с транслитерацией!
Quote (Bodi)
Может у кого есть какие-нибудь другие идеи?
Идея для транслитерации (без массивов) есть: надо создать еще две переменных соответствующих шрифтов, только способ их соответствия изменить: номер символа в строке, которую содержит переменная алфавита, будет совпадать не с клавишей, а именно с соответствующей буквой. К примеру, было (для автозамены):