Olen tekemässä Vistaan lukujärjestys-gadgetia ja en tiedä miten siihen syötetyt tiedot voisi tallentaa ja ladata.
Onnistuisikohan javascriptillä?
gadget.html tiedosto tällä hetkellä näyttää nyt tältä:
(Mod. Edit. Poistettu epäoleellinen pitkä koodi, HTML-taulukko täynnä <input type="text">-tageja.)
Visual Basic Scriptillä ei tunnu toimivan ainakaan näin:
<script type="text/vbscript"> Dim i As Integer, r As String Open "C:\Users\Resiina\AppData\Local\Microsoft\Windows Sidebar\Gadgets\Lukujarjestys.gadget\data.txt" For Output As #1 For i = 1 to 5 Print #1, "Dataa " & i Next Close #1 </script>
Itse en VB:iin ole perehtynyt; onko koodissa vikaa vai eikö gadgetilla ole lupaa kirjoittaa tiedostoon? Vai onko millään HTML-tiedostolla lupaa siihen? Vai onko tiedostoon kirjoittamista tai lukemista ollenkaan VBS:ssä?
Ainakin VBS toimii gadgetissa:
<script type="text/vbscript"> Msgbox 'testi' </script>
Tällaisen siis ainakin sain toimimaan.
Tästä lienee apua:
http://www.yaldex.com/wjscript/
Nyt on tämmöne:
<script type="text/vbscript"> Sub Tallenna() Dim fso, filu Set fso = CreateObject("Scripting.FileSystemObject") Set filu = fso.CreateTextFile("C:\Users\Resiina\AppData\Local\Microsoft\Windows Sidebar\Gadgets\Lukujarjestys.gadget\data.txt", True) filu.WriteLine("testi") filu.Close End Sub </script>
Tuo tiedostoon kirjoittaminen toimii, jos tuota funktiota käyttää heti sen määrittelyn jälkeen, siis </script> ennen.
Mutta kirjoittaminen ei toimi jos painan tällaista nappulaa:
<input type="image" src="tallenna.BMP" onmouseclick="Tallenna()" style="width: 150; height: 10; border: 0;">
Voiko VBS-funktioita käyttää tapahtumissa kuten onmouseclick vai mistä tämä johtuu?
Niin ja miten saan jonkun tekstikentän arvon VBS:ssä? JavaScriptillähän homma hoituu id.value
:lla.
Muuta onmouseclick="Tallenna()" -> onclick="Tallenna()"
Sain itse ainakin tekstikentän arvon ihan suoraan id.value:lla.
Ai niin joo sehän olikin onclick, olipas taas muistikatkos.
Mutta joo tämähän toimii, kiitos paljon avusta.
Mutta, mutta... En saanut tiedostosta lukemista vielä toimimaan.
<script type="text/vbscript"> Dim fso, filu, s Set fso = CreateObject("Scripting.FileSystemObject") Set filu = fso.OpenTextFile("C:\Users\Resiina\AppData\Local\Microsoft\Windows Sidebar\Gadgets\Lukujarjestys.gadget\data.txt", True) s = filu.ReadLine m0.value = s filu.Close Sub Tallenna() ...
Ei toimi tuo m0.value
:lle uuden arvon asettaminen.
Msgbox s
ei kyllä myöskään aukaissut minkäänlaista viesti-ikkunaa.
Onko vika tiedostosta lukemisessa vai missähän?
Niin ja nuo kaikki 40 tekstikenttää on nimetty tyyliin m0, m1, m2, jne.
Tällaisia siis:
<input type="text" id="m0">
Muuta fso.OpenTextFile(..., True) -> fso.OpenTextFile(..., 1)
Ei toimi vieläkään.
Ajattelin että True kelpaa, kun tuossa kirjoittamisessakin se on:
fso.CreateTextFile("C:\...\data.txt", True)
Minulla tuo kyllä toimii, jos toinen parametri on 1 tai jos sen jättää pois kokonaan. Huomaa, että tekstikentän m0 täytyy olla koodissa ennen skriptiä.
Joo nyt toimii kun siirsin tuon skriptin HTML-koodin jälkeen. Gadgetti valmis, kiitos avustuksesta. Nyt ei enää tarvitse pitää työpöydällä lukujärjestys.txt-tiedostoa ja avata sitä erikseen, kun sen näkee koko ajan pienessä ikkunassa ja ei tarvitse kirjoittaa välilyöntejä/tabeja ja rivinvaihtoja erottimiksi. :-)
Aihe on jo aika vanha, joten et voi enää vastata siihen.