Что нового

Вызов функции из другого файла - пишет, что у функции нет EndFunc

Suppir

Продвинутый
Сообщения
967
Репутация
62
Есть главный скрипт в формате exe.
Также в этой же директории есть скрипт precompare.au3, который могут редактировать пользователи.

Пишу в главной программе:

Код:
if FileExists("Precompare.au3") Then
		#include <Precompare.au3>
		Precompare()
	EndIf


Файл Precompare.au3 содержит строки:

Код:
Func Precompare()
	Return True
EndFunc



При попытке запуска главного скрипта пишет ошибку:

Precompare.au3 (1) : ==> "Func" statement has no matching "EndFunc".:

Хотя эта строка там есть. Почему так происходит?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Ошибка создается именно при попытке сделать
Код:
#include <Precompare.au3>
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
По твоему, это нормальная конструкция?

Код:
If FileExists("Precompare.au3") Then
	Func Precompare()
		Return True
	EndFunc
	Precompare()
EndIf
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Yashied

Я хочу использовать файл Precompare.au3 как пользовательскую библиотеку. Чтобы юзеры могли дописать внутрь функции Precompare() свой код. Как это проще сделать?

Функции передается одна глобальная переменная $var. Внутри функции precompare() пользователь делает с ней что хочет, а потом эта переменная должна вернуться в основную программу (закрытую от пользователя).
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Как и любые другие "#Include", пиши в начале скрипта.

Код:
#include <Precompare.au3>

If FileExists("Precompare.au3") Then
	Precompare()
EndIf
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Yashied [?]
Как и любые другие "#Include", пиши в начале скрипта.

Да, но этого файла может и не быть. Тогда при запуске вываливается ошибка. Можно ли делать include только в том случае, если файл существует в одной директории со скриптом?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
zlo-kazan
в вашем варианте не может файл найти. А вариант с <Precompare.au3> работает.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Suppir сказал(а):
Можно ли делать include только в том случае, если файл существует в одной директории со скриптом?

Значит нужно либо добавлять в скрипт #Include <Precompare.au3>, либо нет, в зависимости от необходимости. Или создавать пустой файл.
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Спасибо, попробую на досуге :smile:
 
Верх