Jump to content

Recommended Posts

Posted (edited)

hello there, i'm trying to load an variable from a file then use it in GUICtrlSetData but it don't work (it look like i can't use $array[1] in that place), any idea how i can bypass that ?

thanks :)

GUICreate("gui", 500, 500)
$Label1 = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
$Label2 = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
_archaicmultilang()
GUISetState(@SW_SHOW) 

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
    EndSwitch
WEnd

Func _archaicmultilang()
    Local $file = FileOpen(@ScriptDir & "lang" & IniRead($ConfigFile, "CFG", "langfile",""), 0)
    While 1
        Local $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
        $array = StringSplit($line, "=", 1)
        GUICtrlSetData($array[1], $array[2])
;~         MsgBox(0, "Line read:", $array[1] & ":" & $array[2])
    WEnd
    FileClose($file)
EndFunc   ;==>_archaicmultilang

the file

$Label1=testfr1
$Label2=testfr2
Edited by lautre
Posted (edited)

HI,

I think (corect me if i am worng)it not gone work this way.

i made a simpeler test just reading direct form a variable.

GUICreate("gui", 500, 500)
Global $Label1 = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
Global $Label2 = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
GUISetState(@SW_SHOW)
_archaicmultilang()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
    EndSwitch
WEnd
Func _archaicmultilang()
        $array1 = "$label1"
        $array2 = "test123456"
        GUICtrlSetData($array1, $array2)
     MsgBox(0, "Line read:", $array1 & ":" & $array2)
EndFunc ;==>_archaicmultilang

ant it is not working.

so i think that you have to fil in all the label name's

Edited by BartW
Posted

Is this what you want to do?

GUICreate("gui", 500, 500)
Global $Label1 = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
Global $Label2 = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
GUISetState(@SW_SHOW)
_archaicmultilang()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
    EndSwitch
WEnd
Func _archaicmultilang()
        $array1 = $label1
        $array2 = "test123456"
        GUICtrlSetData($array1, $array2)
     MsgBox(0, "Line read:", GUICtrlRead($array1) & " : " & $array2)
EndFunc ;==>_archaicmultilang
Posted

This is the correct way to use GUICtrlSetData()

GUICreate("gui", 500, 500)
$Label1 = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
$Label2 = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
_archaicmultilang()
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case -3
            Exit
    EndSwitch
WEnd

Func _archaicmultilang()
    Local $file = FileOpen(@ScriptDir & "lang" & IniRead($ConfigFile, "CFG", "langfile",""), 0)
    While 1
        Local $line = FileReadLine($file)
        If @error = -1 Then ExitLoop
        $array = StringSplit($line, "=", 1)
        GUICtrlSetData($Label1, $array[1])  ;<======= Set Label 1 to display the value in $array[1]
        GUICtrlSetData($Label2, $array[2])  ;<======= Set Label 2 to display the value in $array[2]
;~       MsgBox(0, "Line read:", $array[1] & ":" & $array[2])
    WEnd
    FileClose($file)
EndFunc   ;==>_archaicmultilang

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook

Posted (edited)

Is this what you want to do?

GUICreate("gui", 500, 500)
Global $Label1 = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
Global $Label2 = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
GUISetState(@SW_SHOW)
_archaicmultilang()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
     Case -3
         Exit
EndSwitch
WEnd
Func _archaicmultilang()
     $array1 = $label1
     $array2 = "test123456"
     GUICtrlSetData($array1, $array2)
     MsgBox(0, "Line read:", GUICtrlRead($array1) & " : " & $array2)
EndFunc ;==>_archaicmultilang

i tried adapted your code but i don't work too :/

$array = StringSplit($line, "=", 1)
$array1 = $array[1]
$array2 = $array[2]
GUICtrlSetData($array1, $array2)
MsgBox(0, "Line read:", GUICtrlRead($array1) & " : "& $array1 &":"& $array2)

GUICtrlRead($array1) in the msgbox return 0

This is the correct way to use GUICtrlSetData()

GUICreate("gui", 500, 500)
$Label1 = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
$Label2 = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
_archaicmultilang()
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd

Func _archaicmultilang()
Local $file = FileOpen(@ScriptDir & "lang" & IniRead($ConfigFile, "CFG", "langfile",""), 0)
While 1
Local $line = FileReadLine($file)
If @error = -1 Then ExitLoop
$array = StringSplit($line, "=", 1)
GUICtrlSetData($Label1, $array[1]) ;<======= Set Label 1 to display the value in $array[1]
GUICtrlSetData($Label2, $array[2]) ;<======= Set Label 2 to display the value in $array[2]
;~ MsgBox(0, "Line read:", $array[1] & ":" & $array[2])
WEnd
FileClose($file)
EndFunc ;==>_archaicmultilang

yea but it mean i have to write every label :( , can't i load the the variable from my file like i'm trying to ?

thanks you guys but I must express myself badly as it seem you do not understand me :idiot:

i have one language file filled like that :

$Label1=testfr1

$thatvariable=blabla

$anothervariable=ok

etc....

my gui is in english by default. :

$Label1 = GUICtrlCreateLabel("example", 0, 0, 50, 12)

I'll open my language file and use stringplit :

Local $file = FileOpen(@ScriptDir & "lang" & IniRead($ConfigFile, "CFG", "langfile",""), 0)

Local $line = FileReadLine($file)

$array = StringSplit($line, "=", 1)

so for the first line $array[1] return $label1 and $array[2] return testfr1

now im trying to put my translated text in my label/ button or others by using :

GUICtrlSetData($array[1], $array[2])

but i don't work the text don't change on the gui. do i need to do something special to get it working, any workaround?

Edited by lautre
Posted (edited)

hi .

maybe this helps you in the right direction.

there are limits the arry only allow 64 items.

GUICreate("gui", 500, 500)
Global $label[3]
$label[0] = UBound($label)
$label[1] = GUICtrlCreateLabel("test1", 0, 0, 50, 12)
$label[2] = GUICtrlCreateLabel("test2", 0, 30, 50, 12)
_archaicmultilang()
GUISetState(@SW_SHOW)
While 1
       $nMsg = GUIGetMsg()
               Switch $nMsg
                           Case -3
                                   Exit
               EndSwitch
WEnd
 
Func _archaicmultilang()
          Local $multilanginput = StringSplit("$Label1=testfr1" & @CR & "$Label2=testfr2", @CR)

         Local $counter1 = 1
         
         While 1
               if $counter1 > $multilanginput[0] then ExitLoop
               Local $line = $multilanginput[$counter1]
               $array = StringSplit($line, "=")
               $label_number = StringRight($array[1], 1)
               GUICtrlSetData($label[$label_number], $array[2])
               $counter1 += 1
         WEnd
EndFunc ;==>_archaicmultilang
Edited by BartW

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...