Morjes,
XP:ssä tämä on toiminut, mutta Vista ei jostain syystä anna kirjoittaa txt-tiedostoon. Vista kyllä avaa tiedoston, mutta esimerkin koodi muuttujan tekstit ei tallennu.
Dim koodi$ Close #1 Open App.path & "\koodit\data.txt" For Output As #1 Print #1, koodi Close #1 Dim polku$ polku = App.path & "\koodit\data.txt" openfile (polku)
Mistä johtuu ja mikä avuksi (Vb 6)?
Mod. lisäsi kooditagit
Ootko jo katsonut mitä tiedostosta
c:\users\{käyttäjänimesi}\appdata\local\
löytyy ?
Jos kaipaamasi data on tuolla, niin aiheuttaja on Vistan data redirection/virtualization. Avuksi on joko siirtää ne tiedostot sinne missä niiden pitäisikin olla (APPDATA tms) tai jos on ihan pakko sitä Program Files hakemistoa käyttää niin käytä API-kutsuja tiedostojen käsittelyyn ja määrittele CreateFilelle sopiva security descriptor.
Kiitos,
Lähti pelaan kun siirsi pois Program Files -kansiosta.
Jos joku kuitenkin asentaa välttämättä sovelluksen defaultista huolimatta Program files -kansioon, niin voitko laittaa vielä esimerkin mainitsemastasi API-kutsun ja security descriptorin käytöstä.
Paljon parempi ratkaisu on tallentaa ne tiedostot sinne minne ne pitäisi tallentaa (datahakemistoon) eikä siihen hakemistoon johon ohjelma on asennettu.
Private Declare Function SHGetFolderPath Lib "shFolder" _ Alias "SHGetFolderPathA" (ByVal hwndOwner As Long, _ ByVal nFolder As Long, ByVal hToken As Long, _ ByVal dwFlags As Long, ByVal pszPath As String) As Long Private Const CSIDL_APPDATA = &H1A Private Const CSIDL_FLAG_CREATE = &H8000& Private Const MAX_PATH = 260 Private Const SHGFP_TYPE_CURRENT = &H0 Public Function GetAppDataPath() As String Dim sz As String sz = Space(MAX_PATH) If SHGetFolderPath(0, CSIDL_APPDATA Or CSIDL_FLAG_CREATE, 0, _ SHGFP_TYPE_CURRENT, sz) <> 0 Then Exit Function GetAppDataPath = Left$(sz, InStr(1, sz, Chr(0)) - 1) & "\" & App.Title If Dir(GetAppDataPath, vbDirectory) = "" Then MkDir GetAppDataPath End Function Private Sub FileratorinKoodi() Dim Koodi As String, FileId As Integer If Dir(GetAppDataPath & "\koodit", vbDirectory) = "" Then MkDir GetAppDataPath & "\koodit" FileId = FreeFile Open GetAppDataPath & "\koodit\data.txt" For Output As #FileId Print #FileId, Koodi Close #FileId End Sub
Morjes,
No nyt toimii niin kuin pitääkin.
Tuhannet kiitokset.
Hienoa että joku viitsii neuvoa amatööriä.
T: Filerator
Aihe on jo aika vanha, joten et voi enää vastata siihen.