Help! Eingabe bei Borland

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von elmo, 8. Februar 2006 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 8. Februar 2006
    Moin Leute ,
    ich hoffe ihr könnt mir weiterhelfen, ich will eine Eingabe machen bei der man höchstens 3 Zahlen eingeben kann und auch noch ein "-" davor , falls benötigt. Nach der Eingabe drückt man dann Enter und das Programm geht weiter, wenn ich dann eine bestimmte Taste drücke sollte ich wieder Werte eingeben können.Ich hatte mir da eine Fallabfrage vorgestellt so mit Switch und so. Aber leider hab ich null Ahnung wie ich das Realisieren soll, ich sitz da schon Tage an dem Prog un weis nich mehr weiter. Ich wäre euch sehr verbunden wenn ihr mir da weiterghelfen könntet.

    mfg Bierbaron
     

  2. Anzeige
  3. #2 8. Februar 2006
    Wenn du ein Edit-feld hast, wo die Zahl rein soll, dass schau dir mal das Event "OnKeyPress" an, diese Prozedur wird ausgeführt, wenn eine taste im Editfeld gedrückt wird und bevor der inhalt des tastenanschlags eingefügt wird.

    also kannst du erst schauen was im tastenanschlagg steht und mit "Key=0" kannst du simulieren, dass überhaupt keine taste gedrückt wurde.

    btw. der Code ist Copy&Paste freundlich, du brauchst nicht mal den namen des Edit-Feldes im Code ändern, der wird automatisch übermittelt mit "Sender", aber das ist ne andere geschichte :D

    an alle PROgrammierer: das kann man bestimmt eleganter lösen, aber ich denke es erfüllt seinen zweck

    an Bierbaron: ich hoffe, das ist was du wollstest :)

    Code:
    void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    {
     if (int(Key)!=8) { // Key "8" ist Backspace, also wenn Backspace gedrückt wird läuft alles normal ab 
     if ((((TEdit*)Sender)->Text.Length()==3) && (((TEdit*)Sender)->Text[1]!='-')) Key=0; // so ... wenn nicht Backspace gedrückt wurde, dann prüfen ob die der text im Edit-feld schon 3 Stellen lang ist, vorrausgesetzt an erster stelle steht kein minus
     else if ((((TEdit*)Sender)->Text.Length()==4) && (((TEdit*)Sender)->Text[1]=='-')) Key=0; // wenn das oben nicht zutrifft steht möglicherweise ein minus an erster stelle also prüfen wird das und wenn das der fall ist prüfen wir noch, ob der text schon länger als 4 zeichen ist
     if ((((TEdit*)Sender)->Text.Length()>0) && (!isdigit(Key))) Key=0; // prüfen, ob im Edit-feld schon etwas steht, wenn ja prüfen ob eine taste gedrückt wurde die eine zahl ist
     else if (int(Key)==13) { // wenn die taste die gedrückt wurde keien zahl ist prüfen, ob es die enter-taste war, wenn ja mit irgendetwas forfahren ;D
     // mit irgendwas fortfahren
     }
     }
    }
    //---------------------------------------------------------------------------
     
  4. #3 9. Februar 2006
    JO, is zwar schunn nice, aber leider hab ich für die Aufgabe nur die Standartbibliotheken zur verfügung, da klappt das nit so.
    Aber trotzdem thx , ich geb dir ma en 10ner für deine hilfe.

    Ich suche daher immanoch nach einer Lösung...

    mfg Bierbaron
     
  5. #4 12. Februar 2006
    Für den Fall, dass das Thema noch aktuell ist musst du mir das mal genauer erklären.
    1.) ist das Visual C++ oder Konsole?
    2.) sind das drei getrennte zahlen, die auch negativ sein können, ja?! Wie lang sind die Zahlen? Oder ist das eine dreistellige Zahl?
     
  6. #5 13. Februar 2006
    Ich nehm Borland 4.5 , also nix Konsole oda Visual c#,^^
    Der Benutzer soll x und y Koordinaten eingebn könen , also auch negative Zahlen , können 2 oda 3 Stellig sein.
     
  7. #6 20. Februar 2006
    Weis denn keiner Rat ? Ich brauch das dringend , also bitte bitte , schaut ma ob ihr da weiterwisst.

    mfg Bierbaron
     
  8. #7 22. Februar 2006
    Ich würd dir ja gerne helfen, wenn ich dein Problem verstehen würde...

    Wenn es darum geht, dass du nur 2 bzw. drei Zahlen und ein - einlesen darfst und du kannst di conio.h benutzen, dann nehm einfach die getche()-Funktion.
    Die liefert dir jeweils einen tastenanschlag und gibt ihn auch auf dem Bildschirm aus, in einer Schleife stellst du dann sicher, dass der User das mind. 2 mal mach und max. 3 mal bzw. 4 mal, wenn das erste Zeichen eine "-" war.

    Die Überprüfung, ob auch Zahlen eingeben wurden kannst du anhand der ASCII Tabelle machen.
     

  9. Videos zum Thema
Die Seite wird geladen...