directorynotfoundexeption

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Code:
Private Sub options_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create("%localappdata%\famlamssoftware\opties.xml", Nothing) 
etc...

levert de fout
DirectoryNotFoundExeption
Kan een gedeelte van het pad C:\Users\famlam\Documents\Visual Studio 2008\Projects\famlam\famlam\bin\Debug\%localappdata%\famlamssoftware\opties.xml niet vinden.
op.

Hoe kan ik toch de %localappdata% map gebruiken?
 
Code:
Private Sub options_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create("%localappdata%\famlamssoftware\opties.xml", Nothing) 
etc...

levert de fout

op.

Hoe kan ik toch de %localappdata% map gebruiken?

Probeer dit:

Code:
Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create _
        (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\famlamssoftware\opties.xml", Nothing)
        End Using

Ik zie trouwens dat jij ook je applicatie settings wilt laten opslaan en lezen door middel van XML. Lukt dat een beetje?
 
Probeer dit:

Code:
Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create _
        (Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\famlamssoftware\opties.xml", Nothing)
        End Using

Ik zie trouwens dat jij ook je applicatie settings wilt laten opslaan en lezen door middel van XML. Lukt dat een beetje?

Bedankt!

Het lukt een beetje, ik heb alleen nog een paar kleine probleempjes...
Code:
Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\famlamssoftware\opties.xml", Nothing)
writer.WriteStartElement("methode")
If RadioButtonMethode1.Checked = True Then writer.WriteString("1")
If RadioButtonMethode1.Checked = False Then writer.WriteString("2")
writer.WriteEndElement()
writer.Flush()
writer.Close()
End Using
Code:
Dim xmldoc As New System.Xml.XmlDocument()
xmldoc.Load("opties.xml")
Dim tempmethode As System.Xml.XmlNode = xmldoc.SelectSingleNode("/methode")
If IsNumeric(tempmethode.InnerText) Then demethode = tempmethode.InnerText

De problemen waar ik op het moment tegenaan loop zijn dat op computers waar die map nog niet bestaat, dan krijg ik een foutmelding dat de map niet bestaat (bij het opslaan).
Een ander probleem is bij het opstarten/inladen van de instellingen: als het xmlbestand (nog) niet bestaat, dan loopt het ook vast...

Misschien kun jij hiermee helpen?
1: hoe laat je controleren of map X al bestaat, en zo nee, dat hij hem dan aanmaakt? (en zo ja, dat hij gewoon verder gaat met de code)
2: hoe laat je controleren of het XMLbestand al bestaat? (en zo nee: optiesscherm.open(), zo ja, de code hierboven...)
 
Bedankt!

Het lukt een beetje, ik heb alleen nog een paar kleine probleempjes...
Code:
Using writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\famlamssoftware\opties.xml", Nothing)
writer.WriteStartElement("methode")
If RadioButtonMethode1.Checked = True Then writer.WriteString("1")
If RadioButtonMethode1.Checked = False Then writer.WriteString("2")
writer.WriteEndElement()
writer.Flush()
writer.Close()
End Using
Code:
Dim xmldoc As New System.Xml.XmlDocument()
xmldoc.Load("opties.xml")
Dim tempmethode As System.Xml.XmlNode = xmldoc.SelectSingleNode("/methode")
If IsNumeric(tempmethode.InnerText) Then demethode = tempmethode.InnerText

De problemen waar ik op het moment tegenaan loop zijn dat op computers waar die map nog niet bestaat, dan krijg ik een foutmelding dat de map niet bestaat (bij het opslaan).
Een ander probleem is bij het opstarten/inladen van de instellingen: als het xmlbestand (nog) niet bestaat, dan loopt het ook vast...

Misschien kun jij hiermee helpen?
1: hoe laat je controleren of map X al bestaat, en zo nee, dat hij hem dan aanmaakt? (en zo ja, dat hij gewoon verder gaat met de code)
2: hoe laat je controleren of het XMLbestand al bestaat? (en zo nee: optiesscherm.open(), zo ja, de code hierboven...)

Kun je niet beter het xml bestand in dezelfde directory laten zetten als de executable? Dat gaat met:
Application.StartupPath & "\famlamssoftware\opties.xml"

Om te checked of een bestand bestaat, zijn er verschillende manieren. Ik gebruik de Try... Catch statement om te bepalen of een code block goed word doorlopen.

Probeer dit:

Code:
Try

'Je Read XML code hier

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical And MsgBoxStyle.OkOnly)
        End Try

Maar je kan ook gebruiken maken van een simpel If statement met de File.Exists method om te checked of een bestand bestaat of niet:

Code:
If Not IO.File.Exists(Application.StartupPath & "\famlamssoftware\opties.xml") Then
            MsgBox("Settings file not found. Going to default state.", MsgBoxStyle.Critical And MsgBoxStyle.OkOnly)
        Else
            'Je Read XML code hier
        End If
 
Laatst bewerkt:
Kun je niet beter het xml bestand in dezelfde directory laten zetten als de executable? Dat gaat met:
Application.StartupPath & "\famlamssoftware\opties.xml"

Dat zou kunnen, maar omdat ik het in program files uitvoer wordt het bij mij in Vista (met UAC aan) opgeslagen in VirtualStore. En ik heb liever dat het op alle soorten pc's op dezelfde plaats komt.

i.i.g. bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan