1

Тема: AHK: Ошибка "Duplicate label"

Добрый день всем!

Есть код

Label1:
var := 1 

if var = 0
{
#include 1.ahk
}

if var = 2
{
#include 2.ahk
}

if var = 3
{
#include 3.ahk
}

if var = 1
{
#include 4.ahk
}
else
Goto, Label1
return

При его запуске возникает ошибка в присоединенном файле 4.ahk (Line Text: Timer Error: Duplicate label) однако меток с повторяющимся названием в других файлах нет.

Содержимое файла 4.ahk

+ открыть спойлер
#Persistent
var2 = %Num%
t_TimeFormat := "HH:mm"
t_UpTime := var2
t_StartTime += +t_UpTime, minutes

FormatTime t_StartTime, %t_StartTime%, %t_TimeFormat%

var1 = %t_StartTime%
Events := {Event1: var1}
SetTimer, Timer, 1000 
return
Timer:
if (PrevMin = A_Min)
      return
   
   Event := PrevMin := ""
   for k, v in Events
   {
      Hour := RegExReplace(v, "(.*):.*", "$1")
      Min := RegExReplace(v, ".*:(.*)", "$1")
      
      if (A_Hour = Hour && A_Min = Min)
         Event := k, PrevMin := A_Min
   }

   if Event
SetTimer, %Event%, -10
return

Event1:
MsgBox, Напоминаю про %text%
return
}

причем при удалении из кода #include 1.ahk и #include 3.ahk ошибка исчезает. Никак не могу понять логику, в чем ошибка?
Содержимое 1.ahk

+ открыть спойлер
dar := 1

if dar = 1
{
#include 2.ahk
}
else
return

Содержимое 2.ahk

+ открыть спойлер

far := 1
if far = 1
{#IncludeAgain 4.ahk
}
else
return

Содержимое 3.ahk

+ открыть спойлер

lab := 1

if lab = 1
{
#IncludeAgain 2.ahk
}
else
return

2

Re: AHK: Ошибка "Duplicate label"

akman, советую внимательно почитать справку по #Include/#IncludeAgain.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Ошибка "Duplicate label"

Разобрался с ошибкой, метки действительно дублируются, т.к #include вставляет содержимое файла и код из 4.ahk соответственно повторяется.
Подскажите тогда как можно не используя goto и gosub (не очень корректно работают) переправить выполнение кода в другой файл со всеми переменными?

4 (изменено: teadrinker, 2014-02-26 00:51:52)

Re: AHK: Ошибка "Duplicate label"

akman пишет:

не используя goto и gosub (не очень корректно работают)

Кто не очень корректно работает, команды, или всё-таки программер? Всё делается точно так же, как если бы код из другого файла присутствовал в том месте, где находится #Include.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5 (изменено: akman, 2014-02-26 18:00:43)

Re: AHK: Ошибка "Duplicate label"

Короче всем кто еще не знает, советую для начала все написать в одном коде, а потом, если нужно, разбивать на составляющие, используя #include и ставить метки с помощью goto