Pomoč pri urejanju WinCE skripte

Janch

GPS guru
Osebje foruma
7. jul 2009
7.312
635
113
v leru
navi-guru.blogspot.com
Sicer imam že nekaj znanja in izkušenj pri urejanju oz bolj pri razumevnju pomena ukazov v skriptah, ampak sedaj sem naletel na neznanko katere ne znam razvozlat. Nekdo, ki se spozna na skripte mu bo verjetno hitro jasno in mi bo znal pojasnit :)

Torej tole je ukaz v eni skripti:

ver_file = "\Storage card\System\Version_Info.txt"
If(FileExists(ver_file))
version = SubStr(ReadFile(ver_file), 1, 5)
EndIf

If(( version = "5.2.7") OR ( version = "5.2.8"))
Message("Not for your Version !","*** ERROR ***"),

Zadevo razumem in tudi preverjeno deluje tako kot mora. Se pravi sistem iz SD kartice\System\ prebere datoteko Version_info.txt in če je v njej zapis 5.2.7 ali 5.2.8, potem logično vrže napako "Not for your Version!"

Če pa je v datoteki Version_Info.txt recimo zapis 4.0.6 seveda napake ne javi in skripta dela dalje po nareku.. Torej vse lepo in prav.

ne razumem pa zakaj ta ukaz ne deluje več, če dodam recimo več varint, npr:

If(( version = "5.2.7") OR ( version = "5.2.8") OR ( version = "5.2.9") OR ( version = "6.1.0") OR ( version = "6.1.2"))

v Version_Info.txt pa je recimo zapis 4.0.6 potem skripta kjub temu vrže napako "Not for your Version!", čeprav je po moji logiki nebi smelo saj tega zapisa ni v Version_Info.txt. Torej takoj, ko dodam več verzij, potem skripta vsakič javi napako ne glede na zapis v Version_Info.tx. Mislim, da je fora v teh dveh (1, 5) številkah spodaj, ki pa ne vem kaj točno pomenita..Verjetno bi ju moral po neki logiki spremeniti, če dodajam več opcij v preverbo.

version = SubStr(ReadFile(ver_file), 1, 5)

Mi zna kdo pomagat rešit tole uganko? Upam, da je razumljivo kaj želim.. :)

aja, še ta podatek - v Version_Info.txt datoteki je vedno samo ena izmed navedenih verzij, torej samo 1 vrstica, 5 znakov ( npr: 5.2.7). Prilagam v post..
 

Priponke

  • Version_Info.txt
    5 bajtov · Ogledi: 165
Nazadnje urejeno:

amacar

Majstr
29. apr 2010
4.121
448
83
Ne spoznam se točno na wince skripte, ampak ti dve številki pomenita ponavadi od katerega znaka začne (torej od prvega) in ali koliko znakov gleda (torej 5) ali pa do katerega znaka (torej do petega).
Za malo debuga probaj pred tem izpisati: Message(version) , kar bo upam da izpisalo kaj je predtem sparsalo iz imena datoteke.

Vseskupaj pa seveda ugibam, grem malo pogooglat.
 

Mato

Majstr
3. okt 2007
2.074
389
83
Daj si Message(version) pred pogoj, da vidiš, kaj ti funkcija prebere. Pa kolikor vidim, želiš, da ni novejša verzija. V tem primeru bi gledal samo prvo številko in preverjal, če ni večja od 4.
 

Janch

GPS guru
Osebje foruma
7. jul 2009
7.312
635
113
v leru
navi-guru.blogspot.com
Ne razumem kam točno moram vrinit ta ukaz Message(version). Želim pa tako kot sem napisal - sistem mora gledat celotno številko ki je v Version_info.txt (vseh 5 znakov, npr 4.1.0) in potem to številko primerjat z 5 možnimi različicami (ali po potrebi še z večimi), ki bodo navedene v skripti, npr:

If(( version = "5.2.7") OR ( version = "5.2.8") OR ( version = "5.2.9") OR ( version = "6.1.0") OR ( version = "6.1.2"))

Mislim da bom obupal nad tem, saj niti ni ključno pri izvedbi in lahko to preverjanje izločim iz skripte. Namen tega je samo, da se samodejno prepreči nekompatibilna posodobitev. Itak bo skripta na začetku pred potrditvijo sporočila s katerimi verzijami je update kompatibilen.
 

amacar

Majstr
29. apr 2010
4.121
448
83
Daj ga pred if((version.... da ti bo izpisalo spremenljivko.
Mogoče ima kakšno omejitev zaporednih ORov, v tem primeru bi pač dal več if stavkov v tem smislu:

Koda:
If(version = "5.2.7")
Message("Not for your Version !","*** ERROR ***"),
EndIf

If(version = "5.2.8")
Message("Not for your Version !","*** ERROR ***"),
EndIf

If(version = "6.1.0")
Message("Not for your Version !","*** ERROR ***"),
EndIf
.
.
.
Lahko bi rešil tudi z elseIf, ampak ne vem niti kateri jezik se uporablja in kaj sploh omogoča
 

Janch

GPS guru
Osebje foruma
7. jul 2009
7.312
635
113
v leru
navi-guru.blogspot.com
Obujam projekt. Kako naj s skripto (ki je že narejena in lepo opravi svoje delo), ukažem, da na koncu pobriše vsebino USB ključka (vidi ga kot "MD").

tole sem dodal na konec a enostavno ignorira oz se nič ne zgodi:

delete \MD\*.*

kje ga biksam?
 

erikson

Guru
25. avg 2007
21.392
5.373
113
Verjetno "del /s /q \MD\" (/s - tudi podimeniki, /q - da ne sprašuje za potrditev)?

Ali ti "dir \MD\" sicer prikaže vsebino?
 

Janch

GPS guru
Osebje foruma
7. jul 2009
7.312
635
113
v leru
navi-guru.blogspot.com
ne pobriše...verjetno zato, ker se tudi ta skripta, ki narekuje ukaze nahaja na istem volumu "MD"

sem sedaj šel po daljšnjici in sicer z ločenim ukazom za vsako datoteko, ki jo želim pobrisat iz MD

delete "\MD\xxx.exe"
delete "\MD\yyy.exe"
delete "\MD\zzz"
...
..
.

mi je pa ostal še en imenik katerega mi noče pobrisat..primer:

deltree "MD\Utilities

sklepam da ravno zato, ker se v njem nahaja zagosnka datoteka ki poganja skripto. Ni panike, lahko ostane, dejansko je iz nje pobrisalo vse, razen .exe datoteke.
 
Nazadnje urejeno: