Получение переменных из текстового файла, затем установка новой переменной

#vb.net #visual-studio

#vb.net #visual-studio

Вопрос:

Я создаю код для компьютеров на работе. Мне пришлось создать программу «Установки». Я не знал, как это сделать правильно, но я нашел способ сделать это.

Когда я «устанавливаю» программу на другой компьютер, у меня есть USB-накопитель, и я копирую его на локальный диск на компьютере.

Теперь я впервые запускаю программу на своем компьютере, и этот код выполняется

и затем я получил сообщение об ошибке, потому что программа еще не определена:

Затемняйте lMateriaalCertificaat как String = System.IO.File.ReadAllText(Program amp; «Materialenamp;Certificaten.txt «)

  Dim Pathproj As String = AppDomain.CurrentDomain.BaseDirectory
    Dim Pathfile As String = Pathproj.Replace("binDebug", "BestandenLocatie.txt")

    Dim Program As String = System.IO.File.ReadAllText(Pathfile)


    'Deze bestanden worden aangemaakt en er wordt automatisch een route ingezet.
    Dim lMateriaalCertificaat As String = System.IO.File.ReadAllText(Program amp; "Materialenamp;Certificaten.txt")
        Dim lBibliotheek As String = System.IO.File.ReadAllText(Program amp; "Bibliotheek.txt")
        Dim lExcel_autonummering As String = System.IO.File.ReadAllText(Program amp; "Excelbestand autonummering.txt")
        Dim lLocatie_telbestanden As String = System.IO.File.ReadAllText(Program amp; "Locatie telbestanden.txt")
        Dim lMapnamen As String = System.IO.File.ReadAllText(Program amp; "Mapnamen.txt")
        Dim lOrderschijf As String = System.IO.File.ReadAllText(Program amp; "Zoek schijf.txt")
  

Потому что, когда form2_load я делаю это, а затем я не хочу угадывать эту строку.

 Public Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim Locatie_05Kuipers As String
        If System.IO.File.ReadAllText(Pathfile) = "" Then
            'If System.IO.File.ReadAllText("C:testing1testing2testing7testing1testing1text.txt") = "" Then

            Locatie_05Kuipers = InputBox("Vul hier de Locatie waar je start bestanden moeten staan. Bijvoorbeeld: K:InventorInstalprogram ")

            If System.IO.File.Exists(Pathfile) Then
                System.IO.File.Delete(Pathfile)
            End If

            Dim objStreamWriter As StreamWriter
            objStreamWriter = New StreamWriter(Pathfile)
            objStreamWriter.WriteLine(Locatie_05Kuipers amp; "3 - Locaties")
            objStreamWriter.Close()

            ButtonInstal.Visible = True
            Exit Sub
        Else
        End If
  

Итак, как или куда мне нужно поместить мои строки?

Комментарии:

1. Вы пробовали пошаговое выполнение в отладчике? Ваш первый блок кода отображается Program как определенный. После строки Dim Program = System.IO.File.ReadAllText(PathFile) , что Program содержит?

2. Если эти файлы находятся в том же месте вашего исполняемого файла, используйте Application.StartupPath для получения этого местоположения. binDebug связано со структурой папок вашего проекта. Этот путь никогда явно не используется, не упоминается или иным образом нигде в коде, никогда: этот путь не существует. Используйте, например, dim filePath = Path.Combine(Application.StartupPath, "Bibliotheek.txt") . — Путь в вашей Program переменной (плохое имя) неверен — если вы установите свою программу Program Files , у вас, вероятно, не будет прав на запись.

3. я хотел сказать, что когда Form2_loads я вижу "BestandenLocatie.txt" , содержит ли textfile что-то. Если нет, то мне нужно указать местоположение в текстовом файле, например "C:Installation map" . Но здесь возникает ошибка, потому что у меня в нем нет местоположения, поэтому у другого System.IO.File.ReadAllText еще нет правильного маршрута.

Ответ №1:

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

Например:

введите описание изображения здесь

     Dim pathString As String = My.Settings.filePath
    Dim fullPath = Path.Combine(pathString, "Locatie.txt")
    If Not Directory.Exists(pathString) Then
        Directory.CreateDirectory(pathString)
        File.Create(fullPath)
    Else
        If Not File.Exists(pathString) Then
            File.Create(fullPath)
        Else
            Console.WriteLine($"File {fullPath}already exists.")
        End If
    End If