Probleme mit ToInt()



  • Halle habe folgenenden Code:

    AnsiString c = "A";
    int a;
    a = c.ToInt();
    

    sieht zwar komisch aus aber ich habe es zum testen so gemacht.
    Es kommt jedes mal der Fehler das "A" kein Integer sei... und zwar in der 3. Zeile.

    ich verzweifel echt, oder liegt es daran das es so spät is und ich den fehler einfach nicht finde ?!?



  • Hi!

    A ist halt nunmal kein Integer. Versuchs mit Zahlenwerten.

    grüße



  • Was soll das eigentlich werden? Willst du hier die Zahl 65 an "a" zuweisen oder wofür soll das gut sein?

    PeterPan1 schrieb:

    Halle habe folgenenden Code:

    AnsiString c = "A";
    int a;
    a = c.ToInt();
    


  • hi,

    nein, ich will einen String zerlegen und als int an

    keybd_event(VK_TAB, 0, 0, 0);
    keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);
    

    wo das vk_tab is, ist dann halt der Zahlenwert des entsprechenden Buchstabe.

    Es soll halt eine eingabe in einem Browser simuliert werden. Website aufrufen und zum Feld (per Tab springen) funktioniert auch einwandfrei.

    oder gibt es vielleicht auch andere möglichkeiten den Inhalt eines Edit Objekts an ein Textfeld in einer Website zu senden bzw einzugeben?



  • Hallo

    das gehört ins Builder-Subforum.

    AnsiString::ToInt() versucht den String insgesamt lexikalisch als Zahl zu interpretiren, und "a" ist nun mal keine Zahl, sondern bei "11" würde es den Integer-Wert 11 zurückgeben.
    Was du brauchst ist eine aufschlüsselung der einzelnen Char-Werte. Und die bekommst du mit [] was du dann gleich an SendMessage bekommen kannst.

    // Wenn c mindestens ein  Zeichen enthält, erstes Zeichen per SendMessage
    // versenden. Achtung : AnsiString fängt mit dem Index 1 an, nicht 0
    if (c.Length() > 0)
    {
      keybd_event(c[1], 0, 0, 0);
      keybd_event(c[1], 0, KEYEVENTF_KEYUP, 0);
    }
    

    Das ist übrigens auch alles in der BCB-Hilfe und im BCB-FAQ/Tutorial hier in Forum zu finden.

    bis bald
    akari



  • ah ok jetzt gibt es zumindest keine fehler mehr. danke schonmal!

    habe auch den Beitrag dazu im FAQ gefunden und deine antworten dazu.

    leider ist dort auch noch die frage offen warum man eine 1 bekommt bei "A" oder "a".

    Also wenn ich z.b. "Abc" eingebe, bekomme ich in das Textfeld vom Browser 123.

    es wird auch nicht unterschieden ob groß- oder kleinbuchstabe. jeweils nur die pos im alphabet...

    aber ich brauche ja 1 zu 1 den text wie er bei mir im Edit Objekt ist.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • keiner ne ahnung ?



  • Versuchs doch somit:

    AnsiString test = "test"; 
         char x = test[1];
         int a = int(x);
         Form1->Caption = a;
    

    Der Code liefert den ASCII-Wert zurück. Mit Deiner Tastendrucksimulation benötigst Du aber die Virtuellen Tastencodes:

    Virtuelle Tastaturcodes
    Dezimal Hexadezimal Erklärung
    03 03 STRG + PAUSE Tasten
    08 08 BACKSPACE Taste
    09 09 TAB Taste
    13 0D RETURN Taste
    16 10 SHIFT Taste
    17 11 STRG Taste
    18 12 ALT Taste
    19 13 PAUSE Taste
    20 14 CAPS LOCK Taste
    27 1B ESC Taste
    32 20 LEERTASTE
    33 21 BILD nach oben Taste
    34 22 BILD nach unten Taste
    35 23 ENDE Taste
    36 24 POS1 Taste
    37 25 Cursor Taste links
    38 26 Cursor Taste rechts
    39 27 Cursor Taste oben
    40 28 Cursor Taste unten
    44 2C DRUCK Taste
    45 2D EINFG Taste
    46 2E ENTF Taste
    48 30 Taste0
    49 31 Taste1
    50 32 Taste2
    51 33 Taste3
    52 34 Taste4
    53 35 Taste5
    54 36 Taste6
    55 37 Taste7
    56 38 Taste8
    57 39 Taste9
    65 41 Taste A
    66 42 Taste B
    67 43 Taste C
    68 44 Taste D
    69 45 Taste E
    70 46 Taste F
    71 47 Taste G
    72 48 Taste H
    73 49 Taste I
    74 4A Taste J
    75 4B Taste K
    76 4C Taste L
    77 4D Taste M
    78 4E Taste N
    79 4F Taste O
    80 50 Taste P
    81 51 Taste Q
    82 52 Taste R
    83 53 Taste S
    84 54 Taste T
    85 55 Taste U
    86 56 Taste V
    87 57 Taste W
    88 58 Taste X
    89 59 Taste Y
    90 5A Taste Z
    96 60 Numerisches Tastenfeld, Taste 097 61 Numerisches Tastenfeld, Taste 1
    98 62 Numerisches Tastenfeld, Taste 299 63 Numerisches Tastenfeld, Taste 3
    100 64 Numerisches Tastenfeld, Taste 4101 65 Numerisches Tastenfeld, Taste 5
    102 66 Numerisches Tastenfeld, Taste 6103 67 Numerisches Tastenfeld, Taste 7
    104 68 Numerisches Tastenfeld, Taste 8105 69 Numerisches Tastenfeld, Taste 9
    106 6A Multiplikationstaste
    107 6B Additionstaste
    108 6C Subtraktionstaste
    109 6D Divisionstaste
    112 70 F1 Taste
    113 71 F2 Taste
    114 72 F3 Taste
    115 73 F4 Taste
    116 74 F5 Taste
    117 75 F6 Taste
    118 76 F7 Taste
    119 77 F8 Taste
    120 78 F9 Taste
    121 79 F10 Taste
    123 7A F11 Taste
    124 7B F12 Taste
    144 90 NUM LOCK Taste
    145 91 SCROLL LOCK Taste
    

    Zum Gross-und Kleinschreiben musst Du dann mit der Feststelltaste arbeiten.

    Ich hoffe, dass Dich das weiterbringt.
    Gruss



  • Es soll halt eine eingabe in einem Browser simuliert werden. Website aufrufen und zum Feld (per Tab springen) funktioniert auch einwandfrei.

    oder gibt es vielleicht auch andere möglichkeiten den Inhalt eines Edit Objekts an ein Textfeld in einer Website zu senden bzw einzugeben?

    Es können alle Formulare und Felder einer Website im Browser festgestellt werden. Entweder mit dem Namen oder einer Nummer ansprechen und dort den Text eingeben.

    Z.B. über die Document Eigenschaft des TCppWebBrowser lassen sich alle Formulare und Formularobjekte ermitteln und Werte auslesen, sowie auch schreiben.

    IHTMLDocument2
    IHTMLElementCollection
    IHTMLFormElement


Anmelden zum Antworten