Announcement

Collapse
No announcement yet.

Von Visual Basic in C#

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Von Visual Basic in C#

    Kann mir jemand helfen diesen Code von Visual Basic in Visual C#.NET umzuformen??

    Dim strText1 As String
    Dim strText2 As String
    Dim zeichen As String
    strText1 = Me.txtText.Text
    zeichen = Len(strText1)
    If zeichen > 10 Then
    lblText2 = "Wenn mehr als 10 Zeichen:" & " " & strText1
    Else: MsgBox strText1

    End If

  • #2
    Originally posted by @lice View Post
    Kann mir jemand helfen diesen Code von Visual Basic in Visual C#.NET umzuformen??
    Ich habe "keine" Ahnung von VB, kann aber Code weitgehend interpretieren. Ich versuche also mal Folgendes:
    Code:
    //  Dim strText1 As String
    //  Dim strText2 As String
    string strText1, strText2;
    //  Dim zeichen As String
    //  das ist Quatsch (Schreibfehler?) - siehe die folgenden Abfragen
    int zeichen;
    //  strText1 = Me.txtText.Text
    //  für Me gibt es keine eindeutige Entsprechung, oft kann es
    //  weggelassen werden 
    strText1 = txtText.Text;
    //  zeichen = Len(strText1)
    zeichen = strText1.Length;
    //  If zeichen > 10 Then
    //      lblText2 = "Wenn mehr als 10 Zeichen:" & "  " & strText1
    //  Else: MsgBox strText1
    //  End If
    if (zeichen > 10) {
        //  ich nehme  an, dass lblText2 kein string, sondern ein Label ist
        lbtText2.Text = "Wenn mehr als 10 Zeichen:" + "  " + strText1;
        //  Warnung: Strings mit '+' verknüpfen ist nur in Ausnahmefällen akzeptabel
    } else {
        MessageBox.Show(strText1);
    }
    Gruß Jürgen

    Comment


    • #3
      Das hast du echt gut interpretieren, danke schön, hat mir weiter geholfen!!!!

      Gruß @lice

      Comment


      • #4
        Und dieser Code ist auch nicht schwer den in C# umzuformen, aber ich bekomm da einige Konvertierungsfehler!!
        Das ist jetzt der Visual Basic Code und den bräuchte ich jetzt auch nochmal in C# bitte.

        Dim intText1 As Integer
        Dim intText2 As Integer
        Dim intText3 As Integer
        Dim z As Integer
        intText1 = Me.txtText1
        intText2 = Me.txtText2
        For z = intText1 To intText2
        MsgBox z
        intText3 = z + intText3
        Next
        Me.txtText3 = intText3
        Dannke, gruß @lice

        Comment


        • #5
          Hallo Alice,

          ich kann mich auch darüber "her machen", brauche aber weitere Angaben:
          1. Was ist die Deklaration von txtText1 usw. (TextBox o.a.)?
          2. Was ist der Initialisierungswert von intText3?

          Danke! Jürgen

          Comment


          • #6
            Also txtText1 ist der Name der ersten Textbox, und txtText2 + txtText3 der anderen beiden.
            In txtText3 soll dann das Ergebnis von txtText1 und txtText2 stehen.

            Hier ist die Aufgabenstellung:
            Beim Klicken auf den Button wollen wir die Zahlen von 1-10 in einer „For“ – Schleife zusammen addieren. In der 1. Textbox geben wir den Startwert ein. In der 2. Textbox geben wir den Endwert ein. Das Ergebnis der Zahlen soll in der 3. Textbox ausgegeben werden.

            Erweiterung: Die Textbox in der das Ergebnis ausgegeben wird, darf nicht editierbar sein.
            Gruß @lice

            Comment


            • #7
              OK, also versuche ich es:
              Code:
              //  Dim intText1 As Integer
              //  Dim intText2 As Integer
              //  Dim intText3 As Integer
              int intText1, intText2, intText3 = 0;
              //  Dim z As Integer kann hier entfallen, weil es 
              //  erst in der Schleife benötigt wird
              
              //  intText1 = Me.txtText1
              //  intText2 = Me.txtText2
              //  es gibt mehrere Möglichkeiten, um Fehler abzufangen;
              //  die schönste - weil sicherste - (erst unter NET 2.0) ist:
              if (! Int32.TryParse(txtText1.Text, intText1))
                  //  im Fehlerfall Ersatzwert zuordnen
                  intText1 = 0;
              if (! Int32.TryParse(txtText2.Text, intText2))
                  //  im Fehlerfall Ersatzwert zuordnen
                  intText2 = 0;
              
              //  For z = intText1 To intText2
              //  MsgBox z
              //  intText3 = z + intText3
              //  Next
              //  Schleife von...bis mit Schrittweite
              //  muss ich die Bestandteile erläutern?
              for(int z = intText1; z <= intText2; z++) {
                  MessageBox.Show("Schritt " + z.ToString());
                  intText3 += z;
              }
              //  Me.txtText3 = intText3
              txtText3.Text = intText3.ToString();
              Jürgen

              PS. Verstehst Du so langsam die Grundschreibweisen? Wie gesagt: ich weiß nichts von VB.

              Comment


              • #8
                Okay das ist simple und leicht verständlich, aber die If anweisungen brauche ich jetzt nicht oder? das war doch nur ein Beispiel um nen Fehler zu machen oder?

                Naja das einzige was ich bei diesem Code noch bekomme ist die der Fehler:
                Verwendung von möglicherweise nicht zugewiesenen lokalen Variablen für intText1 + intText2
                Wie behebe ich das?

                gruß @lice

                Comment


                • #9
                  Hallo Alice,

                  die if-Abfragen habe ich eingebaut, um genau diese Meldungen zu umgehen. Wenn Du Dir die Erklärung für TryParse() durchliest, dann würde eine Festlegung fehlen, wenn der Text nicht konvertiert werden konnte. Dies wollte ich durch den Ersatzwert 0 erreichen.

                  Aber der Compiler ist damit noch nicht zufrieden; er erkennt nicht, dass dadurch auf jeden Fall ein Wert zugewiesen wird. (Das bedeutet das von Dir angegebene Zitat.) Also Änderung:
                  Code:
                  int intText1 = 0, intText2 = 0, intText3 = 0;
                  Dann kannst Du auf die if-Abfragen verzichten.

                  Gruß Jürgen

                  Comment


                  • #10
                    So, kann mal bitte jemand dieses in Visual C#.NET eingeben, denn da kommt dann immer nur nen 0 wert raus, aber ich möchte ja den ausgerechneten wert haben den ich EINGEGEBEN habe. Ich bitte um Hilfe, DANKE

                    private void btn1_Click(object sender, System.EventArgs e)
                    {
                    int intText1 = 0;
                    int intText2 = 0;
                    int intText3 = 0;

                    for(int z = intText1; z <= intText2; z++)
                    {
                    MessageBox.Show("Schritt " + z.ToString());
                    intText3 += z;
                    }
                    txtText3.Text = intText3.ToString();
                    }

                    Comment


                    • #11
                      Du bekommst immer 0 raus, weil deine Schleife nicht durchlaufen wird.

                      Vor dem Aufruf deiner for-Schleife setzt du alle Variablen auf 0. Deine for-Schleife sieht also folgendermaßen aus:

                      for( int z = 0; z <= 0; z++ )
                      {
                      ...
                      }

                      da z == 0 ist, ist die Abbruchbedingung erfüllt und der Inhalt der Schleife wird nicht ausgeführt.

                      Da der Wert intText3 somit nicht berechnet wird, bleibt er bei seinem oben zugewiesenen Wert von 0.

                      Wenn du jetzt die Zuweisungen von intText1 und intText2 aus den TextBoxen holst, wird dein Beispiel funktionieren.

                      Comment


                      • #12
                        ja und wie hole ich dann nun die Zuweisungen von intText1 und intText2 aus den TextBoxen, das war ja eigentlich meine Frage wie ich das mache

                        Comment


                        • #13
                          Hallo @lice,

                          Thomas hat bereits folgendes geschrieben:

                          Code:
                          if (! Int32.TryParse(txtText1.Text, intText1))
                              //  im Fehlerfall Ersatzwert zuordnen
                              intText1 = 0;
                          if (! Int32.TryParse(txtText2.Text, intText2))
                              //  im Fehlerfall Ersatzwert zuordnen
                              intText2 = 0;
                          Die Zeilen bitte direkt hinter deinen Variablenzuweisungen

                          intText1 = 0;
                          intText2 = 0;
                          intText3 = 0;

                          einfügen.

                          Viele Grüße
                          Andreas

                          Comment


                          • #14
                            hmmm..ich bin am verzweifeln, das klappt so nicht, am besten du schreibst mit den ganzen originalen c# code auf so wie er richtig funktioniert

                            Comment


                            • #15
                              Ich bin heute nur sporadisch online, da ich im Wohnzimmer arbeite.
                              Der folgende Source, kommt ursprünglich von dir, bzw. Thomas. Wenn die Variablennamen stimmen, sollte der Source funktionieren, wenn nicht, bitte eine etwas genauere Fehlerbeschreibung und den vollständigen Source posten.

                              Code:
                              private void btn1_Click(object sender, System.EventArgs e)
                              {
                              int intText1 = 0;
                              int intText2 = 0;
                              int intText3 = 0;
                              
                              if (! System.Int32.TryParse(txtText1.Text, intText1))
                                  //  im Fehlerfall Ersatzwert zuordnen
                                  intText1 = 0;
                              if (! System.Int32.TryParse(txtText2.Text, intText2))
                                  //  im Fehlerfall Ersatzwert zuordnen
                                  intText2 = 0;
                              
                              for(int z = intText1; z <= intText2; z++)
                              {
                              MessageBox.Show("Schritt " + z.ToString());
                              intText3 += z;
                              }
                              txtText3.Text = intText3.ToString();
                              }

                              Comment

                              Working...
                              X