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 SubMorjes,
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.