Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedostonkäsittely Vistan gadgetissa (JS)

Sivun loppuun

Resiina [11.08.2007 18:24:43]

#

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.)

Resiina [12.08.2007 19:46:24]

#

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.

Pöytälamppu [13.08.2007 08:36:51]

#

Tästä lienee apua:
http://www.yaldex.com/wjscript/sgWorkingWithFiles.htm

Resiina [13.08.2007 16:56:04]

#

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.

Pöytälamppu [14.08.2007 15:03:25]

#

Muuta onmouseclick="Tallenna()" -> onclick="Tallenna()"

Sain itse ainakin tekstikentän arvon ihan suoraan id.value:lla.

Resiina [14.08.2007 15:12:31]

#

Ai niin joo sehän olikin onclick, olipas taas muistikatkos.
Mutta joo tämähän toimii, kiitos paljon avusta.

Resiina [14.08.2007 17:08:52]

#

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">

Pöytälamppu [14.08.2007 17:25:38]

#

Muuta fso.OpenTextFile(..., True) -> fso.OpenTextFile(..., 1)

Resiina [14.08.2007 21:41:29]

#

Ei toimi vieläkään.
Ajattelin että True kelpaa, kun tuossa kirjoittamisessakin se on:

fso.CreateTextFile("C:\...\data.txt", True)

Antti Laaksonen [14.08.2007 23:42:59]

#

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ä.

Resiina [15.08.2007 17:07:06]

#

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. :-)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta