[VB.net 2015][JavaScript] Variablen berechnen

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Agassi.

    [VB.net 2015][JavaScript] Variablen berechnen

    Hey Community!
    Ich programmiere momentan an einem Programm, welches den freien Fall in Luft berechnen soll. Ich orientiere mich hierbei an einem JavaScript, welches einwandfrei funktioniert.
    Code:
    Spoiler anzeigen

    HTML-Quellcode

    1. <!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
    2. <html>
    3. <head>
    4. <meta http-equiv="Content-Type"
    5. content="text/html; charset=iso-8859-1">
    6. <meta name="GENERATOR"
    7. content="Mozilla/4.74 [de] (X11; U; Linux 2.2.16-SMP i686) [Netscape]">
    8. <title>Fall mit Luftwiderstand</title>
    9. </head>
    10. <body>
    11. <form name="Fall">
    12. <h3>Tabelle zum Fall mit Luftwiderstand</h3>
    13. <h3><span style="font-weight: normal;">Hier ist also ein kleines
    14. Programm, das die Berechnung f&uuml;r
    15. den freien Fall mit Luftwiderstand
    16. ausf&uuml;hrt.</span><br>
    17. </h3>
    18. <br>
    19. Wir gehen davon aus, dass ein K&ouml;rper mit der Masse m aus einer
    20. vorgegebene H&ouml;he fallen gelassen wird.<br>
    21. Dabei wirkt der Luftwiderstand, zu seiner Berechnung sind der c<sub>w</sub>-Wert
    22. (von der Form&nbsp; abh&auml;ngig, <a href="cw-Werte.html">hier steht
    23. eine Tabelle zur Orientierung)</a> und die Fl&auml;che&nbsp; notwendig.
    24. <br>
    25. <br>
    26. <br>
    27. In der Eingabezeile sind f&uuml;r H&ouml;he, c<sub>w</sub>-Wert,&nbsp;
    28. Masse,
    29. Fl&auml;che&nbsp; usw. schon Werte vorgegeben: Eine gro&szlig;e Kugel
    30. (Fl&auml;che 1 m<sup>2</sup>) mit 20 kg Masse f&auml;llt aus 100 m
    31. H&ouml;he zur Erde. <br>
    32. Die Werte kannst Du durch
    33. einfaches &Uuml;berschreiben &auml;ndern. <br>
    34. <br>
    35. Mit dem Button "Hau rein" l&auml;sst Du den Computer dann die aktuelle
    36. Kraft, Beschleunigung, Geschwindigkeit und H&ouml;he des
    37. K&ouml;rpers in Abh&auml;ngigkeit von der Zeit berechnen.
    38. <p>Es erscheint dann auf&nbsp; einer neuen Seite eine Tabelle mit den
    39. Werten f&uuml;r F, a, v und s in Abh&auml;ngigkeit von der Zeit t.<br>
    40. Daraus kannst Du<br>
    41. - ablesen, wie lange der K&ouml;rper bis zum Boden gebraucht hat.<br>
    42. - ablesen, ob und ab wann die Geschwindigkeit konstant geblieben ist.<br>
    43. - ablesen, wie Kraft und Beschleunigung sich verhalten, wenn die
    44. Geschwindigkeit konstant bleibt.<br>
    45. - Beschleunigung, Geschwindigkeit und H&ouml;he in Abh&auml;ngigkeit
    46. von t
    47. darstellen.<br>
    48. </p>
    49. <p>Bei kleinen Zeitschritten erh&auml;ltst Du wesentlich mehr Werte,
    50. daf&uuml;r wird das Ergebnis aber genauer. <br>
    51. </p>
    52. <p>Wenn Du die Datei "fall.html" herunterl&auml;dst und in
    53. einem
    54. Texteditor &ouml;ffnest, kannst Du mit dem JavaScript-Code
    55. experimentieren.Viel
    56. Spa&szlig;! <br>
    57. &nbsp;
    58. <table border="1" cellpadding="3">
    59. <tbody>
    60. <tr>
    61. <td colspan="10">Starth&ouml;he in m</td>
    62. <td colspan="10"><input type="text" value="100" name="h0"
    63. size="5"></td>
    64. <td colspan="10">cw-Wert</td>
    65. <td colspan="10"><input type="text" value="0.50" name="cw"
    66. size="5"></td>
    67. <td colspan="10">Masse in kg</td>
    68. <td colspan="10"><input type="text" value="20.00" name="m"
    69. size="5"></td>
    70. <td colspan="10">Fl&auml;che in m^2</td>
    71. <td colspan="10"><input type="text" value="1.00" name="A"
    72. size="5"></td>
    73. <td colspan="10">Zeitschritt in s</td>
    74. <td colspan="10"><input type="text" value="0.1" name="dt"
    75. size="5"></td>
    76. <td colspan="10"><input type="button" value="Hau rein"
    77. onclick="rechnefall()"></td>
    78. </tr>
    79. </tbody>
    80. </table>
    81. <script language="JavaScript">
    82. function rechnefall(){
    83. var f=document.Fall;
    84. var h0=parseFloat(f.h0.value);
    85. var cw=parseFloat(f.cw.value);
    86. var m=parseFloat(f.m.value);
    87. var A=parseFloat(f.A.value);
    88. var dt=parseFloat(f.dt.value);
    89. var v = 0;
    90. var h = h0;
    91. var t = 0;
    92. document.write("<CENTER> <TABLE BORDER>");
    93. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    94. document.write(" t[s]" );
    95. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    96. document.write("F[N]");
    97. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    98. document.write("a[m/s^2]");
    99. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    100. document.write("v[m/s]");
    101. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    102. document.write("h[m]");
    103. document.write("<br>");
    104. while (h>0){
    105. F=-m*9.81+1/2*1.2*cw*A*v*v;
    106. a=F/m;
    107. dv=a*dt;
    108. v=v+dv;
    109. dh=v*dt;
    110. h=h+dh;
    111. t=t+dt;
    112. tr=Math.round(1000*t)/1000;
    113. Fr=Math.round(1000*F)/1000;
    114. ar=Math.round(1000*a)/1000;
    115. vr=Math.round(1000*v)/1000;
    116. xr=Math.round(1000*h)/1000;
    117. document.write("<TR>");
    118. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    119. document.write(tr );
    120. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    121. document.write(Fr);
    122. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    123. document.write(ar);
    124. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    125. document.write(vr);
    126. document.write("<TD COLSPAN= 50 ALIGN=CENTER>");
    127. document.write(xr);
    128. document.write("<br>");
    129. }
    130. document.write("</TABLE></CENTER> ");
    131. }
    132. </script>
    133. </p>
    134. </form>
    135. </body>
    136. </html>



    Mein vb.net Code sieht so aus:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.IO
    2. Class MainWindow
    3. Private Sub Rechnen_click(sender As Object, e As RoutedEventArgs) Handles Rechnen.Click
    4. 'Legt die einzelnen Variablen als Dezimalzahlen fest
    5. Dim F, Fg, Fl, v, h, t, dv, dh, dt, cw, m, ar, Fr, tr, vr, xr, g, p, halbe, a, af As Decimal
    6. 'Zur Vereinfachung des folgendenen Codes, werden hier die Werte in Variablen geschrieben
    7. g = Val("9.81")
    8. p = Val("1,2")
    9. halbe = Val("0,5")
    10. F = Val("0")
    11. 'Konvertierung der Decimal-Werte zu Double
    12. af = Decimal.ToDouble(AFläche.Text)
    13. cw = Decimal.ToDouble(cwt.Text)
    14. dt = Decimal.ToDouble(deltaT.Text)
    15. m = Decimal.ToDouble(mt.Text)
    16. h = Decimal.ToDouble(ht.Text)
    17. If af > 0 And cw > 0 And dt > 0 And m > 0 And h > 0 Then
    18. 'Ordner für StreamWriter erstellen
    19. Dim DirectoryPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Ergebnisse"
    20. 'Legt fest was objStreamWriter{0,1,2,3,4} sind
    21. Dim objStreamWriter0 As StreamWriter
    22. If (Directory.Exists(DirectoryPath) = True) Then
    23. Else
    24. Directory.CreateDirectory(DirectoryPath)
    25. End If
    26. 'Legt fest wohnin die Tabelle geschrieben werden soll
    27. objStreamWriter0 = New StreamWriter(DirectoryPath & "\Ergebnisse.html")
    28. 'Schreibt die Formation für Das HTML-Dokument
    29. objStreamWriter0.WriteLine("<CENTER> <TABLE BORDER>")
    30. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    31. objStreamWriter0.WriteLine(" t[s]")
    32. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    33. objStreamWriter0.WriteLine("F[N]")
    34. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    35. objStreamWriter0.WriteLine("a[m/s^2]")
    36. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    37. objStreamWriter0.WriteLine("v[m/s]")
    38. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    39. objStreamWriter0.WriteLine("h[m]")
    40. objStreamWriter0.WriteLine("<br>")
    41. 'Schleife um die Werte auszurechnen und ihn ihr jeweiliges Dokument zu schreiben
    42. Do While h > 0
    43. 'Berechnungen der Einzelnen Werte
    44. Fg = -m * g
    45. Fl = halbe * p * cw * af * v * v
    46. F = Val(Fg + Fl)
    47. a = Val(F / m)
    48. dv = a * dt
    49. v = v + dv
    50. dh = v * dt
    51. h = h + dh
    52. t = t + dt
    53. 'Berechnung der gerundeten Werte für die Tabelle
    54. tr = Math.Round(1000 * t) / 1000
    55. Fr = Math.Round(1000 * F) / 1000
    56. ar = Math.Round(1000 * a) / 1000
    57. vr = Math.Round(1000 * v) / 1000
    58. xr = Math.Round(1000 * h) / 1000
    59. 'Schreibt die Ergebnisse in die Tabelle
    60. objStreamWriter0.WriteLine("<TR>")
    61. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    62. objStreamWriter0.WriteLine(tr)
    63. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    64. objStreamWriter0.WriteLine(Fr)
    65. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    66. objStreamWriter0.WriteLine(ar)
    67. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    68. objStreamWriter0.WriteLine(vr)
    69. objStreamWriter0.WriteLine("<TD COLSPAN= 50 ALIGN=CENTER>")
    70. objStreamWriter0.WriteLine(xr)
    71. Loop
    72. 'Schließt das Dokument mit der Tabelle und zeigt an, dass die Berechnungen fertig sind.
    73. objStreamWriter0.Close()
    74. Info.Text = "Berechnungen sind fertig."
    75. Process.Start(DirectoryPath & "\Ergebnisse.html")
    76. Else
    77. 'Wird angezeigt, wenn einer der Werte gleich Null ist.
    78. If (af <= 0) Then
    79. AFläche.Text = "Überpüfen sie bitte die Eingabe"
    80. End If
    81. If (cw <= 0) Then
    82. cwt.Text = "Überpüfen sie bitte die Eingabe"
    83. End If
    84. If (dt <= 0) Then
    85. deltaT.Text = "Überpüfen sie bitte die Eingabe"
    86. End If
    87. If (h <= 0) Then
    88. ht.Text = "Überpüfen sie bitte die Eingabe"
    89. End If
    90. If (m <= 0) Then
    91. mt.Text = "Überpüfen sie bitte die Eingabe"
    92. End If
    93. End If
    94. End Sub
    95. End Class




    Wenn ihr die beiden Programme, bzw. das Script ausführt, werdet ihr merken, dass bei dem vb.net Code komplett unrealistische Werte rauskommen.

    Habt ihr eine Idee was ich da falsch gemacht habe? Freue mich auf eure Antworten :)


    Edit: 'Tschuldigung Quellecode von VB.NET war falsch bezüglich der Übertragung der Werte für die Variablen. (Jetzt korrigiert)
    Scheint ja doch eher ein VB-Problem zu sein => Topic verschoben

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Agassi“ ()

    Unrealistische Werte sind, wie, dass ein Objekt, welches mit den HTML-Code gegebenen Werten, nach 1,1 sec auf dem Boden aufschlägt. Also der HTML-Code ist einwand frei, jedoch verursacht mir der VB.net Quellcode Kopfschmerzen...

    Am besten Vergleicht man einfach mal die Ergebnisse vom JavaScript mit denen der vb-Anwendung.
    Was passiert denn, wenn du die aus den Textboxen übergebenen Werte vorher strikt in Doubles umwandelst?
    Dazu auch noch die interpunktion in den strings überprüfst -> 1.33 <> 1,23 - wenn mich nicht alles täuscht. ;)

    Keine PN's bezüglich VB an mich! Dafür gibt es das Forum!

    :Kreis hier. Kreis da.:

    Werde es mal ausprobieren. Bin bisher nicht darauf gekommen... Das müsste dann doch auch mein Problem, dass F immer größer wird, anstatt kleiner korrigieren.

    Edit: Ich hab es ausprobiert und habe festgestellt, dass es dann "besser" funktioniert, aber die Werte dann zu ungenau sind...
    Also mein genauer Standpunkt gerade: Fund a bleiben konstant (F=-180 und a=-9). Das wird doch bestimmt etwas mit den Doubles zutun haben, oder?
    a müsste nach dem ersten berechnen also wenn t = 0.0 ist, -9.81 sein und danach gegen Null "streben".
    Ideen, wie ich das behebe?

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Agassi“ ()

    Ich hab hier auch noch mal die Ergebnisse für euch(Werte wurden von dem JavaScript übernommen und die Ergebnisse zur Vereinfachung in ein HTML-Dokument geschreiben):
    Spoiler anzeigen

    HTML-Quellcode

    1. <CENTER> <TABLE BORDER>
    2. <TD COLSPAN= 50 ALIGN=CENTER>
    3. t[s]
    4. <TD COLSPAN= 50 ALIGN=CENTER>
    5. F[N]
    6. <TD COLSPAN= 50 ALIGN=CENTER>
    7. a[m/s^2]
    8. <TD COLSPAN= 50 ALIGN=CENTER>
    9. v[m/s]
    10. <TD COLSPAN= 50 ALIGN=CENTER>
    11. h[m]
    12. <br>
    13. <TR>
    14. <TD COLSPAN= 50 ALIGN=CENTER>
    15. 0,1
    16. <TD COLSPAN= 50 ALIGN=CENTER>
    17. -180
    18. <TD COLSPAN= 50 ALIGN=CENTER>
    19. -9
    20. <TD COLSPAN= 50 ALIGN=CENTER>
    21. -0,9
    22. <TD COLSPAN= 50 ALIGN=CENTER>
    23. 99,91
    24. <TR>
    25. <TD COLSPAN= 50 ALIGN=CENTER>
    26. 0,2
    27. <TD COLSPAN= 50 ALIGN=CENTER>
    28. -180
    29. <TD COLSPAN= 50 ALIGN=CENTER>
    30. -9
    31. <TD COLSPAN= 50 ALIGN=CENTER>
    32. -1,8
    33. <TD COLSPAN= 50 ALIGN=CENTER>
    34. 99,73
    35. <TR>
    36. <TD COLSPAN= 50 ALIGN=CENTER>
    37. 0,3
    38. <TD COLSPAN= 50 ALIGN=CENTER>
    39. -180
    40. <TD COLSPAN= 50 ALIGN=CENTER>
    41. -9
    42. <TD COLSPAN= 50 ALIGN=CENTER>
    43. -2,7
    44. <TD COLSPAN= 50 ALIGN=CENTER>
    45. 99,46
    46. <TR>
    47. <TD COLSPAN= 50 ALIGN=CENTER>
    48. 0,4
    49. <TD COLSPAN= 50 ALIGN=CENTER>
    50. -180
    51. <TD COLSPAN= 50 ALIGN=CENTER>
    52. -9
    53. <TD COLSPAN= 50 ALIGN=CENTER>
    54. -3,6
    55. <TD COLSPAN= 50 ALIGN=CENTER>
    56. 99,1
    57. <TR>
    58. <TD COLSPAN= 50 ALIGN=CENTER>
    59. 0,5
    60. <TD COLSPAN= 50 ALIGN=CENTER>
    61. -180
    62. <TD COLSPAN= 50 ALIGN=CENTER>
    63. -9
    64. <TD COLSPAN= 50 ALIGN=CENTER>
    65. -4,5
    66. <TD COLSPAN= 50 ALIGN=CENTER>
    67. 98,65
    68. <TR>
    69. <TD COLSPAN= 50 ALIGN=CENTER>
    70. 0,6
    71. <TD COLSPAN= 50 ALIGN=CENTER>
    72. -180
    73. <TD COLSPAN= 50 ALIGN=CENTER>
    74. -9
    75. <TD COLSPAN= 50 ALIGN=CENTER>
    76. -5,4
    77. <TD COLSPAN= 50 ALIGN=CENTER>
    78. 98,11
    79. <TR>
    80. <TD COLSPAN= 50 ALIGN=CENTER>
    81. 0,7
    82. <TD COLSPAN= 50 ALIGN=CENTER>
    83. -180
    84. <TD COLSPAN= 50 ALIGN=CENTER>
    85. -9
    86. <TD COLSPAN= 50 ALIGN=CENTER>
    87. -6,3
    88. <TD COLSPAN= 50 ALIGN=CENTER>
    89. 97,48
    90. <TR>
    91. <TD COLSPAN= 50 ALIGN=CENTER>
    92. 0,8
    93. <TD COLSPAN= 50 ALIGN=CENTER>
    94. -180
    95. <TD COLSPAN= 50 ALIGN=CENTER>
    96. -9
    97. <TD COLSPAN= 50 ALIGN=CENTER>
    98. -7,2
    99. <TD COLSPAN= 50 ALIGN=CENTER>
    100. 96,76
    101. <TR>
    102. <TD COLSPAN= 50 ALIGN=CENTER>
    103. 0,9
    104. <TD COLSPAN= 50 ALIGN=CENTER>
    105. -180
    106. <TD COLSPAN= 50 ALIGN=CENTER>
    107. -9
    108. <TD COLSPAN= 50 ALIGN=CENTER>
    109. -8,1
    110. <TD COLSPAN= 50 ALIGN=CENTER>
    111. 95,95
    112. <TR>
    113. <TD COLSPAN= 50 ALIGN=CENTER>
    114. 1
    115. <TD COLSPAN= 50 ALIGN=CENTER>
    116. -180
    117. <TD COLSPAN= 50 ALIGN=CENTER>
    118. -9
    119. <TD COLSPAN= 50 ALIGN=CENTER>
    120. -9
    121. <TD COLSPAN= 50 ALIGN=CENTER>
    122. 95,05
    123. <TR>
    124. <TD COLSPAN= 50 ALIGN=CENTER>
    125. 1,1
    126. <TD COLSPAN= 50 ALIGN=CENTER>
    127. -180
    128. <TD COLSPAN= 50 ALIGN=CENTER>
    129. -9
    130. <TD COLSPAN= 50 ALIGN=CENTER>
    131. -9,9
    132. <TD COLSPAN= 50 ALIGN=CENTER>
    133. 94,06
    134. <TR>
    135. <TD COLSPAN= 50 ALIGN=CENTER>
    136. 1,2
    137. <TD COLSPAN= 50 ALIGN=CENTER>
    138. -180
    139. <TD COLSPAN= 50 ALIGN=CENTER>
    140. -9
    141. <TD COLSPAN= 50 ALIGN=CENTER>
    142. -10,8
    143. <TD COLSPAN= 50 ALIGN=CENTER>
    144. 92,98
    145. <TR>
    146. <TD COLSPAN= 50 ALIGN=CENTER>
    147. 1,3
    148. <TD COLSPAN= 50 ALIGN=CENTER>
    149. -180
    150. <TD COLSPAN= 50 ALIGN=CENTER>
    151. -9
    152. <TD COLSPAN= 50 ALIGN=CENTER>
    153. -11,7
    154. <TD COLSPAN= 50 ALIGN=CENTER>
    155. 91,81
    156. <TR>
    157. <TD COLSPAN= 50 ALIGN=CENTER>
    158. 1,4
    159. <TD COLSPAN= 50 ALIGN=CENTER>
    160. -180
    161. <TD COLSPAN= 50 ALIGN=CENTER>
    162. -9
    163. <TD COLSPAN= 50 ALIGN=CENTER>
    164. -12,6
    165. <TD COLSPAN= 50 ALIGN=CENTER>
    166. 90,55
    167. <TR>
    168. <TD COLSPAN= 50 ALIGN=CENTER>
    169. 1,5
    170. <TD COLSPAN= 50 ALIGN=CENTER>
    171. -180
    172. <TD COLSPAN= 50 ALIGN=CENTER>
    173. -9
    174. <TD COLSPAN= 50 ALIGN=CENTER>
    175. -13,5
    176. <TD COLSPAN= 50 ALIGN=CENTER>
    177. 89,2
    178. <TR>
    179. <TD COLSPAN= 50 ALIGN=CENTER>
    180. 1,6
    181. <TD COLSPAN= 50 ALIGN=CENTER>
    182. -180
    183. <TD COLSPAN= 50 ALIGN=CENTER>
    184. -9
    185. <TD COLSPAN= 50 ALIGN=CENTER>
    186. -14,4
    187. <TD COLSPAN= 50 ALIGN=CENTER>
    188. 87,76
    189. <TR>
    190. <TD COLSPAN= 50 ALIGN=CENTER>
    191. 1,7
    192. <TD COLSPAN= 50 ALIGN=CENTER>
    193. -180
    194. <TD COLSPAN= 50 ALIGN=CENTER>
    195. -9
    196. <TD COLSPAN= 50 ALIGN=CENTER>
    197. -15,3
    198. <TD COLSPAN= 50 ALIGN=CENTER>
    199. 86,23
    200. <TR>
    201. <TD COLSPAN= 50 ALIGN=CENTER>
    202. 1,8
    203. <TD COLSPAN= 50 ALIGN=CENTER>
    204. -180
    205. <TD COLSPAN= 50 ALIGN=CENTER>
    206. -9
    207. <TD COLSPAN= 50 ALIGN=CENTER>
    208. -16,2
    209. <TD COLSPAN= 50 ALIGN=CENTER>
    210. 84,61
    211. <TR>
    212. <TD COLSPAN= 50 ALIGN=CENTER>
    213. 1,9
    214. <TD COLSPAN= 50 ALIGN=CENTER>
    215. -180
    216. <TD COLSPAN= 50 ALIGN=CENTER>
    217. -9
    218. <TD COLSPAN= 50 ALIGN=CENTER>
    219. -17,1
    220. <TD COLSPAN= 50 ALIGN=CENTER>
    221. 82,9
    222. <TR>
    223. <TD COLSPAN= 50 ALIGN=CENTER>
    224. 2
    225. <TD COLSPAN= 50 ALIGN=CENTER>
    226. -180
    227. <TD COLSPAN= 50 ALIGN=CENTER>
    228. -9
    229. <TD COLSPAN= 50 ALIGN=CENTER>
    230. -18
    231. <TD COLSPAN= 50 ALIGN=CENTER>
    232. 81,1
    233. <TR>
    234. <TD COLSPAN= 50 ALIGN=CENTER>
    235. 2,1
    236. <TD COLSPAN= 50 ALIGN=CENTER>
    237. -180
    238. <TD COLSPAN= 50 ALIGN=CENTER>
    239. -9
    240. <TD COLSPAN= 50 ALIGN=CENTER>
    241. -18,9
    242. <TD COLSPAN= 50 ALIGN=CENTER>
    243. 79,21
    244. <TR>
    245. <TD COLSPAN= 50 ALIGN=CENTER>
    246. 2,2
    247. <TD COLSPAN= 50 ALIGN=CENTER>
    248. -180
    249. <TD COLSPAN= 50 ALIGN=CENTER>
    250. -9
    251. <TD COLSPAN= 50 ALIGN=CENTER>
    252. -19,8
    253. <TD COLSPAN= 50 ALIGN=CENTER>
    254. 77,23
    255. <TR>
    256. <TD COLSPAN= 50 ALIGN=CENTER>
    257. 2,3
    258. <TD COLSPAN= 50 ALIGN=CENTER>
    259. -180
    260. <TD COLSPAN= 50 ALIGN=CENTER>
    261. -9
    262. <TD COLSPAN= 50 ALIGN=CENTER>
    263. -20,7
    264. <TD COLSPAN= 50 ALIGN=CENTER>
    265. 75,16
    266. <TR>
    267. <TD COLSPAN= 50 ALIGN=CENTER>
    268. 2,4
    269. <TD COLSPAN= 50 ALIGN=CENTER>
    270. -180
    271. <TD COLSPAN= 50 ALIGN=CENTER>
    272. -9
    273. <TD COLSPAN= 50 ALIGN=CENTER>
    274. -21,6
    275. <TD COLSPAN= 50 ALIGN=CENTER>
    276. 73
    277. <TR>
    278. <TD COLSPAN= 50 ALIGN=CENTER>
    279. 2,5
    280. <TD COLSPAN= 50 ALIGN=CENTER>
    281. -180
    282. <TD COLSPAN= 50 ALIGN=CENTER>
    283. -9
    284. <TD COLSPAN= 50 ALIGN=CENTER>
    285. -22,5
    286. <TD COLSPAN= 50 ALIGN=CENTER>
    287. 70,75
    288. <TR>
    289. <TD COLSPAN= 50 ALIGN=CENTER>
    290. 2,6
    291. <TD COLSPAN= 50 ALIGN=CENTER>
    292. -180
    293. <TD COLSPAN= 50 ALIGN=CENTER>
    294. -9
    295. <TD COLSPAN= 50 ALIGN=CENTER>
    296. -23,4
    297. <TD COLSPAN= 50 ALIGN=CENTER>
    298. 68,41
    299. <TR>
    300. <TD COLSPAN= 50 ALIGN=CENTER>
    301. 2,7
    302. <TD COLSPAN= 50 ALIGN=CENTER>
    303. -180
    304. <TD COLSPAN= 50 ALIGN=CENTER>
    305. -9
    306. <TD COLSPAN= 50 ALIGN=CENTER>
    307. -24,3
    308. <TD COLSPAN= 50 ALIGN=CENTER>
    309. 65,98
    310. <TR>
    311. <TD COLSPAN= 50 ALIGN=CENTER>
    312. 2,8
    313. <TD COLSPAN= 50 ALIGN=CENTER>
    314. -180
    315. <TD COLSPAN= 50 ALIGN=CENTER>
    316. -9
    317. <TD COLSPAN= 50 ALIGN=CENTER>
    318. -25,2
    319. <TD COLSPAN= 50 ALIGN=CENTER>
    320. 63,46
    321. <TR>
    322. <TD COLSPAN= 50 ALIGN=CENTER>
    323. 2,9
    324. <TD COLSPAN= 50 ALIGN=CENTER>
    325. -180
    326. <TD COLSPAN= 50 ALIGN=CENTER>
    327. -9
    328. <TD COLSPAN= 50 ALIGN=CENTER>
    329. -26,1
    330. <TD COLSPAN= 50 ALIGN=CENTER>
    331. 60,85
    332. <TR>
    333. <TD COLSPAN= 50 ALIGN=CENTER>
    334. 3
    335. <TD COLSPAN= 50 ALIGN=CENTER>
    336. -180
    337. <TD COLSPAN= 50 ALIGN=CENTER>
    338. -9
    339. <TD COLSPAN= 50 ALIGN=CENTER>
    340. -27
    341. <TD COLSPAN= 50 ALIGN=CENTER>
    342. 58,15
    343. <TR>
    344. <TD COLSPAN= 50 ALIGN=CENTER>
    345. 3,1
    346. <TD COLSPAN= 50 ALIGN=CENTER>
    347. -180
    348. <TD COLSPAN= 50 ALIGN=CENTER>
    349. -9
    350. <TD COLSPAN= 50 ALIGN=CENTER>
    351. -27,9
    352. <TD COLSPAN= 50 ALIGN=CENTER>
    353. 55,36
    354. <TR>
    355. <TD COLSPAN= 50 ALIGN=CENTER>
    356. 3,2
    357. <TD COLSPAN= 50 ALIGN=CENTER>
    358. -180
    359. <TD COLSPAN= 50 ALIGN=CENTER>
    360. -9
    361. <TD COLSPAN= 50 ALIGN=CENTER>
    362. -28,8
    363. <TD COLSPAN= 50 ALIGN=CENTER>
    364. 52,48
    365. <TR>
    366. <TD COLSPAN= 50 ALIGN=CENTER>
    367. 3,3
    368. <TD COLSPAN= 50 ALIGN=CENTER>
    369. -180
    370. <TD COLSPAN= 50 ALIGN=CENTER>
    371. -9
    372. <TD COLSPAN= 50 ALIGN=CENTER>
    373. -29,7
    374. <TD COLSPAN= 50 ALIGN=CENTER>
    375. 49,51
    376. <TR>
    377. <TD COLSPAN= 50 ALIGN=CENTER>
    378. 3,4
    379. <TD COLSPAN= 50 ALIGN=CENTER>
    380. -180
    381. <TD COLSPAN= 50 ALIGN=CENTER>
    382. -9
    383. <TD COLSPAN= 50 ALIGN=CENTER>
    384. -30,6
    385. <TD COLSPAN= 50 ALIGN=CENTER>
    386. 46,45
    387. <TR>
    388. <TD COLSPAN= 50 ALIGN=CENTER>
    389. 3,5
    390. <TD COLSPAN= 50 ALIGN=CENTER>
    391. -180
    392. <TD COLSPAN= 50 ALIGN=CENTER>
    393. -9
    394. <TD COLSPAN= 50 ALIGN=CENTER>
    395. -31,5
    396. <TD COLSPAN= 50 ALIGN=CENTER>
    397. 43,3
    398. <TR>
    399. <TD COLSPAN= 50 ALIGN=CENTER>
    400. 3,6
    401. <TD COLSPAN= 50 ALIGN=CENTER>
    402. -180
    403. <TD COLSPAN= 50 ALIGN=CENTER>
    404. -9
    405. <TD COLSPAN= 50 ALIGN=CENTER>
    406. -32,4
    407. <TD COLSPAN= 50 ALIGN=CENTER>
    408. 40,06
    409. <TR>
    410. <TD COLSPAN= 50 ALIGN=CENTER>
    411. 3,7
    412. <TD COLSPAN= 50 ALIGN=CENTER>
    413. -180
    414. <TD COLSPAN= 50 ALIGN=CENTER>
    415. -9
    416. <TD COLSPAN= 50 ALIGN=CENTER>
    417. -33,3
    418. <TD COLSPAN= 50 ALIGN=CENTER>
    419. 36,73
    420. <TR>
    421. <TD COLSPAN= 50 ALIGN=CENTER>
    422. 3,8
    423. <TD COLSPAN= 50 ALIGN=CENTER>
    424. -180
    425. <TD COLSPAN= 50 ALIGN=CENTER>
    426. -9
    427. <TD COLSPAN= 50 ALIGN=CENTER>
    428. -34,2
    429. <TD COLSPAN= 50 ALIGN=CENTER>
    430. 33,31
    431. <TR>
    432. <TD COLSPAN= 50 ALIGN=CENTER>
    433. 3,9
    434. <TD COLSPAN= 50 ALIGN=CENTER>
    435. -180
    436. <TD COLSPAN= 50 ALIGN=CENTER>
    437. -9
    438. <TD COLSPAN= 50 ALIGN=CENTER>
    439. -35,1
    440. <TD COLSPAN= 50 ALIGN=CENTER>
    441. 29,8
    442. <TR>
    443. <TD COLSPAN= 50 ALIGN=CENTER>
    444. 4
    445. <TD COLSPAN= 50 ALIGN=CENTER>
    446. -180
    447. <TD COLSPAN= 50 ALIGN=CENTER>
    448. -9
    449. <TD COLSPAN= 50 ALIGN=CENTER>
    450. -36
    451. <TD COLSPAN= 50 ALIGN=CENTER>
    452. 26,2
    453. <TR>
    454. <TD COLSPAN= 50 ALIGN=CENTER>
    455. 4,1
    456. <TD COLSPAN= 50 ALIGN=CENTER>
    457. -180
    458. <TD COLSPAN= 50 ALIGN=CENTER>
    459. -9
    460. <TD COLSPAN= 50 ALIGN=CENTER>
    461. -36,9
    462. <TD COLSPAN= 50 ALIGN=CENTER>
    463. 22,51
    464. <TR>
    465. <TD COLSPAN= 50 ALIGN=CENTER>
    466. 4,2
    467. <TD COLSPAN= 50 ALIGN=CENTER>
    468. -180
    469. <TD COLSPAN= 50 ALIGN=CENTER>
    470. -9
    471. <TD COLSPAN= 50 ALIGN=CENTER>
    472. -37,8
    473. <TD COLSPAN= 50 ALIGN=CENTER>
    474. 18,73
    475. <TR>
    476. <TD COLSPAN= 50 ALIGN=CENTER>
    477. 4,3
    478. <TD COLSPAN= 50 ALIGN=CENTER>
    479. -180
    480. <TD COLSPAN= 50 ALIGN=CENTER>
    481. -9
    482. <TD COLSPAN= 50 ALIGN=CENTER>
    483. -38,7
    484. <TD COLSPAN= 50 ALIGN=CENTER>
    485. 14,86
    486. <TR>
    487. <TD COLSPAN= 50 ALIGN=CENTER>
    488. 4,4
    489. <TD COLSPAN= 50 ALIGN=CENTER>
    490. -180
    491. <TD COLSPAN= 50 ALIGN=CENTER>
    492. -9
    493. <TD COLSPAN= 50 ALIGN=CENTER>
    494. -39,6
    495. <TD COLSPAN= 50 ALIGN=CENTER>
    496. 10,9
    497. <TR>
    498. <TD COLSPAN= 50 ALIGN=CENTER>
    499. 4,5
    500. <TD COLSPAN= 50 ALIGN=CENTER>
    501. -180
    502. <TD COLSPAN= 50 ALIGN=CENTER>
    503. -9
    504. <TD COLSPAN= 50 ALIGN=CENTER>
    505. -40,5
    506. <TD COLSPAN= 50 ALIGN=CENTER>
    507. 6,85
    508. <TR>
    509. <TD COLSPAN= 50 ALIGN=CENTER>
    510. 4,6
    511. <TD COLSPAN= 50 ALIGN=CENTER>
    512. -180
    513. <TD COLSPAN= 50 ALIGN=CENTER>
    514. -9
    515. <TD COLSPAN= 50 ALIGN=CENTER>
    516. -41,4
    517. <TD COLSPAN= 50 ALIGN=CENTER>
    518. 2,71
    519. <TR>
    520. <TD COLSPAN= 50 ALIGN=CENTER>
    521. 4,7
    522. <TD COLSPAN= 50 ALIGN=CENTER>
    523. -180
    524. <TD COLSPAN= 50 ALIGN=CENTER>
    525. -9
    526. <TD COLSPAN= 50 ALIGN=CENTER>
    527. -42,3
    528. <TD COLSPAN= 50 ALIGN=CENTER>
    529. -1,52


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Agassi“ ()

    mir fehlt noch eine Beschreibung, was das Programm eiglich machen soll.
    "freien Fall in Luft berechnen" sagt mir nichts, jdfs. nicht genügend.

    Ich könnte etwa hergehen, und sagen "Der freie Fall in Luft ergibt 42" - wäre das richtig oder falsch und warum?

    Das du dich an perfekt funktionierendem Javascript orientierst, nützt mir nix - ich kann kein Javascript, und vb.net macht seine Ausgaben auch nicht in einem Browser.

    Oder ich sag mal so:
    Für deine Berechnungen ist noch völlig unklar, was einzugeben ist, und was dann herauskommen soll.
    Beispielsweise könnte man aus einer Fall-Höhe (und allerlei anderen Daten) den Aufschlags-Zeitpunkt berechnen, aber ebensogut auch die Aufschlags-Geschwindigkeit. Oder bei sehr großen Höhen stellt sich ja iwann eine stabile Fallgeschwindigkeit ein.
    Also m.E. beginnt der Salat bereits hier:

    VB.NET-Quellcode

    1. Dim F, Fg, Fl, v, h, t, dv, dh, dt, cw, m, ar, Fr, tr, vr, xr, g, p, halbe, a, af As Decimal
    2. 'Zur Vereinfachung des folgendenen Codes, werden hier die Werte in Variablen geschrieben
    3. g = Val("9.81")
    4. p = Val("1,2")
    5. halbe = Val("0,5")
    6. F = Val("0")


    Das ist in diesem Fall keine Vereinfachung sondern eher eine Verunstaltung des Codes. Die Zeile mit Dim deklariert nämlich alle Variablen als "Variant" - lediglich af wird ein Decimal.
    Ich würde das zuerst mal so versuchen:

    VB.NET-Quellcode

    1. Dim Fg As Decimal, Fl As Decimal, v As Decimal, h As Decimal, t As Decimal, dv As Decimal, dh As Decimal
    2. Dim dt As Decimal, cw As Decimal, m As Decimal, ar As Decimal, Fr As Decimal, tr As Decimal, vr As Decimal, xr As Decimal, a As Decimal, af As Decimal
    3. Dim g As Decimal = 9.81
    4. Dim p As Decimal = 1.2
    5. Dim halbe As Decimal = 0.5
    6. Dim F As Decimal = 0


    Der nächste Unsinn ist doch dass Du Werte vom Typ String (das was in den Textboxen steht) einfach als Decimal behandelst und dann auch noch explizit in einen Double umwandeln willst. In dem Moment hast Du wahrscheinlich wieder "Glück" dass die entsprechenden Variablen als Variant deklariert sind sodass da zum Schluss irgend etwas zwischen "Nothing" und Unsinn drinsteht... Deklariere die entsprechenden Werte doch bitte gleich als Double und wandle dann den TExt entsprechend in Double um - das ist zwar auch nicht die feine Art, aber zumindest solltest Du erstmal weiter kommen.

    Weiterhin lass bitte bei den beiden folgenden Zeilen das "Val" einfach weg. Das ist unsinnig wenn die Variablen vernünftig deklariert sind.

    VB.NET-Quellcode

    1. F = Val(Fg + Fl)
    2. a = Val(F / m)


    Und zu guter letzt tu uns bitte den Gefallen und lass diesen ganzen HTML-Quatsch weg! Wir sind hier bei .net und da kannst Du die Werte viel komfortabler überprüfen indem Du die z.B. im Direktfenster ausgeben lässt (Debug.Print) oder Haltepunkte setzt und dann einfach die Maus über die Variable bewegst, oder dir die Werte im Lokalen-Fenster anschaust, oder, oder, oder...

    Wenn Du gerade dabei bist, dich in VB.net einzuarbeiten und von JavaScript kommst (??) dann wünsche ich Dir viel Erfolg ;) Es wird bestimmt nicht einfach, die strenge Typisierung zu verinnerlichen - aber es lohnt sich. Ich bin gerade umgekehrt auf dem Weg dass ich mich (mehr oder weniger zwangsläufig) mit Javascript beschäftige...
    Oh scheint ja sehr interessant, auch als "alter VB-Haase" hätte ich nicht gedacht, das in einer Deklaration á la: Dim a,b,c As Integer
    nur c zum Integer wird und der Rest Variant bleibt?! hab ich was verpasst? SOllte das Stacking nicht eigentlich immer ermöglichen mehrere Variabeln selbigen Typs mit einem Aufwasch zu deklarieren? 8| Klärt mich bitte auf. :D

    Keine PN's bezüglich VB an mich! Dafür gibt es das Forum!

    :Kreis hier. Kreis da.:

    Sorry, was meine Ausführung zur Deklaration von Variablen in einer Zeile betrifft. Da hab ich was durcheinandergeschmissen. Ich hatte aber definitiv schon mal 'ne Programmiersprache wo's so war - vielleicht VBA oder VB6 ?(

    Hab's gerade getestet, da hast Du Recht, MrLee. Kann ich mir in Zukunft auch etwas Tipparbeit sparen :huh:

    Aber nichtsdestotrotz ist der Rest des obigen Programms ein ziemliches Durcheinander...

    Thisoft schrieb:

    VBA oder VB6
    VBA. Da ist nämlich der Standard Variant, den man explizit mit As überschreiben muss, wenn man es anders haben will.
    Dim a, b As Integer, c, d as String a und c sind Variant, b ist Integer, d ist String

    VB6 und VB.Net erlauben eine Aneinanderreihung für denselben Typ.
    Dim a, b As Integer, c, d As String a und b sind Integer, c und d sind String.

    Und bei VBS gibt es gar kein As, da ist alles Variant.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Also Leute... Ich hab das Problem gelöst, fragt mich nicht wie, aber ich hab's.
    (Könnte daran liegen, dass ich g, p, und halbe statt mit Dim mit Const angegeben hab, da diese sich ja nicht verändern)

    @ErfinderDesRades Würdest du zwei Minuten googeln würdest du die Formeln für den freien Fall eines Objektes in Luft finden. Weiterhin würdest du, wenn du dir den HTML-Code einmal kurz angucken würdest, und den einfach mal als HTML-Dokument speichern und ausführen würdest, könntest du die Werte sehen, die gemeint sind. Ich gebe aber zu, dass ich da präziser hätte sein können.

    @Thisoft Könntest du mir dann sagen, wie ich den Code besser ordne, da ich wirklich noch ziemlich neu in VB.Net bin...
    Was die Ausgabe in das HTML-Dokument angeht, das mache ich nur, da ich wirklich jeden Wert brauche... Und das in einer Tabelle. Eigentlich würde ich das gerne in eine Exeltabelle machen, jedoch habe ich kein Ahnung, wie ich das machen kann.


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Agassi“ ()

    Hallo Agassi,

    ich hab Dir hier mal das Ganze für die Ausgabe in Excel umgebaut

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Rechnen_click(sender As Object, e As EventArgs) Handles Rechnen.Click
    2. Dim Fg, Fl, v, h, t, dv, dh, dt, cw, m, a, af As Decimal
    3. Dim g As Decimal = 9.81D
    4. Dim p As Decimal = 1.2D
    5. Dim halbe As Decimal = 0.5D
    6. Dim F As Decimal = 0
    7. 'Prüfen, ob in den TExtfeldern überhaupt ein Zahlenwert drinsteht
    8. If IsNumeric(AFläche.Text) AndAlso IsNumeric(cwt.Text) AndAlso IsNumeric(deltaT.Text) AndAlso IsNumeric(mt.Text) AndAlso IsNumeric(ht.Text) Then
    9. af = CDec(AFläche.Text)
    10. cw = CDec(cwt.Text)
    11. dt = CDec(deltaT.Text)
    12. m = CDec(mt.Text)
    13. h = CDec(ht.Text)
    14. If af > 0 And cw > 0 And dt > 0 And m > 0 And h > 0 Then
    15. 'Ordner für Ausgabe erstellen
    16. Dim DirectoryPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Ergebnisse"
    17. If Not Directory.Exists(DirectoryPath) Then
    18. Directory.CreateDirectory(DirectoryPath)
    19. End If
    20. Dim xlApp As New Excel.Application, xlWorkbook As Excel.Workbook, xlBlatt As Excel.Worksheet
    21. 'xlApp.Visible = True
    22. xlWorkbook = xlApp.Workbooks.Add
    23. xlBlatt = CType(xlWorkbook.Sheets(1), Excel.Worksheet)
    24. xlBlatt.Range("A1").Value() = "t[s]"
    25. xlBlatt.Range("B1").Value() = "F[N]"
    26. xlBlatt.Range("C1").Value() = "a[m/s²]"
    27. xlBlatt.Range("D1").Value() = "v[m/s]"
    28. xlBlatt.Range("E1").Value() = "h[m]"
    29. 'Schleife um die Werte auszurechnen und ihn ihr jeweiliges Dokument zu schreiben
    30. Dim Zeile As Integer = 2
    31. Do While h > 0
    32. 'Berechnungen der Einzelnen Werte
    33. Fg = -m * g
    34. Fl = halbe * p * cw * af * v * v
    35. F = Fg + Fl
    36. a = F / m
    37. dv = a * dt
    38. v = v + dv
    39. dh = v * dt
    40. h = h + dh
    41. t = t + dt
    42. 'Schreibt die Ergebnisse gerundet in die Tabelle
    43. xlBlatt.Cells(Zeile, 1) = Math.Round(t, 4)
    44. xlBlatt.Cells(Zeile, 2) = Math.Round(F, 4)
    45. xlBlatt.Cells(Zeile, 3) = Math.Round(a, 4)
    46. xlBlatt.Cells(Zeile, 4) = Math.Round(v, 4)
    47. xlBlatt.Cells(Zeile, 5) = Math.Round(h, 4)
    48. Zeile += 1
    49. Loop
    50. 'Legt fest wohnin die Tabelle geschrieben werden soll
    51. xlWorkbook.SaveAs(DirectoryPath & "\Ergebnisse.xls", XlFileFormat.xlExcel8)
    52. 'Schließt das Dokument mit der Tabelle und zeigt an, dass die Berechnungen fertig sind.
    53. xlWorkbook.Saved = True
    54. xlWorkbook.Close(Excel.XlSaveAction.xlDoNotSaveChanges)
    55. Threading.Thread.Sleep(2000)
    56. xlApp.Quit()
    57. 'Aufräumen weil die im Hintergrund geöffnete Excel-Instanz oftmals nicht sauber beendet wird
    58. Dim Excproclist As Process() = Process.GetProcessesByName("Excel")
    59. For i = 0 To UBound(Excproclist)
    60. If Excproclist(i).MainWindowTitle = "" Then Excproclist(i).Kill()
    61. Next
    62. Info.Text = "Berechnungen sind fertig."
    63. Process.Start(DirectoryPath & "\Ergebnisse.xls")
    64. Else
    65. 'Wird angezeigt, wenn einer der Werte gleich Null ist.
    66. If (af <= 0) Then
    67. AFläche.Text = "Überpüfen sie bitte die Eingabe"
    68. End If
    69. If (cw <= 0) Then
    70. cwt.Text = "Überpüfen sie bitte die Eingabe"
    71. End If
    72. If (dt <= 0) Then
    73. deltaT.Text = "Überpüfen sie bitte die Eingabe"
    74. End If
    75. If (h <= 0) Then
    76. ht.Text = "Überpüfen sie bitte die Eingabe"
    77. End If
    78. If (m <= 0) Then
    79. mt.Text = "Überpüfen sie bitte die Eingabe"
    80. End If
    81. End If
    82. Else
    83. Info.Text = "Es sind nur numerische Werte erlaubt! Überpüfen sie bitte die Eingabe!"
    84. End If
    85. End Sub


    Was jetzt noch für Dich zu tun bliebe - Du mußt sicherstellen, dass Kommawerte in den Eingabefeldern auch wirklich mit Komma und nicht mit Punkt eingegeben werden. Das ist allerdings auch von den Systemeinstellungen des jeweiligen Rechners abhängig. Das könnte nämlich auch die Ursache dafür sein, dass bei Dir falsche und dann plötzlich mal richtige Werte ausgegeben wurden. Wie gesagt, die Eingabe von Zahlenwerten per Textbox ist suboptimal - allerdings mache ich das auch öfters da mir das NumericUpDown für sowas auch nicht zusagt. Aber deshalb musst Du dann eben im Programm sicherstellen dass da Komma und/oder Punkt korrekt ausgewertet werden
    Weiterhin musst Du beim Initialisieren der Decimal-Variablen explizit angeben dass der Zahlenwert ein Decimal ist (D am Ende) - sonst kommen da bereits "unerwartete" Werte zustande. Das kannst Du aber ganz gut feststellen wenn Du im Einzelschrittmodus ausführst und dir die Werte jeweils anschaust. War vermutlich auch ein Grund dass du richtige Werte bekommen hast als du diese Variablen in Konstanten geändert hast.

    So, genug geschrieben (und hoffentlich keine Irrtümer meinerseits ;) ). Du kommst damit hoffentlich mit .NET ein Stückchen weiter.