1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

visual c++ - int/double einlesen

Discussion in 'Programmieren' started by JAson P., Sep 29, 2008.

Thread Status:
Not open for further replies.
  1. JAson P.

    JAson P. Byte

    hallo,
    ich hab da mal nen problem, ich schreibe zur zeit ein programm mit c++, dabei muss ich einen int/double wert einlesen. Ich habe es schon mit TextBox und Maskedtextbox versucht, aber dort hat er mir immer nur Strings eingelesen. Jetzt wollte ich den String koventieren (hätte ja klappen können) und er zeigt an dass er das nicht koventieren könne. Auch mit einem array<int> Aufruf geht da gar nichts!
    Welches Steuerelement soll ich nehmen? Oder wie kann ich sonst int-Werte einlesen?
    Danke im voraus
    JAson
     
  2. kazhar

    kazhar Viertel Gigabyte

    das steuerelement ist doch komplett egal. da kommt immer ein string raus.

    du musst den string nur entsprechend vorbereiten, dass die umwandlungs function ihn auch als zahl "erkennt" (eventuelle leerzeichen entfernen, kommas durch punkte ersetzen,...)

    wenn du von vorne herein einen "sauberen" wert im string stehen haben willst wird dir nichts anderes übrig bleiben als ein neues control aus der inputbox abzuleiten, die die eingaben überwacht und nur gültige zahlen zulässt.
     
  3. Fettbemme

    Fettbemme Halbes Megabyte

    Das einfachste wäre ein normales Edit Feld zu nehmen, und dann mit atoi oder atof den String konvertieren. Wenn die konvertierung klappt, dann war das format gültig, sonst nicht.
    Es gibt z.B. auch noch strtod, strtol für die Konvertierung. Welche Dir am besten gefällt überlasse ich Dir.
     
  4. JAson P.

    JAson P. Byte

    @kahar
    -Dies habe ich ja durch ein masekdtextfeld gesichert. Man kann bis zu 4 stelligen Zahlen eingeben und bis zu 3 kommastellen.
    ok danke aber genau hab ich noch nicht verstanden was ich machen soll.
    @Fettbemme , die events, die du da genannt hast.. brauche ich da ein bestimmtest namespace und die sind werte von...?
     
  5. kazhar

    kazhar Viertel Gigabyte

    hast du dir den eingelesenen (möglicherweise ungültigen) string mal zur prüfung ausgeben lassen?

    vielleicht ist es ja auch nur ein ganz banaler programmierfehler (falscher variablen typ...)
     
  6. Fettbemme

    Fettbemme Halbes Megabyte

    Das sind gar keine Events, das sind Funktionen, aus der "stdlib.h". Da Du ja VC verwendest bietet sich das an. Einfach im MSDN nach den Funktionsnamen sudie ich Dir genannt habe mal suchen... :rolleyes:
     
    Last edited: Sep 30, 2008
  7. JAson P.

    JAson P. Byte

    ok danke, ich hab erst die grundlagen drauf, hast die irgendeinen tipp wo/wie ich mich weiterbilden kann in vc++? oder reicht die msdn library?
     
  8. JAson P.

    JAson P. Byte

    @kazhar:
    das ist sowieso ein teil des programms.
     
  9. JAson P.

    JAson P. Byte

    Code:
    private: System::Void maskedTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
    String^ f = this->maskedTextBox1->Text;
    	this->label3->Text::set (f) ;
    	}
    Dies ist mein code. also ich will dann den String^ f in einen Double-Wert, wenn ich das eingebe:
    Code:
    double z = f::strtod ();
    sagt er "kann nicht in double konventiert werden", und das f ein Namespace oder eine Klasse sein muss. Aber ich glaub das ist falsch ...
     
    Last edited: Oct 1, 2008
  10. Fettbemme

    Fettbemme Halbes Megabyte

    Du solltest Dir für Deine VC++ Version ein Einsteigerbuch kaufen, das die Themen relativ breit abdeckt. Für die 2003er, 2005er und 2008er Version sollte es eigentlich genug gute Bücher geben.
    Ich würde aber eben ein einsteiger und kein "Profibuch" nehmen. In Profibüchern fehlen leider oft die Grundlagen, die evtl. noch dem Anfänger fehlen.
    Die MSDN sehe ich selber nicht unbedingt geeignet für das Lernen von VC++. Später ist die MSDN Doku das Nachschlagewerk, um zu Wissen wie die Paramerter von der Funktion XYZ aussehen und funktionieren.
     
  11. Fettbemme

    Fettbemme Halbes Megabyte

    Noch ein Nachtrag, da ich sehe Du hast vor meinem Posting noch etwas geschrieben. Da Du ja so wie es aussieht .NET verwendest solltest Du bei Deinem Buch da schauen, dass Du ein gutes C++ .NET Einstiegsbuch suchst.
    Visual C++ Bietet halt zwei Wege, den Managed (.NET) und Unmanaged (Native Code) Weg.
     
  12. JAson P.

    JAson P. Byte

    ich bin gerade bei Einstieg in Visual C++ 2005/Galileo Computing von Andre Willms...
    Und was sagst du zu meinem code? (siehe #9):confused:
     
  13. Fettbemme

    Fettbemme Halbes Megabyte

    Nun ob das Ereignis "TextChanged" das richtige ist weis ich natürlich nicht. Weil dieses Ereignis tritt ja auf wenn sich der Text in der Editzeile ändert.

    Jetzt möchtest Du z.B. 123.4567 eingeben. Jetz tritt nach jedem eingegebenen Zeichen das Ereignis auf. Ich denke es wäre vielleicht geschickter eine Kombination aus Editfeld und Schaltfläche. Du gibst Deine Zahl ein, und löst das Ereignis mit der Schaltfläche aus.

    Das Verhalten das ich meine ist z.B. im "Datei speichern als" Dialog verwendet. Du gibst den Dateinamen ein, und wenn Dir der Name passt drückst Du Save.

    Das was ich aber eben geschildert habe ist mehr eine "Konzeptfrage" oder eine Frage wie man etwas bedienen möchte als zu sagen das sei "Falsch" oder "schlecht".
     
  14. JAson P.

    JAson P. Byte

    ja, keine schlechte idee... ich bau mal eine schaltfläche ein und versuche es dann,...mal sehen-schreib gleich
     
  15. JAson P.

    JAson P. Byte

    so das hat alles nichts gebracht, aber ich habe jetzt vom informatiker in derf firma in der in praktikum zu zeit habe, eine funktion bekommen, die jetzt klappt^^ danke euch allen!:rolleyes:
     
  16. Fettbemme

    Fettbemme Halbes Megabyte

    :o
    Na komm erzähl mal mehr über diese "Funktion" ....
     
Thread Status:
Not open for further replies.

Share This Page