Решить проблему с несколькими условиями в autoit

Я работаю над программой в autoit. К сожалению, у меня возникают проблемы на следующем этапе с несколькими условиями:

Вот мой полный код:

Мой код:

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
; Create a GUI
Local $hGUI = GUICreate("my program", 300, 200)

; Create a combobox control.
Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20)
 Local $idButton = GUICtrlCreateButton("Activate", 210, 140, 85, 25)
Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)

; Add additional items to the combobox.
GUICtrlSetData($idComboBox, "Arabic|French|English", "Arabic")

; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)

Local $sComboRead = ""

; Loop until the user exits.
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $idButton_Close
            ExitLoop

        Case $idButton
            $sComboRead = GUICtrlRead($idComboBox)
            ; defining language codes
            if $sComboRead = "Arabic" then  $slktar = "ar-MA"
            if $sComboRead = "French" then  $slktfr = "fr-FR"
            if $sComboRead = "English" then  $slkten = "en-US"

            local $slktlng = @ComSpec & " /K " & '"' & @ScriptDir & "\bin\prog.exe enable_language "       ;main operation witout the addinional language code
            case  $slktar
                 Run($slktlng & " " & $slktar, @ScriptDir & "\bin\", @SW_HIDE)      ; starting main operation + arabic language code          
            case $slktfr
                 Run($slktlng & " " & $slktfr, @ScriptDir & "\bin\", @SW_HIDE)      ; starting main operation + french language code
            case  $slkten
                 Run($slktlng & " " & $slkten, @ScriptDir & "\bin\", @SW_HIDE)    ; starting main operation + english language code

    EndSwitch
WEnd


GUIDelete($hGUI)
EndFunc

Я понятия не имею. Любая помощь будет очень высоко ценится.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
129
1

Ответы 1

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $sLanguage

    ; Create a GUI
    Local $hGUI = GUICreate("my program", 300, 200)

    ; Create a combobox control.
    Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20)
    Local $idButton = GUICtrlCreateButton("Activate", 210, 140, 85, 25)
    Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)

    ; Add additional items to the combobox.
    GUICtrlSetData($idComboBox, "Arabic|French|English", "Arabic")

    ; Display the GUI.
    GUISetState(@SW_SHOW, $hGUI)

    Local $sComboRead = ""

    ; Loop until the user exits.
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE, $idButton_Close
                ExitLoop

            Case $idButton
                $sComboRead = GUICtrlRead($idComboBox)

                local $slktlng = '"' & @ComSpec & '" /C "' & @ScriptDir & '\bin\prog.exe" enable_language'

                ; Define language code.
                Switch $sComboRead
                    Case "Arabic"
                        $sLanguage = "ar-MA"
                    Case "French"
                        $sLanguage = "fr-FR"
                    Case "English"
                        $sLanguage = "en-US"
                EndSwitch

                Run($slktlng & " " & $sLanguage, @ScriptDir & "\bin\", @SW_HIDE)
        EndSwitch
    WEnd

    GUIDelete($hGUI)
EndFunc

Вы можете использовать другой оператор switch для определения кода языка. Не уверен, почему вы должны использовать отдельные имена переменных для код языка, хотя я использовал общее имя $sLanguage для присвоить выбранный языковой код. Это помогает избежать дублирования кода, т.е. только одного Требуется вызов функции Run() вместо трех.

Также исправлено цитирование команды, хранящейся в $slktlng. Я изменил аргумент /K на /C, поэтому ComSpec автоматически закрывается по завершении.

Другие вопросы по теме