webForumDet fria alternativet

kontrollera filnamn

.NET

8 svar · 496 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#1

SKulle behöva hjälp med att kontrollera vad filen heter som man försöker öppna.

Har provat:

Dim OpenDlg As New OpenFileDialog()

If OpenDlg.FileName.CompareTo("test") Then
'gör något
ElseIf OpenDlg.FileName.CompareTo("test2") Then
'gör något
Else
     Call Error_file()
End If

När jag öppnar "test" så funkar det, men när jag öppnar "test2" händer ingenting. Utan den går in i den första iaf, även att den inte ska det x(

Vad har jag gjort för fel :OO

Tacksam för all hjälp

Medlem sedan dec. 19996 721 inlägg
#2

Använd Equals, inte CompareTo.

Medlem sedan sep. 2005833 inlägg
#3

Det vill inte funka x(

Dim OpenDlg As New OpenFileDialog()

If OpenDlg.FileName.Equals("test") Then
'gör något
ElseIf OpenDlg.FileName.Equals("test2") Then
'gör något
Else
     Call Error_file()
End If

Den går in i else-satsen hela tiden, o då öppnar jag rätt fil : :OO

Medlem sedan dec. 19996 721 inlägg
#4

Jag kan inte se att du visar dialogrutan någonstans (ShowDialog). Som det är nu kommer OpenDlg.FileName aldrig att få något värde.

Medlem sedan sep. 2005833 inlägg
#5

hela min kod:

Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click

        Dim sr As IO.StreamReader

        Dim OpenDlg As New OpenFileDialog()

        OpenDlg.Filter = "Text File (*.txt)|*.txt"
        OpenDlg.InitialDirectory = IO.Directory.GetCurrentDirectory

        If OpenDlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

            lblResult.Text = ""

            Dim txt, txt2 As String
            Dim start1, minPrice As Integer

            '### KONTROLLERAR VILKEN FIL SOM ÖPPNAS
            If OpenDlg.FileName.Equals("test") Or OpenDlg.FileName.Equals("test2") Then

                If OpenDlg.FileName.Equals("test") Then
                    minPrice = 100
                Else
                    minPrice = 10
                End If

                sr = IO.File.OpenText(OpenDlg.FileName)

                Do While sr.Peek <> -1

                    txt = sr.ReadLine

                    start1 = txt.IndexOf(";")
                    txt2 = txt.Substring(start1 + 1)

                    If CDbl(txt2) > minPrice Then
                        txt = txt.Substring(0, start1)
                        lblResult.Text &= txt & vbCrLf
                    End If

                Loop
                sr.Close()

            Else
                Call Error_file()
            End If

            End If

    End Sub
Medlem sedan dec. 19996 721 inlägg
#6

FileName returnerar hela sökvägen, så en jämförelse med bara "test1" och "test2" (trodde det var exempelvärden..) kommer inte att funka. Använd Path.GetFileNameWithoutExtension(OpenDlg.FileName) så kommer du att få ut "test1" och "test2".

Medlem sedan sep. 2005833 inlägg
#7

hmm, ok. Är det såhär det ska vara?

If Path.GetFileNameWithoutExtension(OpenDlg.FileName) = "test" Or Path.GetFileNameWithoutExtension(OpenDlg.FileName) = "test2" Then

Nu får jag felmeddelande på Path, att den inte är deklarerad :q

Medlem sedan dec. 19996 721 inlägg
#8

Path ligger i System.IO

Medlem sedan sep. 2005833 inlägg
#9

tusen tack emission :bire

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)