JCB: Hier die Lösung ;)!

Beitrag lesen

poste doch mal etwas mehr Code - was kommt vor den betreffenden Zeilen, was danach?

Kann es nicht doch damit zusammenhängen, daß Dir da eine String-Variable etwas vermurkst (dürfte natürlich bei If 1 = 1 nicht sein)?

Probiere das mal aus:

a = 1
b = "1"
if a < b then msgbox "Hallo" 'Kenne die .net-Syntax nicht

Diese Bedingung müßte wahr sein.

Irgendwie habe ich den Eindruck, daß ich bei VB6 bleiben sollte ...

So, nach langem hin und her: hier die Lösung!

Man solls ja nicht glauben, aber der Compiler von VB.Net ist in gewisserweise neunmalklug. Warum? Weil er scheinbar bei einer If-Bedingung die letzte Zeile von dem Code überprüft, der ausgeführt werden würde, wenn die Bedingung wahr ist. Was passiert also bei der Überprüfung in meinem Fall:

Nochmal der Code:

Dim mStr As String = "testtest1"
if 1 = 1 Then
   mStr = mStr
End If

mStr = mStr - wird nicht ausgeführt, da es die letzte Zeile des "If-Codes" ist _UND_ es zu keiner Veränderung der Variable mStr oder im Speicher kommt.

Anders siehts in den beiden folgenden Fällen aus:

1.
Dim mStr As String = "testtest1"
if 1 = 1 Then
   mStr = mStr 'Nur diese Zeile wird ausgeführt
   mStr = mStr
End If

2.
Dim mStr As String = "testtest1"
if 1 = 1 Then
   mStr = mStr 'Beide Zeilen Code werden ausgeführt
   mStr = ""
End If

Man sollte sich schon fast bei M$ beschweren, dass der Compiler nicht das tut, was man ihm vorgibt zu tun!

Also, damit ist bewiesen, dass ich aus keinem Paralleluniversum komm ;).

So, aber trotzdem besten Dank an alle für die ganzen Antworten!

Gruß,
Jan