serzh82saratov я случайно кусок прихватил из готового скрипта. 
arIniErrorTXT := ["отсутствует INI-файл" ; = 1
,"в имени переменной/её нет/ошибка в имени секции." ; = 2
,"переменная не может быть пустой." ; = 3
,"переменная содержит недопустимое значение." ; = 4
,"резерв или ошибка в программе."] ; = 5
;--------------------Чтение переменной из INI и проверка-------------------------------------
;ВХОД:
;1-й ByRef OutputINI
;2-й ByRef Skay True/False = тип выхода см. ВЫХОД Вариант №1/№2
;3-й FilenameINI
;При необходимости
;4-й SectionINI умолчанию = ""
;5-й KeyINI умолчанию = ""
;ВЫХОД:
;1-й ByRef OutputINI - считанное значение
;В Return(Вариант №1) True/False/-1 - Ок/Пустая переменная/В ByRef Skay код ошибки
;В Return(Вариант №2) True/False/-1 - Ок/Пустая переменная/Автовыход из игры(не передаётся)
fnIniReadAndСheck(ByRef OutputINI, ByRef Skay := False, FilenameINI, SectionINI := "", KeyINI := "")
{
if FileExist(FilenameINI)
IniRead, OutputINI, %FilenameINI%, % SectionINI, % KeyINI
Else
{
NumError := 1
If (Skay)
{
Skay := NumError
Return -1
}
Else
{
fnIniErrorOut(NumError, FilenameINI, SectionINI, KeyINI) ; нет файла
Return
}
}
if ((OutputINI) && (OutputINI != "ERROR"))
Return True
If (!OutputINI) ; Пустая переменная
Return False
If (OutputINI = "ERROR") ;
{
NumError := 2
If (Skay)
{
Skay := NumError
Return -1
}
Else
fnIniErrorOut(NumError := 2, FilenameINI, SectionINI, KeyINI) ; не верная переменная или секция
Return
}
}
;--------------------------------------------------------------------------------------------
;--------------------Диагностика об ошибках в INI (fnIniReadAndСheck)------------------------
fnIniErrorOut(NumError := 0, FilenameINI := "", SectionINI := "", KeyINI := "", SecWait := 15)
{
Error_TXT := arIniErrorTXT[NumError]
cWait := SecWait
Gosub lMinWinGameKeys
cTitle := "Ошибка в INI-файле" ;Титул MsgBox
cMsgErr := "`n Ошибка : " Error_TXT
cTxtErrAd1 := "`n Файл : " FilenameINI
cTxtErrAd2 := "`n Секция = [" SectionINI "] `n Ключ = " KeyINI
;cWait := 35
cTxtErrAd3 := "`n`n Выход из программы(Тайм-аут = " cWait " сек)."
MsgBox % сMsgBoxError_Ok, %cTitle%, %cMsgErr% %cTxtErrAd1% %cTxtErrAd2% %cTxtErrAd3%, %cWait%
Gosub lExitTotalKeys
Return
}
;--------------------------------------------------------------------------------------------
Осталось понять что надо написать в заголовке, что бы из функции вызвать функцию по переданным значениям.
Я про это - fnIniReadAndСheck(ByRef OutputINI, ByRef Skay := False, FilenameINI, SectionINI := "", KeyINI := "").
А то сравнение ключей меня запутает окончательно. 
P.S. Хотя можно подпрограмму, а то с функцией что то не складывается. Значит передать просто метку.
"На каждое действие есть равная ему противодействующая критика." Постулат ХарриссонаДля NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).OS Windows 10 x64 Pro