krollew
(Robosapienv2)
26 Lipiec 2011 16:33
#1
Witam!
Ostatnio coraz częściej zajmuję się programowaniem.
Mam problem z VBScript.
Chciałbym, żeby skrypt pokazał mi zawartość pliku w okienku dialogowym. Mam kod:
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim fso, f, Shell, AppData, gdanko, ts
Set fso = CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("Wscript.Shell")
AppData = Shell.ExpandEnvironmentStrings("%AppData%")
Set f = fso.GetFile(AppData+"\imie.txt")
Set ts = f.OpenAsTextStream(ForReading, TristateUseDefault)
ts.Close
Jak go muszę przebudować (npisać od nowa), żeby to robił?
matzu
(Tomek Matz)
26 Lipiec 2011 18:37
#2
Otwierasz plik, a w którym miejscu masz odczytywanie jego zawartości? Zobacz przykład:
http://msdn.microsoft.com/en-us/library/hwfw5c59%28v=vs.85%29.aspx
Do odczytywania zawartości pliku można użyć metody ReadAll (lub odczytywać linijka po linijce jak w powyższym przykładzie). Zobacz przykład:
http://msdn.microsoft.com/en-us/library/t58aa4dd%28v=VS.85%29.aspx
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim objFileSystemObject, objShell, objFile
Set objFileSystemObject = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = WScript.CreateObject("WScript.Shell")
folderPath = objShell.ExpandEnvironmentStrings("%AppData%")
filePath = objFileSystemObject.BuildPath(folderPath, "imie.txt")
Set objFile = objFileSystemObject.OpenTextFile(filePath, ForReading)
If objFile.AtEndOfStream Then
text = ""
Else
text = objFile.ReadAll
End If
objFile.Close
WScript.Echo text
krollew
(Robosapienv2)
27 Lipiec 2011 04:52
#3
Wielkie dzięki. Wszystko się udało. Może to nie jest zbyt zaawansowany skrypt, ale… coś się daje…
Wyniki mojej ciężkiej( ) pracy: http://www.przeklej.pl/plik/mowanastart-zip-002bp97inbtt .
Dzięki za pomoc!
matzu
(Tomek Matz)
27 Lipiec 2011 13:37
#4
Fajne Łelkam i Nie masz imienia? mnie rozbroiło. Oglądałem tylko kod, bo syntetyzatora mowy nie mam (przynajmniej tak mi się wydaje, że nie mam … Chyba, że jest jakiś wbudowany w Windows?).
BTW muszę się przyczepić … Dlaczego tą linijkę IF NOT exist “%appdata%\imie.txt” “%windir%\niema.vbs” masz wpisaną trzykrotnie? I zamiast MyDir+"\imie.txt" możesz użyć BuildPath http://msdn.microsoft.com/en-us/library/z0z2z1zt%28v=vs.85%29.aspx .
krollew
(Robosapienv2)
26 Sierpień 2011 10:12
#5
Chodziło mi o to, że jak ktoś za pierwszym razem nie wpisze imienia, to żeby mu wyskoczyło drugi raz, i trzeci.
A jeśli chodzi o syntezator mowy to w Windows wbudowana jest synteza w j. angielskim ( :x ). A polską (i nie tylko) można ściągnąć z http://espeak.sourceforge.net/download.html , a konkretnie http://sourceforge.net/projects/espeak/files/espeak/espeak-1.45/espeak-1.45.05-win.zip/download ( =D> )