Author Topic: Подпрога не работает и окно редактора не закрывается  (Read 2848 times)

0 Members and 3 Guests are viewing this topic.

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Дратути, автоматизаторы всех стран и народов!
Ps. Сорян, похоже, промахнулся, когда создавал тему,
ей место явно не в разделе "Предложения".


Сделал следующий инклуд:
[spoiler=funk.cms]
Code: (clickermann) [Select]
// 24-Dec-2017
//#name "Funky include"
//#include "funk.cms"
//funk("scriptfilename")

sub(funk,$funkyname)
   TFReadArr(strconcat($funkyname,".cms"),$fvnkyarrow)
   print("ArrSz= ",arrsize($fvnkyarrow)," lines")
   //print($fvnkyarrow[9])
   //print($fvnkyarrow[1])
   
   $cntr=0
   for($ii=0,$ii<arrsize($fvnkyarrow))
      //      while(strcut($fvnkyarrow[$ii],1,1)=" ")
      //         if($fvnkyarrow[$ii]!"")
      //            $fvnkyarrow[$ii]=STRREPLACE($fvnkyarrow[$ii]," ","")
      //         end_if
      //      end_cyc
      $spaced=1
      while($spaced=1)
         if($fvnkyarrow[$ii]!"")
            if(strcut($fvnkyarrow[$ii],1,1)=" ")
               $fvnkyarrow[$ii]=STRREPLACE($fvnkyarrow[$ii]," ","")
            else
               $spaced=0
            end_if
         else
            $spaced=0
         end_cyc
      end_cyc
      print($cntr," ",$fvnkyarrow[$ii])
      inc($cntr)
   end_cyc
end_sub


//halt
[/spoiler]

Нажимаю Сохранить и Применить, пытаюсь закрыть редактор со скриптом, но кликер не даёт (пишет классическое "Хотите применить изменения?", у меня так: Would you like to apply changes?). Понимаю, что это ошибка моей логики в скрипте, но почему-то не могу найти, в какой точке. Причём до проверки на наличие пробелов изменённая версия этого инклуда нормально работала, а тут вроде всё правильно, а результата не даёт, да и файлы с подключённым данным инклудом не запускается. Может, проверка if($fvnkyarrow[$ii]!"") не имеет смысла? Но тогда перестаёт в логе выводить пустые строки (которые конечно не пустые, а содержат знаки абзаца).

ЗЫ. В курсе про трабл с кавычками, сам юзаю 4.13.б3 и постоянно с этим парюсь.
« Last Edit: December 25, 2017, 08:02:05 AM by Cleoss »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
найдите в сети гайды, на тему "способы поиска ошибок в собственном коде" они вам очень помогут, быстро решать многие проблемы.

вообще, все верно. но многие могут понять твой текст не так как тебе кажется. нужно было просто написать, что в коде определенно есть ошибка, и ее нужно искать!!! и многие сталкивались с проблемой невозможности применить и выйти с редактора. и часто такое бывает изза глупой описки.

Дратути, автоматизаторы всех стран и народов!

Сделал следующий инклуд:
[spoiler=funk.cms]// 24-Dec-2017
//#name "Funky include"
//#include "funk.cms"
//funk("scriptfilename")

sub(funk,$funkyname)
   TFReadArr(strconcat($funkyname,".cms"),$fvnkyarrow)
   print("ArrSz= ",arrsize($fvnkyarrow)," lines")
   //print($fvnkyarrow[9])
   //print($fvnkyarrow[1])
   
   $cntr=0
   for($ii=0,$ii<arrsize($fvnkyarrow))
      //      while(strcut($fvnkyarrow[$ii],1,1)=" ")
      //         if($fvnkyarrow[$ii]!"")
      //            $fvnkyarrow[$ii]=STRREPLACE($fvnkyarrow[$ii]," ","")
      //         end_if
      //      end_cyc
      $spaced=1
      while($spaced=1)
         if($fvnkyarrow[$ii]!"")
            if(strcut($fvnkyarrow[$ii],1,1)=" ")
               $fvnkyarrow[$ii]=STRREPLACE($fvnkyarrow[$ii]," ","")
            else
               $spaced=0
            end_if
         else
            $spaced=0
         end_cyc
      end_cyc
      print($cntr," ",$fvnkyarrow[$ii])
      inc($cntr)
   end_cyc
end_sub


//halt[/spoiler]

