Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Jak zrobić petle


Rekomendowane odpowiedzi

Opublikowano

If FileExists(@WorkingDir&"\Language\BazaLanguage.ini") Then
$jj0=IniReadSection ( @WorkingDir&"\Language\BazaLanguage.ini", "Language" )
endif

 

Czyta z pliku .ini jęzki i $jj0= zapisuje je do tablicy

$jj0[0][0] <-- liczba języków

$jj0[1][1] <-- wartość nr. 1 , język domyślny , np. Polski

$jj0[2][1] <-- wartość nr. 2 , język np. Polski

$jj0[3][1] <-- wartość nr. 3 , język np. Angielski

itd.

 

Plik BazaLanguage w folderze Language

 

[Language]
;ble ble
1=Polski
2=Polski
3=Angielski
4=Turecki

 

Ma ktoś pomysł jak zrobić , by na poczatku programu, po zapisaniu do tablicy odpowiednio wklejało języki do $combo6 ?

 

Zrobiłem tak....

Jeśli źle , to prosze mnie poprawić.

Jeszcze potrzebuje przykładu jak zrobić , by czytało według $jj0[1][1] , czytało drugi plik .ini

i żeby potem odpowiednio zmieniło język w programie.

Potem potrzebuje pętli, która czytałaby $combo6 i też według wybranej opcji zmieniało język oraz

zapisało wybrany język do pliku .ini , jako język domyślny.

 

 

 

#cs ----------------------------------------------------------------------------
Author:; tele
#ce ----------------------------------------------------------------------------
#include <ButtonConstants.au3
#include <ComboConstants.au3
#include <EditConstants.au3
#include <GUIConstantsEx.au3
#include <SliderConstants.au3
#include <StaticConstants.au3
#include <TabConstants.au3
#include <WindowsConstants.au3

