Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Callisto, не обязательно с файлом. Но если файл не открыт, а дальнейший код подразумевает что он должен быть открыт, так зачем его обрабатывать если файл был не выбран? Конструкция с Return уступает только в том, что постоянно нужно будет читать одну лишнию строку. Конечно нет смысла ее вставлять если в условии 1-5 строк. Да и то, если 5 я б наверно вставил. Это все подразумевается если после условия нет никакого другого кода который не зависит от первого условия. Если дальше есть код, то на мой взгляд лучше использовать GotoLine.
Цитата (Peter)
mishem, вот тебе два скрипта:
Цитата (Peter)
И теперь подсчитай количество строк, которое формально должен "окучить" интерпретатор, чтобы выполнить скрипт до конца в первом и во втором случае.
Разница в четыре строки. Это при том условии что код отработает полностью. Если хоть одно условие не сработает разница будет существенная в пользу Return. Не хочешь читать хелп?
Если хоть одно условие не сработает разница будет существенная в пользу Return
Ой-ли?
mishem, хочешь я озадачу тебя до невозможности?
Напиши, скажем, вот так:
Код
If "[Test1]" "<>" "" If "[Test2]" "<>" "" If "[Test3]" "<>" "" If "[Test4]" "<>" "" .Что-то EndIf
и посмотри на результат.
Экспериментируй...
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Добавлено (26 Февраля 2013, 17:28) --------------------------------------------- Этим кодом ты только доказываешь что можно сэкономить в строках убрав Endif и вставить Return. Условие выполниться если оно верное до Endif и ошибки не будет, так как дальше нет ничего. Но напиши дальше еще условие, и все пойдет через ж... А Return по любому сработает правильно.
Этим кодом ты только доказываешь что можно сэкономить в строках убрав Endif и вставить Return
mishem, этим кодом я доказываю (в первую очередь) то, что можно извратить и код и логику, но в силу особенностей необушного интрпретатора работать будет (местами). В то же время, такой подход ведет к бардаку в мыслях и логике, поскольку в программировании "порядок" в коде (а значит и в мыслях)- самое главное! Попробовал бы ты записать не по правилам, скажем, изъять из кода Delphi (или С++) хоть одну запятую.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Я попробовал. Не работает твой код. Программа дает понять "писателю" что он что то не то написал.
I don't understand this command!
Добавлено (26 Февраля 2013, 17:51) --------------------------------------------- Интересный эксперимент. Если If находится не в начале строки, выдает ошибку. Выравнял все строки от начала, ошибка пропала и прогоняется до конца даже если Return ставлю.
Короче не верный код он и будет работать не верно.
Эт скока ж выпить надо или покурить что бы такое написать?
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Я ее удалил. Читай выше. Может еще не срабатывал потому что я с файлом из архива работал? Хрен его знает. Но ошибка была. If даже в редакторе черным а не синем отображались. Но больше пробовать не хочу. Не интересно. Не хочешь читать хелп?
Добавлено (26 Февраля 2013, 18:03) --------------------------------------------- Все, я въехал почему. Я то код копипастю из твоего сообщения. А там символы видать идут какие то которые НБ не понимает при написании кода.
А нахрена тут Return-то?! Или ты же после каждой строчки IF решил ставить Return?
mishem, я совершенно не намерен устривать с тобой дискуссию на тему "оптимизации кода". Борьба за оптимизацию должна не тупо преследовать уменьшение количества прогоняемых интерпретатором строк скрипта, а создание эффективных алгоритмов решения той или иной задачи, и, если где-то рАзово удается (опять-таки в силу особенностей интерпретаора) снизить (чисто технически)количество прогоняемых строк, это вовсе не значит , что подобный прием универсален, и его следует взять на вооружение. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А я и не собирался тебя переубеждать! Просто пытался объяснить потенциальным новичкам (тема-то какая?), что нужно помнить о том, что изложенное здесь не учебник, а всего-лишь "соображения по-поводу", и без своей головы обойтись не получится.
Ты б лучше (если конечо тебе нужен плагин) не отвлекал меня всякой ерундой. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Добавлено (05 Марта 2013, 10:05) --------------------------------------------- Не раз уже сталкиваюсь с тем что команда IfEx не верно определяет условие. (Или я мож не так что пишу. ) К примеру извлекаю расширение из файла и сохраняю в переменной [Ext]. Дальше
Код
IfEx "[Ext]<>.nbp or [Ext]<>.nbr"
Если расширение не равно указанным, надо их записать. Так вот эта команда все равно пропускает(имеется ввиду что следующая команда записывает) эти строки где есть такое расширение. Пробовал вместо точки код подставлять. Все равно пропускает.
Random "10" "[num]" IfEx "[num]<>0 OR [num]<>9" SetVar "[result]" "true" Else SetVar "[result]" "false" EndIf
Всегда будет "true" даже если в [num] будет например 0 Сравни эти два варианта для наглядности
Код
Random "10" "[num]" IfEx "[num]<>0 AND [num]<>9" SetVar "[result]" "true" Else SetVar "[result]" "false" EndIf
Не возможно иметь в переменной [Ext] значение .nbp и .nbrодновременно, а именно так нужно, чтоб выполнилось ветвление - "ложь". Ставь в условии AND, либо 2 условия IF (выбирай на вкус )
Сообщение отредактировано Сергей - Вт, 05 Марта 2013, 18:23
Ну да ладно. Главное разобрался. Благодарю. А ведь была мысль подставить And, но даже пробовать не стал. По логике как раз переменная не может быть одновременно и .nbp и .nbr.
Мож у меня логика не такая как у всех?
Но оно даже и к лучшему, пошел другим путем, проверкой всего имени файла. В другом месте по расширению уже не прокатывало, "и убил двух зайцев"
По логике как раз переменная не может быть одновременно и .nbp и .nbr.
Да конечно, но видишь в чем суть, в условии. Попробую объяснить если получится... Условие оставим тоже IfEx "[Ext]<>.nbp or [Ext]<>.nbr" - для простоты приведем условие к виду - IfEx "[да, не равно] [или] [да, не равно]", т.е. любое одно условие достаточно, чтоб иметь "истино" Разберем работу в деле, пример: IfEx [txt не равно nbp = да, не равно] [или] [txt не равно nbr = да, не равно] Выполнилось хоть одно условие? Да выполнилось, причем даже 2 Теперь такой вариант IfEx [nbp не равно nbp = нет, равно] [или] [nbp не равно nbr = да, не равно] Выполнилось хоть одно условие? Второе условие выполнилось, а значит "истино"
OR/ИЛИ = для него достаточно, чтоб совпало любое одно из перечисленных условий AND/И = для него надо, чтоб все из перечисленных условия совпали, иначе "ложь"
Ну вот, объяснил, как мог
Сообщение отредактировано Сергей - Вт, 05 Марта 2013, 21:11
Но отталкиваясь от такого разбора, то IfEx [nbp не равно nbp = нет, равно] [и] [nbp не равно nbr = да, не равно] Одно из условий не выполнилось! По логике получается что это не верно.
Ладно. Остановимся на этом. Я понял одно, что ничего не понял. Просто в следующий раз нужно будет пробовать разные варианты.
Помню когда то тоже столкнулся с такой проблемой, только там условие посложнее было. Плюнул и бросил. Реализовал все через IF.
Давай разберем для наглядности с AND/И (другим пригодится ) IfEx [txt не равно nbp = да, не равно] [и] [txt не равно nbr = да, не равно] Выполнились все условия? Да выполнилось, результат "истино" IfEx [nbp не равно nbp = нет, равно] [и] [nbp не равно nbr = да, не равно] Выполнились все условия? Нет, выполнилось только одно, результат "ложь" Просек?!
Добавлено (05 Марта 2013, 21:22) ---------------------------------------------
Цитата (mishem)
Одно из условий не выполнилось!
Цитата (Сергей)
AND/И = для него надо, чтобвсе из перечисленных условия совпали, иначе "ложь"
Цитата (mishem)
По логике получается что это не верно.
то что и нужно.
Добавлено (05 Марта 2013, 21:25) --------------------------------------------- Блин, есть условия, где еще можно оперировать скобками, это для сложных условий. Но пока не разобраться с простыми, там вообще труба будет
Сообщение отредактировано Сергей - Вт, 05 Марта 2013, 21:26
К примеру извлекаю расширение из файла и сохраняю в переменной [Ext]. Дальше
IfEx "[Ext]<>.nbp or [Ext]<>.nbr"
Если расширение не равно указанным, надо их записать.
Тоесть должно быть Истина.
IfEx "Txt<>.nbp or Txt<>.nbr" Истина, запись происходит.
IfEx ".nbp<>.nbp or Txt<>.nbr" Ложь, не должна запись происходить. Истина, запись происходит.
Понял. Хоть одна запись верна, получается Истина.
Добавлено (05 Марта 2013, 21:40) ---------------------------------------------
Цитата (Сергей)
Но пока не разобраться с простыми, там вообще труба будет
Да нет там особо сложного ничего. Те же уравнения.
Здесь с толку сбивает одна и та же переменная. Если бы были две разные переменные, то автоматом будешь ставить AND. В таком варианте просто на автомате срабатывает OR. Нужно что бы переменная не равнялась тому то, или тому то. И даже в голову не приходит поставить И. Ну, во всяком случае мне.
Спасибо! Так и сделаю. Думал, что здесь мне ответят))
Добавлено (04 Октября 2015, 17:38) --------------------------------------------- Можете удалять несоответствующие вопросы теме, создал отдельную в "свободном общении"