Нажимаю Сохранить и Применить, пытаюсь закрыть редактор со скриптом, но кликер не даёт (пишет классическое "Хотите применить изменения?", у меня так: Would you like to apply changes?). Понимаю, что это ошибка моей логики в скрипте, но почему-то не могу найти, в какой точке. Причём до проверки на наличие пробелов изменённая версия этого инклуда нормально работала, а тут вроде всё правильно, а результата не даёт, да и файлы с подключённым данным инклудом не запускается. Может, проверка if($fvnkyarrow[$ii]!"") не имеет смысла? Но тогда перестаёт в логе выводить пустые строки (которые конечно не пустые, а содержат знаки абзаца).

ЗЫ. В курсе про трабл с кавычками, сам юзаю 4.13.б3 и постоянно с этим парюсь.

у меня на поиски ошибки в вышеуказанном коде ушло не мало времени, минут 5-10. по началу не туда смотрел куда нужно было  :D.

я думаю, стоит тебе попробовать найти эту ошибку самому... если никак, тогда уж обращайся  ;) .



Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
я думаю, стоит тебе попробовать найти эту ошибку самому... если никак, тогда уж обращайся  ;) .

Спасиб, я вот кстать тож так думаю, что нужно самому поискать. Просто давно уже тут графомаранием не занимался)) Да и может, кому-то тоже будет интересно поразмять свой ум небольшой занятностью  :) Да и заданьице у меня малость другое было, это я так просто немного отклонился и решил написать инклуд, который изменяет сам себя, но что-то вот не зашло.

Кстати, вот эта вот строка про "в коде определенно есть ошибка" -- она вроде и окрыляет на поиск, но одновременно и звучит тоже как небольшой предновогдний тролленг))

Ваще, я теперь ни в чём не уверен, может надо писать != или же пустую строку определять не как "". У меня в одном скрипте результат выводится в файл, так вот когда результат нулевой (пустая строка), то у меня пару раз проскакивало, что скрипт писал в файл две кавычки вместо того, чтобы оставлять новый результирующий файл пустым.

Кстати, да вот! Спасибо ещё раз "определённо есть ошибка"! Бегло пересмотрел скрипт и заметил, что условие закрыл оператором end_cyc, у меня бывает такое, набираю ведь ручками в штатном редакторе, а тут ни автодополнения, ни подсветки неверного кода, панимаиш. Хотя если чуть репку почухал, мог бы и догадаться на магическую табуляцию нажать и скрипт себе перекосить.

Cleoss

  • Активный участник
  • ***
  • Posts: 260
  • Автоматизируй это!
    • View Profile
Но я сделал, то что хотел. Помог человеку найти простое решение его существующей проблемы и неизбежных подобных проблем в будущем. Он не новичёк на форуме, которому нужен просто голый код, в суть работы которого автор вопроса вникать не собирается.
 Да, часто специально так излагаю мысли, чтоб их можно было понять по разному. Это хороший способ понять с кем имеешь дело. Как будет понят текст, мне в общем фиолетово, гораздо важнее по реакции некудышного человека быстро занести его в ЧС, а не обслуживать такого программно, долгими зимними вечерами.  ;)

А не легче ли сразу программно всех добавить в ЧС? То что, я на форуме уже год, не значит, что я пишу код за минуту и что могу мгновенно заметить ошибку в тоннах навваянных строк (особенно давно написанных) и тем более, что поставленных задач так мало, что можно успеть всё и не заступориваться подолгу на одном. Спасибо за развёрнутый, точечный, жирный ответ.

Думаю, все, кто тут также долго сидит, понимают, что любой скрипт всегда состоит из множества мелких деталей-команд, которые заранее не всегда возможно предугадать перед созданием скрипта и темпаче представить возможно варианты реакции кликера. И к любому скрипту всегда можно найти и дописать сотни недостающих плюшек, нет предела совершенству.

Qwerry

  • Активный участник
  • ***
  • Posts: 117
    • View Profile
О, моё любимое сообщение про "попробуйте применить, но закрыть редактор не позволим")
У меня оно обычно было связано с несоответсвием количества запуска и завершения циклов (именно циклов, т.к. путаница по else и sub всего лишь дает глюки). Впрочем, и у вас тоже, хотя скорее всего вы уже сами всё нашли.

К слову, т.к. в 4.13 изменился синтаксис, теперь я стараюсь переделать все под подходящий и для 4.12, и для 4.13 вариант. Так, мне кажется рациональным пока что отказаться и от "!" и от "!=", а просто заменить условие на "$fvnkyarrow[$ii]=", поставив блок Else первым.
Кроме того, возможно с "" выйдет что-то непонятное (всегда будет считаться верным, если это строка, а не число?). Лично я то, что в 4.12 сравнивала с "0" (пользуясь тем, что пробел/абзац/отсутствие результата поиска считались за 0), теперь сравниваю с нулевой длиной строки.
« Last Edit: December 30, 2017, 04:00:19 PM by Qwerry »