Witam ponownie,
otóż mam dziwny problem. Na początek kod:
Public Class Form1
Const CrLf As String = (Chr(13)) & (Chr(10)) 'koniec lini tekstu
Const strStart As String = ";Start"
Const strStop As String = ";Stop"
Private Sub btnPoczatek_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPoczatek.Click
Try
txtKod.Paste(strStart) 'Wklejenie znacznika start
Catch ex As Exception
End Try
End Sub
Private Sub btnKoniec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKoniec.Click
Try
txtKod.Paste(strStop) 'Wklejenie znacznika stop
Catch ex As Exception
End Try
End Sub
Private Sub btnZmienX_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZmienX.Click
End Sub
Private Sub btnZmienY_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZmienY.Click
Dim dubWartoscY As Double
Dim dubWartoscYzmieniona As Double
Dim ciag As String
Dim strKod As String
Dim temp As Integer
Dim strWartosc As String
Dim strKonwert As String
Dim tekst As String
Dim wiersz() As String
Dim a, n As Integer
Dim c As String
tekst = txtKod.Text 'Zawartość pola text do zmiennej tekst
wiersz = tekst.Split(CrLf) 'dzielenie zawartosci zmiennej tekst na wiersze na podstawie znaków końca lini (Enter)
n = wiersz.Length 'obliczanie ilości wierszy
a = 0 'zmienna pomocnicza
Do Until a = n
c = wiersz(a)
MessageBox.Show(c)
If c = strStart Then 'TODO warunek porównujący zawartość wiersza do znacznika start
a = a + 1 'Przejscie do nastepnej lini (chyba)
Do Until c = strStop 'Warunek sprawdzający czy w wierszu jest znacznik stop
strKod = wiersz(a) 'Pobieranie zawartosci wiersza do zmiennej
temp = InStr(strKod, "R") - InStr(strKod, "Y") - 1 'obliczanie gdzie jest wartosc liczbowa dla Y
ciag = strKod.Substring(InStr(strKod, "Y"), temp) 'wycinanie wartości zawartych miedzy Y a R
ciag = ciag.Replace(Chr(32), "") 'usuwanie spacji
strWartosc = txtWartosc.Text 'Pobieranie zawartości pola wartosc
strWartosc = strWartosc.Replace(".", ",") 'zamiana kropek na przecinki
strWartosc = Val(Replace(strWartosc, ",", ".")) 'pobieranie wartosci liczbowych z pola wartosc
strKod = strKod.Replace(".", ",") 'zmiana kropek na przecinki
dubWartoscY = Val(Replace(ciag, ",", ".")) 'pobieranie wartosci liczbowych dla Y
Try
dubWartoscYzmieniona = dubWartoscY + strWartosc 'działanie
Catch ex As Exception
End Try
strKod = strKod.Replace(strKod.Substring(InStr(strKod, "Y"), temp), "") 'czyszczenie pola miedzy Y a R
strKonwert = dubWartoscYzmieniona.ToString() 'Koniecznosc zmienienia wartosci liczbowych na String
strKod = strKod.Insert(InStr(strKod, "Y"), strKonwert) 'Wklejanie wyniku za literą y
tekst = tekst.Replace(wiersz(a), strKod) 'Zamiana zawartosci wiersza na ten z zmieniona wartością
txtKod.Text = tekst 'Aktualizacja pola tekstowego
MessageBox.Show(tekst)
a = a + 1
Loop
ElseIf c = strStop Then 'TODO sprawdzanie czy w aktualnym wierszu nie ma znacznika Stop
Exit Do 'wymuszenie wyjścia z pętli
Else
a = a + 1 'Przejście do następnego wiersza
End If
Loop
End Sub
End Class
Chodzi mi dokładnie o ostatnią część.
W pętli mam warunek który sprawdza mi czy zawartość wiersza to znacznik start czyli ";Start". Problem w tym, że po prostu pomija mi ten warunek jak gdyby nigdy nic chociaż wiem, że zawartość wiersza jest dobra jak i że pętla działa (messagebox + debugowanie krok po kroku i wszystko jasne).
Moje pytanie brzmi, czy ja coś poknociłem w pisaniu warunku czy po prostu jest jakaś zasada i to nie zadziała tak jak ja myślę?
Przykładowy G cod który to ma modyfikować:
G1 X30.000 Y40.000 R.44.000
;Start
G1 X30.000 Y41.000 R.44.000
;Stop
G1 X30.000 Y42.000 R.44.000
Dodam, że bez warunku czyli po prostu zliczanie wierszy i modyfikacja każdego to program działa bez problemu (dodam jeszcze, żeby mi formatowało wyniki ale to na końcu).
Ktoś ma jakiś pomysł?
Z góry dzięki i pozdrawiam