Итерация текстового файла в Visual Basic - PullRequest
0 голосов
/ 25 июля 2011

Хорошо, я создаю программу, которая будет читать из текстового файла, преобразовывать каждую строку в массив. Отправьте каждую из этих строк 1 за галочку. Это в 2010 году Visual Basic. Самое близкое, что я получил, - это отправить все сразу, я работал над этим всю ночь и медленно разрушаю его. В идеале я хочу, чтобы кнопка 1 щелкала, чтобы заполнить массив из файла в LocationTB, а затем запустить таймер. Таймер должен посылать строку за раз в интервале GapTB.

Public Class Form1
Public TextLine As String
Public MyFileName As String
Public MyNewLine(1000) As String
Private Property z As Integer
Private Property objReader As Object


Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    If RadioButton2.Checked = True Then
        Dim Textline As String = ""
        Dim FILE_NAME As String = LocationTB.Text
        Dim objReader As New System.IO.StreamReader(FILE_NAME)
        MyFileName = LocationTB.Text
        FileOpen(1, MyFileName, OpenMode.Input, OpenAccess.Read, OpenShare.Shared)
        z = 0

        Do Until EOF(1)
            MyNewLine(z) = LineInput(1)
            z = z + 1 
        Loop

        FileClose(1)
    End If

    Timer1.Interval = GapTB.Text
    Timer1.Enabled = True

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If RadioButton1.Checked = True Then
        AppActivate(Hook.Text)
        SendKeys.Send(SimpleTB.Text)
        SendKeys.Send((Chr(13)))

    ElseIf RadioButton2.Checked = True Then
        For Each 
            TextLine = TextLine & objReader.ReadLine
            AppActivate(Hook.Text)
            SendKeys.Send(TextLine)
            SendKeys.Send((Chr(13)))
        Next

    Else

            MsgBox("File Does Not Exist")

    End If


End Sub

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Это то, что вы ищете? Он запишет содержимое файла (в данном случае «C: \ mark.txt») в окно вывода в Visual Studio.

Public Class Form1
    Private myTimer As Timer

    Private lines As String()
    Private currentLine As Integer

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        lines = IO.File.ReadAllLines("C:\mark.txt")
        currentLine = 0

        myTimer = New Timer()

        AddHandler myTimer.Tick, AddressOf myTimer_Tick

        myTimer.Interval = 1000
        myTimer.Enabled = True
    End Sub

    Private Sub myTimer_Tick(sender As Object, e As EventArgs)
        If currentLine < lines.Count Then
            Dim lineToSend As String = lines(currentLine)
            Debug.Print(lineToSend)
            currentLine += 1
        Else
            myTimer.Enabled = False
        End If
    End Sub
End Class

Протест Приведенный выше код не масштабируется. Если вы SURE , файл всегда будет маленьким, тогда он будет делать (при этом они никогда не всегда будут маленькими ).

Чтобы сделать это масштабируемым, вам нужно держать файл открытым и читать каждую строку по мере необходимости, а не загружать все содержимое файла сразу.

0 голосов
/ 25 июля 2011

Я знаю, как сделать это с приложением, которое я запустил сам: вот код, чтобы заставить калькулятор работать:

   Dim ProcID As Integer
    ' Start the Calculator application, and store the process id.
    ProcID = Shell("CALC.EXE", AppWinStyle.NormalFocus)
    ' Activate the Calculator application.
    AppActivate(ProcID)
    ' Send the keystrokes to the Calculator application.
    My.Computer.Keyboard.SendKeys("22", True)
    My.Computer.Keyboard.SendKeys("*", True)
    My.Computer.Keyboard.SendKeys("44", True)
    My.Computer.Keyboard.SendKeys("=", True)
    ' The result is 22 * 44 = 968.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...