Vb.net Visual Basic中文本文件的迭代

Vb.net Visual Basic中文本文件的迭代,vb.net,arrays,visual-studio-2010,Vb.net,Arrays,Visual Studio 2010,好的,我正在制作一个程序,它将从一个文本文件中读取,将每一行转换成一个数组。每打勾一行发送一行。这是2010年的Visual Basic。 我得到的最接近的结果是一次发送所有信息,我花了一整夜的时间来处理它,并且正在慢慢地销毁它。 理想情况下,我希望按钮1单击以从LocationTB处的文件填充阵列,然后启动计时器。计时器应在GapTB间隔的某个时间发送一条线路 Public Class Form1 Public TextLine As String Public MyFileName As S

好的,我正在制作一个程序,它将从一个文本文件中读取,将每一行转换成一个数组。每打勾一行发送一行。这是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

这就是你要找的东西吗? 它将把文件的内容(在本例中为“C:\mark.txt”)写入VisualStudio的输出窗口

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
公共类表单1
作为计时器的专用myTimer
私有行作为字符串()
作为整数的专用currentLine
私有子按钮1\u单击(发送者作为System.Object,e作为System.EventArgs)处理按钮1。单击
lines=IO.File.ReadAllLines(“C:\mark.txt”)
currentLine=0
myTimer=新计时器()
AddHandler myTimer.Tick,myTimer\u Tick的地址
myTimer.Interval=1000
myTimer.Enabled=True
端接头
私有子myTimer_Tick(发送方作为对象,e作为事件参数)
如果currentLine

警告 上面的代码是不可伸缩的。如果你确信文件总是小的,那么它就可以了(也就是说,它们从来都不是小的)


要使其具有可伸缩性,您需要打开文件,并根据需要读取每一行,而不是一次加载整个文件内容。

我知道如何对我自己启动的应用程序执行此操作:以下是使计算器工作的代码:

   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应该知道要激活的表单的确切标题。如果不知道,则迭代这些过程以定位您的进程。如果正确指定了标题,它应该可以工作

-1,那么在internet上,确实有大量信息可用于文本文件操作。MSDN、Google等将花费您5秒钟的时间来查找此方面的帮助。另外,您甚至没有问任何问题,只是给出了一些代码。对不起,我想问一下我做错了什么,以及是否有更好的方法来解决这个问题。我已经在很多地方对此进行了研究,但显然还不太了解。如果我完全离开了,那么我会从头开始,但如果我很接近,我会找人指出我的错误并提供任何有用的建议。如果你想发送垃圾邮件或处理应用程序或网站,那么人必须阅读或处理计算机生成的或欺诈性的输出,就好像它是真正由另一个人编写的一样,你学习计算机科学是错误的。你需要学习神学。我建议你先从地狱和诅咒开始,然后在现在的生活中进入神圣惩罚的概念。祝你的项目好运!不打算制造垃圾邮件。如果我想让它成为垃圾邮件发送者,这个程序已经可以运行了,但我想要的是一个定时脚本编写器。我想是相关的。我希望能够将命令中继到另一个程序,并有一组文件来编写脚本。例如,当我的另一个程序运行时,我必须为某些加载输入50多个命令,我希望这有点自动化。这正是我想要的。我修改了它,使之与我的代码相适应。它现在一次输出2行,所以我需要修复它,但是它正在迭代。作为另一种选择,您可能需要考虑使用My.Cudio.FielStudio.OpenTextFileReader(“C:\Mark .txt”)来获取流读取器,然后在MyTimeReTimk上调用CaldLead,而不是将内存加载到整个文件中。使用流读取器可以将其扩展到较大的文件大小。@Jim:我完全同意,但是上面的代码非常简单,可以让事情顺利进行。我要加一条解释说明。