Splitt setzt text in falsches textfeld

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Splitt setzt text in falsches textfeld

    Hi, ich programmiere grad eine Software für Arbeitsrapport für eine Firma, hab ein Problem, in manchen Feldern werden die Texte durch Splitt falsch gesetzt, komischerweise bei anderen nicht! Guckt:

    ich öffne sie aus einer datei per readalllines und splitte sie dann, code:

    VB.NET-Quellcode

    1. Sub OpenFile(FileName As String)
    2. Dim alllines As String() = IO.File.ReadAllLines(FileName)
    3. Dim intline As Integer = 0
    4. For Each line As String In alllines
    5. intline += 1
    6. If intline = 1 Then
    7. Label1.Text = line
    8. Else
    9. If intline = 2 Then
    10. Datum01.Text = line.Split("||")(0)
    11. Tag01.Text = line.Split("||")(1)
    12. Von01.Text = line.Split("||")(2)
    13. Bis01.Text = line.Split("||")(3)
    14. Pause01.Text = line.Split("||")(4)
    15. Total01.Text = line.Split("||")(5)
    16. TotalBox01.Text = line.Split("||")(6)
    17. ElseIf intline = 3 Then
    18. Datum02.Text = line.Split("||")(0)
    19. Tag02.Text = line.Split("||")(1)
    20. Von02.Text = line.Split("||")(2)
    21. Bis02.Text = line.Split("||")(3)
    22. Pause02.Text = line.Split("||")(4)
    23. Total02.Text = line.Split("||")(5)
    24. TotalBox02.Text = line.Split("||")(6)
    25. ElseIf intline = 4 Then
    26. Datum03.Text = line.Split("||")(0)
    27. Tag03.Text = line.Split("||")(1)
    28. Von03.Text = line.Split("||")(2)
    29. Bis03.Text = line.Split("||")(3)
    30. Pause03.Text = line.Split("||")(4)
    31. Total03.Text = line.Split("||")(5)
    32. TotalBox03.Text = line.Split("||")(6)
    33. ElseIf intline = 5 Then
    34. Datum04.Text = line.Split("||")(0)
    35. Tag04.Text = line.Split("||")(1)
    36. Von04.Text = line.Split("||")(2)
    37. Bis04.Text = line.Split("||")(3)
    38. Pause04.Text = line.Split("||")(4)
    39. Total04.Text = line.Split("||")(5)
    40. TotalBox04.Text = line.Split("||")(6)
    41. ElseIf intline = 6 Then
    42. Datum05.Text = line.Split("||")(0)
    43. Tag05.Text = line.Split("||")(1)
    44. Von05.Text = line.Split("||")(2)
    45. Bis05.Text = line.Split("||")(3)
    46. Pause05.Text = line.Split("||")(4)
    47. Total05.Text = line.Split("||")(5)
    48. TotalBox05.Text = line.Split("||")(6)
    49. ElseIf intline = 7 Then
    50. Datum06.Text = line.Split("||")(0)
    51. Tag06.Text = line.Split("||")(1)
    52. Von06.Text = line.Split("||")(2)
    53. Bis06.Text = line.Split("||")(3)
    54. Pause06.Text = line.Split("||")(4)
    55. Total06.Text = line.Split("||")(5)
    56. TotalBox06.Text = line.Split("||")(6)
    57. ElseIf intline = 8 Then
    58. Datum07.Text = line.Split("||")(0)
    59. Tag07.Text = line.Split("||")(1)
    60. Von07.Text = line.Split("||")(2)
    61. Bis07.Text = line.Split("||")(3)
    62. Pause07.Text = line.Split("||")(4)
    63. Total07.Text = line.Split("||")(5)
    64. TotalBox07.Text = line.Split("||")(6)
    65. ElseIf intline = 9 Then
    66. Datum08.Text = line.Split("||")(0)
    67. Tag08.Text = line.Split("||")(1)
    68. Von08.Text = line.Split("||")(2)
    69. Bis08.Text = line.Split("||")(3)
    70. Pause08.Text = line.Split("||")(4)
    71. Total08.Text = line.Split("||")(5)
    72. TotalBox08.Text = line.Split("||")(6)
    73. ElseIf intline = 10 Then
    74. Datum09.Text = line.Split("||")(0)
    75. Tag09.Text = line.Split("||")(1)
    76. Von09.Text = line.Split("||")(2)
    77. Bis09.Text = line.Split("||")(3)
    78. Pause09.Text = line.Split("||")(4)
    79. Total09.Text = line.Split("||")(5)
    80. TotalBox09.Text = line.Split("||")(6)
    81. ElseIf intline = 11 Then
    82. Datum10.Text = line.Split("||")(0)
    83. Tag10.Text = line.Split("||")(1)
    84. Von10.Text = line.Split("||")(2)
    85. Bis10.Text = line.Split("||")(3)
    86. Pause10.Text = line.Split("||")(4)
    87. Total10.Text = line.Split("||")(5)
    88. TotalBox10.Text = line.Split("||")(6)
    89. ElseIf intline = 12 Then
    90. Datum11.Text = line.Split("||")(0)
    91. Tag11.Text = line.Split("||")(1)
    92. Von11.Text = line.Split("||")(2)
    93. Bis11.Text = line.Split("||")(3)
    94. Pause11.Text = line.Split("||")(4)
    95. Total11.Text = line.Split("||")(5)
    96. TotalBox11.Text = line.Split("||")(6)
    97. ElseIf intline = 13 Then
    98. Datum12.Text = line.Split("||")(0)
    99. Tag12.Text = line.Split("||")(1)
    100. Von12.Text = line.Split("||")(2)
    101. Bis12.Text = line.Split("||")(3)
    102. Pause12.Text = line.Split("||")(4)
    103. Total12.Text = line.Split("||")(5)
    104. TotalBox12.Text = line.Split("||")(6)
    105. ElseIf intline = 14 Then
    106. Datum13.Text = line.Split("||")(0)
    107. Tag13.Text = line.Split("||")(1)
    108. Von13.Text = line.Split("||")(2)
    109. Bis13.Text = line.Split("||")(3)
    110. Pause13.Text = line.Split("||")(4)
    111. Total13.Text = line.Split("||")(5)
    112. TotalBox13.Text = line.Split("||")(6)
    113. ElseIf intline = 15 Then
    114. Datum14.Text = line.Split("||")(0)
    115. Tag14.Text = line.Split("||")(1)
    116. Von14.Text = line.Split("||")(2)
    117. Bis14.Text = line.Split("||")(3)
    118. Pause14.Text = line.Split("||")(4)
    119. Total14.Text = line.Split("||")(5)
    120. TotalBox14.Text = line.Split("||")(6)
    121. ElseIf intline = 16 Then
    122. Datum15.Text = line.Split("||")(0)
    123. Tag15.Text = line.Split("||")(1)
    124. Von15.Text = line.Split("||")(2)
    125. Bis15.Text = line.Split("||")(3)
    126. Pause15.Text = line.Split("||")(4)
    127. Total15.Text = line.Split("||")(5)
    128. TotalBox15.Text = line.Split("||")(6)
    129. ElseIf intline = 17 Then
    130. Datum16.Text = line.Split("||")(0)
    131. Tag16.Text = line.Split("||")(1)
    132. Von16.Text = line.Split("||")(2)
    133. Bis16.Text = line.Split("||")(3)
    134. Pause16.Text = line.Split("||")(4)
    135. Total16.Text = line.Split("||")(5)
    136. TotalBox16.Text = line.Split("||")(6)
    137. ElseIf intline = 18 Then
    138. Datum17.Text = line.Split("||")(0)
    139. Tag17.Text = line.Split("||")(1)
    140. Von17.Text = line.Split("||")(2)
    141. Bis17.Text = line.Split("||")(3)
    142. Pause17.Text = line.Split("||")(4)
    143. Total17.Text = line.Split("||")(5)
    144. TotalBox17.Text = line.Split("||")(6)
    145. ElseIf intline = 19 Then
    146. Datum18.Text = line.Split("||")(0)
    147. Tag18.Text = line.Split("||")(1)
    148. Von18.Text = line.Split("||")(2)
    149. Bis18.Text = line.Split("||")(3)
    150. Pause18.Text = line.Split("||")(4)
    151. Total18.Text = line.Split("||")(5)
    152. TotalBox18.Text = line.Split("||")(6)
    153. ElseIf intline = 20 Then
    154. Datum19.Text = line.Split("||")(0)
    155. Tag19.Text = line.Split("||")(1)
    156. Von19.Text = line.Split("||")(2)
    157. Bis19.Text = line.Split("||")(3)
    158. Pause19.Text = line.Split("||")(4)
    159. Total19.Text = line.Split("||")(5)
    160. TotalBox19.Text = line.Split("||")(6)
    161. ElseIf intline = 21 Then
    162. Datum20.Text = line.Split("||")(0)
    163. Tag20.Text = line.Split("||")(1)
    164. Von20.Text = line.Split("||")(2)
    165. Bis20.Text = line.Split("||")(3)
    166. Pause20.Text = line.Split("||")(4)
    167. Total20.Text = line.Split("||")(5)
    168. TotalBox20.Text = line.Split("||")(6)
    169. ElseIf intline = 22 Then
    170. Datum21.Text = line.Split("||")(0)
    171. Tag21.Text = line.Split("||")(1)
    172. Von21.Text = line.Split("||")(2)
    173. Bis21.Text = line.Split("||")(3)
    174. Pause21.Text = line.Split("||")(4)
    175. Total21.Text = line.Split("||")(5)
    176. TotalBox21.Text = line.Split("||")(6)
    177. ElseIf intline = 23 Then
    178. Datum22.Text = line.Split("||")(0)
    179. Tag22.Text = line.Split("||")(1)
    180. Von22.Text = line.Split("||")(2)
    181. Bis22.Text = line.Split("||")(3)
    182. Pause22.Text = line.Split("||")(4)
    183. Total22.Text = line.Split("||")(5)
    184. TotalBox22.Text = line.Split("||")(6)
    185. ElseIf intline = 24 Then
    186. Datum23.Text = line.Split("||")(0)
    187. Tag23.Text = line.Split("||")(1)
    188. Von23.Text = line.Split("||")(2)
    189. Bis23.Text = line.Split("||")(3)
    190. Pause23.Text = line.Split("||")(4)
    191. Total23.Text = line.Split("||")(5)
    192. TotalBox23.Text = line.Split("||")(6)
    193. ElseIf intline = 25 Then
    194. Datum24.Text = line.Split("||")(0)
    195. Tag24.Text = line.Split("||")(1)
    196. Von24.Text = line.Split("||")(2)
    197. Bis24.Text = line.Split("||")(3)
    198. Pause24.Text = line.Split("||")(4)
    199. Total24.Text = line.Split("||")(5)
    200. TotalBox24.Text = line.Split("||")(6)
    201. ElseIf intline = 26 Then
    202. Datum25.Text = line.Split("||")(0)
    203. Tag25.Text = line.Split("||")(1)
    204. Von25.Text = line.Split("||")(2)
    205. Bis25.Text = line.Split("||")(3)
    206. Pause25.Text = line.Split("||")(4)
    207. Total25.Text = line.Split("||")(5)
    208. TotalBox25.Text = line.Split("||")(6)
    209. ElseIf intline = 27 Then
    210. Datum26.Text = line.Split("||")(0)
    211. Tag26.Text = line.Split("||")(1)
    212. Von26.Text = line.Split("||")(2)
    213. Bis26.Text = line.Split("||")(3)
    214. Pause26.Text = line.Split("||")(4)
    215. Total26.Text = line.Split("||")(5)
    216. TotalBox26.Text = line.Split("||")(6)
    217. ElseIf intline = 28 Then
    218. Datum27.Text = line.Split("||")(0)
    219. Tag27.Text = line.Split("||")(1)
    220. Von27.Text = line.Split("||")(2)
    221. Bis27.Text = line.Split("||")(3)
    222. Pause27.Text = line.Split("||")(4)
    223. Total27.Text = line.Split("||")(5)
    224. TotalBox27.Text = line.Split("||")(6)
    225. ElseIf intline = 29 Then
    226. Datum28.Text = line.Split("||")(0)
    227. Tag28.Text = line.Split("||")(1)
    228. Von28.Text = line.Split("||")(2)
    229. Bis28.Text = line.Split("||")(3)
    230. Pause28.Text = line.Split("||")(4)
    231. Total28.Text = line.Split("||")(5)
    232. TotalBox28.Text = line.Split("||")(6)
    233. ElseIf intline = 30 Then
    234. Datum29.Text = line.Split("||")(0)
    235. Tag29.Text = line.Split("||")(1)
    236. Von29.Text = line.Split("||")(2)
    237. Bis29.Text = line.Split("||")(3)
    238. Pause29.Text = line.Split("||")(4)
    239. Total29.Text = line.Split("||")(5)
    240. TotalBox29.Text = line.Split("||")(6)
    241. ElseIf intline = 31 Then
    242. Datum30.Text = line.Split("||")(0)
    243. Tag30.Text = line.Split("||")(1)
    244. Von30.Text = line.Split("||")(2)
    245. Bis30.Text = line.Split("||")(3)
    246. Pause30.Text = line.Split("||")(4)
    247. Total30.Text = line.Split("||")(5)
    248. TotalBox30.Text = line.Split("||")(6)
    249. ElseIf intline = 32 Then
    250. Datum31.Text = line.Split("||")(0)
    251. Tag31.Text = line.Split("||")(1)
    252. Von31.Text = line.Split("||")(2)
    253. Bis31.Text = line.Split("||")(3)
    254. Pause31.Text = line.Split("||")(4)
    255. Total31.Text = line.Split("||")(5)
    256. TotalBox31.Text = line.Split("||")(6)
    257. End If
    258. End If
    259. Next
    260. End Sub


    So sieht der inhalt einer Datei aus:

    Quellcode

    1. 01.01.2014||Mittwoch||00:00||00:00||0.00||00.00||test
    2. 02.01.2014||Donnerstag||00:00||00:00||0.00||00.00||test
    3. 03.01.2014||Freitag||00:00||00:00||0.00||00.00||test
    4. 04.01.2014||Samstag||00:00||00:00||0.00||00.00||test
    5. 05.01.2014||Sonntag||00:00||00:00||0.00||00.00||test
    6. 06.01.2014||Montag||00:00||00:00||0.00||00.00||test
    7. 07.01.2014||Dienstag||00:00||00:00||0.00||00.00||test
    8. 08.01.2014||Mittwoch||00:00||00:00||0.00||00.00||test
    9. 09.01.2014||Donnerstag||00:00||00:00||0.00||00.00||test
    10. 10.01.2014||Freitag||00:00||00:00||0.00||00.00||test
    11. 11.01.2014||Samstag||00:00||00:00||0.00||00.00||test
    12. 12.01.2014||Sonntag||00:00||00:00||0.00||00.00||test
    13. 13.01.2014||Montag||00:00||00:00||0.00||00.00||test
    14. 14.01.2014||Dienstag||00:00||00:00||0.00||00.00||test
    15. 15.01.2014||Mittwoch||00:00||00:00||0.00||00.00||test
    16. 16.01.2014||Donnerstag||00:00||00:00||0.00||00.00||test
    17. 17.01.2014||Freitag||00:00||00:00||0.00||00.00||test
    18. 18.01.2014||Samstag||00:00||00:00||0.00||00.00||test
    19. 19.01.2014||Sonntag||00:00||00:00||0.00||00.00||test
    20. 20.01.2014||Montag||00:00||00:00||0.00||00.00||test
    21. 21.01.2014||Dienstag||00:00||00:00||0.00||00.00||test
    22. 22.01.2014||Mittwoch||00:00||00:00||0.00||00.00||test
    23. 23.01.2014||Donnerstag||00:00||00:00||0.00||00.00||test
    24. 24.01.2014||Freitag||00:00||00:00||0.00||00.00||test
    25. 25.01.2014||Samstag||00:00||00:00||0.00||00.00||test
    26. 26.01.2014||Sonntag||00:00||00:00||0.00||00.00||test
    27. 27.01.2014||Montag||00:00||00:00||0.00||00.00||test
    28. 28.01.2014||Dienstag||00:00||00:00||0.00||00.00||test
    29. 29.01.2014||Mittwoch||00:00||00:00||0.00||00.00||test

    Sage es ja nur ungern, aber den Code kannste theoretisch Remondis mitgeben...
    Du hast da einen klaren Designfehler, denn so viele TextBoxen etc. ist nicht regelkonform und Du solltest überlegen, eine bessere Art von Datenverwaltung zu verwenden.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Split("||")

    Und Option Strict On!
    Es gibt nur eine Überladung von Split, die ein Argument akzeptiert. Und die erwartet einen Char.
    "||" ist aber ein String, was bedeutet, dass implizit zu Char konvertiert wird, wobei nur das erste Zeichen des Strings verwendet wird, was dazu führt, dass nur bei einem "|" gesplittet wird, nicht bei zwei aufeinanderfolgenden.

    Bei so vielen TextBoxen würde es mich nicht wundern, wenn Du irgendwo einen Tippfehler gemacht hast.
    Oder im Designer zwei Namen vertauscht hast.
    Da gibt es wesentlich bessere Ansätze. Man könnte so eine Zeile von Controls schon mal in einem UserControl und die Daten dazu in einer eigenen Klasse kapseln.
    Ich persönlich würde das mit WPF lösen. Da wären solche Basteleien kein Problem.

    Übrigens: Meinst Du vielleicht Report, anstelle von Rapport?
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils

    ManuelSoftware schrieb:

    Datum01.Text = line.Split("||")(0)
    Splitte den Text genau ein Mal und arbeite mit dem resultierenden Array:

    VB.NET-Quellcode

    1. Dim txt = "01.01.2014||Mittwoch||00:00||00:00||0.00||00.00||test"
    2. Dim parts() = txt.Split(New Char() {"|"c}, System.StringSplitOptions.RemoveEmptyEntries)
    Bilder
    • Split.jpg

      22,69 kB, 664×199, 31 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!