#Region ### START Koda GUI section ###
Form=d:\zainstalowane\autoit3\koda\forms\form4a.kxf
$Form1_1 = GUICreate("Kalkulator monet", 741, 727, 295, 145)
;_______________________________ 1 ZAKLADKA--------------------------------
$PageControl1 = GUICtrlCreateTab(8, 8, 724, 712)
$TabSheet4 = GUICtrlCreateTabItem("Kal. Opłacalnosci")
$Button49 = GUICtrlCreateButton("Otwórz", 624, 72, 91, 41)
$Label81 = GUICtrlCreateLabel("Kalkulator systemowy", 544, 48, 173, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Label19 = GUICtrlCreateLabel("Kalkulator opłacalnoci złotych monet.", 80, 64, 223, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")

;----------------------------------------2 ZAKLADKA-----------------------------
$TabSheet5 = GUICtrlCreateTabItem("Zmień język")
  ; <--- "Zmień język"<br>$Label16 = GUICtrlCreateLabel("Aktualny język :", 80, 112, 95, 20)<br>GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")<br><br>$waluta="Polski"<br>$Combo6 = GUICtrlCreateCombo("", 207, 112, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL)) ; Jezyki<br><br>GUISetState(@SW_SHOW)<br><br>$last = ""<br><br><br>If FileExists(@WorkingDir&"\Language\BazaLanguage.ini") Then<br>$jj0=IniReadSection ( @WorkingDir&"\Language\BazaLanguage.ini", "Language" )<br>endif<br><br>For $i = 0 to $jj0[0][0] Step +1<br>            ; MsgBox(0, "AutoIt", $i)<br>GUICtrlSetData($Combo6, $jj0[$i][1],$jj0[0][1])<br>             Next  <br><br><br><br><br>While 1<br>$nMsg = GUIGetMsg()<br>Switch $nMsg                   ;<-- poczatek przycisków<br>Case $GUI_EVENT_CLOSE<br>Exit<br><br>Case   $Button49   ; Guzik uruchamiajacy kalkulator systemowowy<br>CalculatorSys()<br><br><br>EndSwitch<br><br><br><br>  Wend<br><br><br><br>
;__________________________________________________________________________________________<br>  Func CalculatorSys()   ; FUNKCJA URUCHAMIA KALKULATOR SYSTEMOWY<br>    Run("calc.exe")<br>If FileExists(@WorkingDir&"\Language\BazaLanguage.ini") Then<br>       $jj=IniReadSection ( @WorkingDir&"\Language\BazaLanguage.ini", "Language" )<br>endif<br>    MsgBox(0,'box' , $jj[1][1])  ;Polski<br>MsgBox(0,'box' , $jj[0][0])  ;Liczba jezyków<br>     GUICtrlSetData($Label19, $jj[1][1])  ; OK<br><br><br><br>  EndFunc
;;________________________________________________________________________________________

 

 

Dobra opcja "Spoiler" jest popsuta, nie chce mi sie po niej poprawieć, bo już nie ma to znaczenia.

Wszystko jest gotowe w linku niżej.

Przepraszam.

Kocham mpcforum.pl!!!

18706.png

  • 2 tygodnie później...
Opublikowano

Dlaczego nie działa _StringBetween ?

 

 

If FileExists(@WorkingDir&"\Language\BazaLanguage.ini") Then
$jjdefault = IniRead (@WorkingDir&"\Language\BazaLanguage.ini", "Language" , "1", "brak jężyka" )
  endif
  $aa1=  $jjdefault
 $nazwaplikuDefault = _StringBetween( $aa1 ,';',';')

  MsgBox(0, "AutoIt", $nazwaplikuDefault)

 

Albo co jest wynikiem tablicy, ze _StringBetween tego nie czyta , jakiś string? array? czy co?

Kocham mpcforum.pl!!!

18706.png

Opublikowano

Ehh , nie wiem czemu nie czyta:

 

Zrobiłem tak:

 

http://www.mpcforum.pl/topic/537535-languagepack-czyli-jak-dodac-inny-jezyk-do-wlasnego-programu/

 

 

To jest tylko przykład, mam nadzieję, że się komuś przyda jeśli pisze jakiegoś bota lub inny program.

Pliki .ini można edytować w edytorze tekstowym.

Dzięki temu inne osoby będą mogły dodać swój język do programu,

bez potrzeby dekompilacji .exe

 

 

 

Inną metodą zapisywania plików z językami oprócz .ini ,

jest zapisywanie je w formacie .xml

Kocham mpcforum.pl!!!

18706.png

Opublikowano

a nie lepiej wpliku .ini zapisać ścieżke do pliku z językiem..

i w tym pliku jako sektor dać nazwę jezyka..

i na początku dać sprawdzanie czy pliki językowe są poprawne..

i po sprawdzeniu z kopiować pliki językowe do pamięci podręcznej że jakby ktoś usunął pliki jeżykowe podczas pracy programu to program by się nie wyłaczył

i po po nownym odpaleniu jakby wykrył że plików językowych niema albo są nie poprawne to by je z powrotem zkopiował do folderu programu..

 

;Script by ziuto
;Source-code Autoit v3
$User = InputBox("Twoj nick", "Podaj swoj nick", "tu go wpisz")
If $User = "ziuto" Then
$gui = GUICreate("User " & $User, 175, 100, -1, -1, 0x00080000)
$button_lubie_cie = GUICtrlCreateButton("Sam sie lubie", 50, 10)
$button_dam_ci_5_gwiazdek = GUICtrlCreateButton("Dam sobie 5 gwiazdek", 30, 40)
ElseIf $User <> "ziuto" Then
MsgBox(0, "Powitanie", "Siema " & $User)
$gui = GUICreate("User " & $User, 175, 100, -1, -1, 0x00080000)
$button_lubie_cie = GUICtrlCreateButton("Lubie cie ziuto", 47, 10)
$button_dam_ci_5_gwiazdek = GUICtrlCreateButton("Dam ci 5 gwiazdek ziuto", 25, 40)
EndIf
GUISetState(@SW_SHOW, $gui)
While $User = "ziuto"
$msg = GUIGetMsg()
Select
Case $msg = -3
ExitLoop
Case $msg = $button_lubie_cie
MsgBox(0, "Lubie sie", "Sam sie lubie :o")
Case $msg = $button_dam_ci_5_gwiazdek
MsgBox(0, "Dam sobie 5 gwiadek", "Ze bym to ja mogl sam sobie dac")
EndSelect
WEnd
While $User <> "ziuto"
$msg = GUIGetMsg()
Select
Case $msg = -3
ExitLoop
Case $msg = $button_lubie_cie
MsgBox(0, "Lubie cie", "A za co ?")
InputBox("A za co ?", "Za co mnie lubisz ?", "???")
MsgBox(0, "Za to", "Aha" & @CRLF & "Dobrze to wiedziec xD" & @CRLF & "Nq")
ShellExecute("http://www.mpcforum.pl/")
ExitLoop
Case $msg = $button_dam_ci_5_gwiazdek
ShellExecute("http://www.mpcforum.pl/user/259390-ziuto/")
EndSelect
WEnd


Opublikowano

Widze że wreszcie mam kogoś chętnego do pomocy.

To zapraszam do poprawy pliku :D

 

1.

a nie lepiej wpliku .ini zapisać ścieżke do pliku z językiem..

Wyjaśnij to lepiej, ścieżka jest w pliku .ini, tylko nie bezpośrednio.

No chyba że chcesz pliki z językiem przechowywać na Dysku (D:) , a program na Dysku (E:) lub innym dowolnym miejscu

:D

( troche chyba przesada , mnie np. to wystarcza ,, pliki działają gdzie kolwiek je wklei bez instalacji , o ile są razem,

ale jest to do zrobienia, z zastrzeżeniem, ze najwygodniej byłoby użyć

_StringBetween , które mi nie działa,

więc chyba pozostaje dodać to do następnych kluczy , zawalając pamięć

)

2.

i na początku dać sprawdzanie czy pliki językowe są poprawne..

Nie da się sprawdzić , ale da się sprawdzic :

- czy nie brakuje do języka pliku z danym językiem

- czy w pliku z danym językiem jest odpowiednia liczba kluczy

 

:D Dopiszesz ?

 

 

3 .

po sprawdzeniu z kopiować pliki językowe do pamięci podręcznej że jakby ktoś usunął pliki jeżykowe

Na pamięci podręcznej się nie znam , po drugie , jak zresetujesz kompa to i tak stracisz pliki, to bezsensu,

ale możesz zrobić drugi folder ukryty , podpisać go i modlić się by nikt Ci tam nie grzebał , jak program wykryje nie prawidłowości

to moze się spytać uzytkownika czy naprawić błedy ,

podać w którym miejscu jest nieprawidłowość,

przekopiować pliki i się zresetować.

Kocham mpcforum.pl!!!

18706.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...