Я работаю над проектом, в котором я читал файлы кода VB.net в файле List(Of File)
(Файл является настраиваемым классом), а затем я просматриваю объект Code
(код List(Of String)
) каждого файла.Loop through array and insert items
Что я хочу делать в этом цикле, это добавить случайный код, но у меня есть довольно много проблем, чтобы выяснить, как правильно сделать эту работу.
Проблема в том, что код вставляется в местах, где я не хочу, чтобы они были вставлены.
Я попробовал несколько различных способов сделать это:
Просто пробегаем по свойству кода и добавления строки, если условия являются правильными.
Добавляем другое свойство:
Public Indices As List(Of Integer)
, затем перебираем его и вставляем строки в свойство кода, используя новые значения свойств.Добавление другого свойства:
Public InsertionLoopCode As List(Of String)
, присвоив ему свойство кода, а затем цикл с помощью нового свойства и добавление строки в свойстве Код
Что код выглядит как:
For Each Folder As Folder In Folders
For Each File As File In Folder.Files
For i = 0 To File.InsertionLoopCode.Count - 1
If File.InsertionLoopCode(i).Contains(" Sub ") AndAlso Not File.InsertionLoopCode(i).Contains("Delegate") Then
StartSub = True
ElseIf File.InsertionLoopCode(i).Contains("End Sub") Then
StartSub = False
ElseIf StartSub = True AndAlso Not File.InsertionLoopCode(i).Contains(" Sub ") Then
If i Mod Randomization.Random.Next(1, 5) = 0 Then
Dim RandomNumber As Integer = Random.Next(0, 2)
If RandomNumber = 0 Then
'File.Code.Insert(i, Insertion.InsertVariable(False))
ElseIf RandomNumber = 1 Then
InsertForLoop(File, i)
ElseIf RandomNumber = 2 Then
End If
End If
End If
Next
Next
Next
Я не думаю, что это условный оператор или, по крайней мере, не только это, так как он отлично работает, когда я не вставляю строки, а делаю только сообщения msg или записываю их на консоль.
EDIT: Чтобы сделать его более понятным. До:
Module Main
Dim WithEvents PlayerReader As New BackgroundWorker
Sub Main()
Console.ReadLine()
End Sub
Dim Player As New Player
Dim Enemy(64) As Enemy
Private Sub PlayerReader_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles PlayerReader.DoWork
While True
Player.GetInformation()
Player.CheckState()
For i = 0 To 64 - 1
Enemy(i).GetInformation(Player, i)
If Player.Health > 0 Then
If Player.Team <> Enemy(i).Team AndAlso Enemy(i).Health > 0 Then
Console.WriteLine(Enemy.Name)
End If
End If
Next
End While
End Sub
End Module
После:
Module Main
Dim WithEvents PlayerReader As New BackgroundWorker
*Dim awdasndwand As Integer = 29* 'Supposed to be Italic
Sub Main()
Console.ReadLine()
**Dim yumngsef As String** 'Supposed to be Bold
End Sub
Dim Player As New Player
Dim Enemy(64) As Enemy
Private Sub PlayerReader_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles PlayerReader.DoWork
While True
Player.GetInformation()
Player.CheckState()
For i = 0 To 64 - 1
Enemy(i).GetInformation(Player, i)
If Player.Health > 0 Then
If Player.Team <> Enemy(i).Team AndAlso Enemy(i).Health > 0 Then
Console.WriteLine(Enemy.Name)
End If
End If
Next
End While
End Sub
End Module
Смелый должен быть там, но наклонным нет. Другое дело, что если у меня есть только несколько файлов или я думаю, некоторые конкретные файлы, это работает просто отлично. Как только я прочитаю все решение, оно будет вставлять переменные в неправильные места.
Иисус Христос, почему этот пост получает минусовые баллы? Как насчет того, чтобы быть рывком и нисходящим голосованием, как насчет того, чтобы комментировать проблему?
Трудно понять, что именно вы хотите здесь. Можете ли вы дать (простой, короткий) пример того, что код, который вы читаете и изменяете, выглядит до и после того, как вы его изменили? И, желательно, пример того, что пойдет не так? – Kjartan
Я внесла некоторые изменения в мой оригинальный пост, пожалуйста, взгляните еще раз. – Helios