Announcement

Collapse
No announcement yet.

C++ -> vb.net: Versteh ein Stück Code nicht

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

  • C++ -> vb.net: Versteh ein Stück Code nicht

    Hi
    Ich schreibe gerade ein Programm von C++ nach VB.net um.
    Alles funktioniert auch, bis jetzt.
    Nur verstehe ihn etwas nicht:

    Code:
    DWORD dwCurObject   =  0x01132F60;
    
    while ( dwCurObject && (dwCurObject&1) == 0 )
    {
    	//BlaBla
    }
    Und zwar gehts um die while Schleife.
    Ich kapiere einfach beim besten willen nicht, was das für ein Ausdruck sein soll.
    Was muss dwCurObject sein, damit die Schleife abgebrochen wird? Die var
    ist ein Hex Wert (eine Speicher Adresse).

    Könnt ihr mir das erklären, so dass ich es in vb.net übersetzen kann?

    Danke!

    mfg
    Juhu
    lol? wow gamecard 4 president.

  • #2
    Solange dwCurObject != 0 ist und (dwCurObject AND 1) == 0


    Die var ist ein Hex Wert
    Sicherlich nicht, bloß weil du sie dir als Hex anzeigen lässt (bzw. diesen als Hex vorgegeben hast), ist sie dann kein Hexwert. Wenn du dir das als binärwert anzeigen lässt, ist des auch kein binärer Wert

    dwCurObject =18034528;

    ist genau so gut
    Zuletzt editiert von Christian Marquardt; 19.04.2009, 07:03.
    Christian

    Comment


    • #3
      eigentlich ganz einfach...

      die variable dwCurObject darf nicht 0 sein (0 und NULL ist eigentlich das gleiche, wobei man 0 für eine Zahl verwendet und NULL für pointer)

      und das LSB von dwCurObject muss 0 sein

      jup... eine Zahl kann nicht Hex sein. Hex ist nur die Darstellungsform einer Zahl (deswegen ist das ja auch immer ein String).

      B Hex = 1011 Binär = 11 Dezimal = 13 Oktal

      Und alles repräsentiert die (An-)Zahl 11 in unserem gebräuchlichen Dezimal System

      Comment


      • #4
        Hi
        Danke jetzt versteh ich es schon zu 80%!

        Hab den Code in VB.net einfach so übernommen und hab keine Fehler:

        Code:
        While dwCurObject <> 0 And (dwCurObject & 1) = 0
        Ich hab vor der Schleife dwCurObject ausgegeben (im C++ und im VB.net
        Programm), die Variablen haben einen identischen Wert.

        Im VB.net Programm, wird die Schleife nicht ausgeführt. Im C++ jedoch schon.

        Könnt ihr noch kurz erklären was LSB ist?

        Weil in VB.net ist (dwCurObject & 1) wohl was anderes. So wird der var
        dwCurObject einfach die Stelle 1 hinzugefügt.
        Wenn ichs schreibe wie in C++ (dwCurObject&1) dann gibts ein Fehler:
        Das Typzeichen "&" entspricht nicht dem deklarierten Datentyp "UInteger".

        Aber DWORD ist in VB.net UInt32 - hab ich gelesen.

        Wenn ich wüsste was (dwCurObject&1) GENAU macht, könnte ich
        den Code auch umschreiben.

        Dankeee
        lol? wow gamecard 4 president.

        Comment


        • #5
          dwCurObject&1
          Habe ich dir geschrieben:

          dwCurObject AND 1
          Christian

          Comment


          • #6
            Guckstu hier:
            http://msdn.microsoft.com/de-de/libr...8a(VS.80).aspx

            LSB (least significant bit) ist das niederwertigste Bit einer Zahl.

            Guckstu hier:
            http://de.wikipedia.org/wiki/Least_Significant_Bit

            Aber mal ein bissl was bei google reintippen würde nicht schaden^^ so schwer war das nun nicht zu finden.

            Comment


            • #7
              Hi
              Danke für Eure Hilfe.

              Ich muss jetzt trotzdem noch einmal Nachfragen, denn ich habe den Code
              jetzt "1 zu 1" (soweit halt möglich) von C++ nach VB.net umgeschrieben.
              Aber die While-Schleife beendet immer noch frühzeitig (sitze da schon lange
              dran rum).

              Also:
              Code:
              //C++
              while ( dwCurObject && (dwCurObject&1) == 0 )
              {
              	//BlaBla
              }
              
              
              'VB.NET
              While dwCurObject And (dwCurObject And 1) = 0
                     'BlaBla
              End While
              Korrekt, oder? Mich irritiert einfach, dass in vb.net nicht verschiedene && und &
              verwendet werden

              Oder vielleicht hab ich auch ein variablentyp verdreht.
              Doch erst mal soweit.

              mfg
              Juhu
              lol? wow gamecard 4 president.

              Comment


              • #8
                dwCurObject And 1
                dürfte sicherlich falsch sein, da ich nicht glaube, dass VB für ein logisches "und" und ein bitweises "und" den gleichen Befehl hat
                Christian

                Comment


                • #9
                  Das finde ich ja eben komisch. Aber es scheint wirklich nur den AND Befehl zu
                  geben. Als logisches als auch bitweises UND.
                  lol? wow gamecard 4 president.

                  Comment


                  • #10
                    Ich würde da ja mal im VB.Net Forum eruieren......
                    Christian

                    Comment

                    Working...
                    X