Announcement

Collapse
No announcement yet.

Aus UnicodeString Hexadezimalzahl -> Dezimalzahl machen

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

  • Aus UnicodeString Hexadezimalzahl -> Dezimalzahl machen

    Moin Moin, ich tüftel schon den ganzen Tag an der Lösung des Problems.

    Ich will mit dem RAD Studio XE5 in C++ ein TEdit auslesen, dessen Inhalt aus 3 Zeichen bestehen soll (genau 3). Der Inhalt kann z B "9AF" sein. Dieses "9AF" möchte ich als dezimale Zahl 2.479 als integer im Programm weiternutzen.
    Gibt es da eine Funkion die man nutzen kann? Ich hab schon gegoogelt, finde aber nichts was funktioniert für diese Anwendung

    Code:
    	UnicodeString zeichenkette = Edit_Senden->Text ;       // Als String speichern
    	int laenge =  zeichenkette.Length();                   // Länge bestimmen (Sollte 3 sein)
            int dezimalzahl = 0;
    	int zahl[3];
    
    	for (int i = 1; i < laenge; i++) {
    			switch (zeichenkette[i]) {
    			case '0':
    				zahl[i] = 0;
    				break;
    			case '1':
    				zahl[i] = 1;
    				break;
    			case '2':
    				zahl[i] = 2;
    				break;
    			case '3':
    				zahl[i] = 3;
    				break;
    			case '4':
    				zahl[i] = 4;
    				break;
    			case '5':
    				zahl[i] = 5;
    				break;
    			case '6':
    				zahl[i] = 6;
    				break;
    			case '7':
    				zahl[i] = 7;
    				break;
    			case '8':
    				zahl[i] = 8;
    				break;
    			case '9':
    				zahl[i] = 9;
    				break;
    			case 'A':
    				zahl[i] = 10;
    				break;
    			case 'B':
    				zahl[i] = 11;
    				break;
    			case 'C':
    				zahl[i] = 12;
    				break;
    			case 'D':
    				zahl[i] = 13;
    				break;
    			case 'E':
    				zahl[i] = 14;
    				break;
    			case 'F':
    				zahl[i] = 15;
    				break;
    		default:
    		break;
    			;
    		}
    	}
    	// Zahl zusammenrechnen
    
    	dezimalzahl = zahl[0]* 256 + zahl[1] * 16 + zahl[2];

    So hatte ich mir das gedacht, aber so funktioniert es nicht

    ID.JPG

  • #2
    Ohne Syntaktische Prüfung (Komm aus der Pascal-Ecke)

    Code:
    UnicodeString zeichenkette = '$' + Edit_Senden->Text
    dezimalzahl  = StrToInt(zeichenkette)

    Comment


    • #3
      int zahl=strtol(EingabeString.c_str(),NULL,16);
      Christian

      Comment


      • #4
        Originally posted by Christian Marquardt View Post
        int zahl=strtol(EingabeString.c_str(),NULL,16);
        Moin,
        das funktioniert so lieder nicht auf Anhieb, der Compiler gibt folgende Fehler aus:

        [bcc32 Fehler] CAN_Steuerung.cpp(178): E2034 Konvertierung von 'wchar_t *' nach 'const char *' nicht möglich
        Vollständiger Parser-Kontext:
        CAN_Steuerung.cpp(172): Analyse: void _fastcall TForm1::Button_SendenClick(TObject *)

        [bcc32 Fehler] CAN_Steuerung.cpp(178): E2342 Keine Übereinstimmung des Parametertyps '__s' ('const char *' erwartet, 'wchar_t *' erhalten)
        Vollständiger Parser-Kontext
        CAN_Steuerung.cpp(172): Analyse: void _fastcall TForm1::Button_SendenClick(TObject *)

        Comment


        • #5
          http://docwiki.embarcadero.com/RADSt...Strtol,_wcstol

          wcstol
          Christian

          Comment


          • #6
            Originally posted by Bernhard Geyer View Post
            Ohne Syntaktische Prüfung (Komm aus der Pascal-Ecke)

            Code:
            UnicodeString zeichenkette = '$' + Edit_Senden->Text
            dezimalzahl  = StrToInt(zeichenkette)
            Moin Moin, bei diesem Ansatz liefert der Compiler einen Mehrdeutigkeitsfehler:
            [bcc32 Fehler] CAN_Steuerung.cpp(174): E2015 Mehrdeutigkeit zwischen '_fastcall System::+(int,const System::Currency &) at f:\program files (x86)\embarcadero\radstudio\12.0\include\windows\r tl\DE\syscurr.h:201' und '_fastcall System::+(int,const System::Variant &) at f:\program files (x86)\embarcadero\rad studio\12.0\include\windows\rtl\DE\sysvari.h:3562'
            Vollständiger Parser-Kontext
            CAN_Steuerung.cpp(172): Analyse: void _fastcall TForm1::Button_SendenClick(System::TObject *)

            Comment


            • #7
              Originally posted by Christian Marquardt View Post
              Danke, so funktioniert es :-)

              Comment

              Working...
              X