Member 13867169 Ответов: 1

Unauthorizedaccessexception был необработан. Проблема заключалась в строке fileopen. Это школьный проект. Заранее благодарю вас за вашу помощь!


Option Explicit On
Imports Microsoft.VisualBasic.FileSystem
Module Module1
    Structure ConcertTour
        Dim BandName As String
        Dim noofGigs As Integer
        Dim StartDate As Date
    End Structure
    Dim MyTour As ConcertTour

    Public Sub Main()
        Dim choice As Integer
        FileOpen(1, "C:\ConcertsRandom.DAT", OpenMode.Random)
        Do
            Console.WriteLine(" 1 to create. 2 to Enter. 3 to retrieve.")
            Console.Write("choice? ") : choice = Console.ReadLine
            If choice = 1 Then Call CreateDummyRecords()
            If choice = 2 Then Call EnterRecords()
            If choice = 3 Then Call RetrieveRecords()

        Loop Until choice = 4
        FileClose(1)
        Console.ReadLine()


    End Sub
    Sub CreateDummyRecords()
        Dim i As Integer
        For i = 1 To 30
            MyTour.BandName = "********************"
            MyTour.noofGigs = 0
            MyTour.StartDate = #1/1/2016 12:00:00 PM#
            FilePut(1, MyTour, i)
        Next
        Console.WriteLine()
        Console.WriteLine("dummyfiles created...")
    End Sub

    Sub EnterRecords()
        Dim hashcode As Integer
        Do
            Console.Write(" Band name (xxx to end)? ")
            MyTour.BandName = Console.ReadLine
            If MyTour.BandName <> "xxx" Then
                Console.Write(" no of gigs: ") : MyTour.noofGigs = Console.ReadLine
                Console.Write("start date: ") : MyTour.StartDate = Console.ReadLine
                hashcode = Asc(Left(MyTour.BandName, 1)) - 64
                FilePut(1, MyTour, hashcode)
            End If
        Loop Until MyTour.BandName = "xxx"
    End Sub

    Sub RetrieveRecords()
        Dim hashcode As Integer
        Console.Write(" Band name? ")
        MyTour.BandName = Console.ReadLine
        hashcode = Asc(Left(MyTour.BandName, 1)) - 64
        FilePut(1, MyTour, hashcode)
        Call DisplayRecordData(hashcode)
    End Sub

    Sub DisplayRecordData(ByVal thishashcode As Integer)
        Console.Write(" record key " + Str(thishashcode) + " ")
        Console.Write(MyTour.BandName + " ")
        Console.Write(Str(MyTour.noofGigs) + " ")
        Console.WriteLine(MyTour.StartDate)
    End Sub





End Module


Что я уже пробовал:

я пробовал изменить путь к файлу, и с другой системой импорта это не работает.

CHill60

Вы почти наверняка получите эту ошибку, если попытаетесь использовать корень диска C:. Кроме того, если вы используете что-нибудь под C:\Program файлы (x86) или C:\Program файлы. На что вы изменили путь к файлу?

1 Ответов

Рейтинг:
2

OriginalGriff

Сообщение об ошибке довольно ясно: UnauthorizedAccessExceotion означает то, что говорит - yo9u пытался получить доступ к файлу или каталогу, который пользователь, выполняющий ваш код, не имеет правильных разрешений для доступа таким образом: возможно, у вас нет доступа на запись к файлу или у вас нет никакого доступа к папке. Мы не можем сказать наверняка.

Но... если это действительно ваш путь: C:\ConcertsRandom.DAT тогда у вас не будет доступа на запись к нему, кроме как в качестве администратора, поскольку это ваш загрузочный диск, а корневая папка защищена от записи, чтобы предотвратить вмешательство вирусов в системные файлы.
Не храните данные в корневом каталоге какой-нибудь диск, и особенно не в корне загрузочного диска.

Видеть здесь: Где я должен хранить свои данные?[^] - код написан на C#, но это довольно очевидно.