[VBS]Pokazywanie zawartości pliku tekstowego w okienku


(Robosapienv2) #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ł?


(Tomek Matz) #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

(Robosapienv2) #3

Wielkie dzięki. Wszystko się udało. Może to nie jest zbyt zaawansowany skrypt, ale... coś się daje... :smiley:

Wyniki mojej ciężkiej( :smiley: ) pracy: http://www.przeklej.pl/plik/mowanastart-zip-002bp97inbtt.

Dzięki za pomoc!


(Tomek Matz) #4

Fajne :slight_smile: Ł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.


(Robosapienv2) #5

Chodziło mi o to, że jak ktoś za pierwszym razem nie wpisze imienia, to żeby mu wyskoczyło drugi raz, i trzeci. :smiley:

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