long to string
-
Gib mal nen Tipp wie man zur FAQ kommt. Ein Klick drauf und man kommt ins Forum, meinst Du das? Das Problem an dem Forum ist, dass man leider keine Zeichenstring angeben kann, wie z.B. "long to string", dann findet er treffer die damit nicht szu tun haben. Und AND verknüpft reicht ja auch nicht aus, weil long und string eh überall vorkommen...
Kann ich Dir jetzt schon garnicht mehr sagen was ich alles versucht habe. Hab mir sogar Methoden runtergeladen, die das können sollen. Dabei muss es da doch was ganz einfaches geben!

-
Ok, habs gefunden und werd das mal probieren, danke!
-
Super! Hat funktioniert!

Google kann man immer mehr knicken habe ich das Gefühl, soviele irrelevante Treffer hatte ich ja selten, dabei ging es doch so einfach!
-
Ich will jetzt aus einer ComboBox nur den ausgewählten Text als int umwandeln. In Java ginge dies so:
int anzahl = new Integer(jComboBox.getSelectedItem().toString()).parseInt();In C++/ATL/WTL krieg ichs nicht hin. Ich habs z.B. auch so versucht:
LPTSTR s; m_ComboBoxWerte.GetLBText(m_ComboBoxWerte.GetCurSel(), s); CString s2 = s; int anzahl = atoi(s2);Allerdings stürzt er dann immer zur Laufzeit ab bei der Zeile:
int anzahl = atoi(s2);Kann mir vielleicht jemand helfen? Vielen Dank!
-
Da ist es eher erstaunlich, daß du überhaupt bis zum atoi()-Aufruf kommst. s ist nicht initialisiert und darum schreibst du deine Daten irgendwo in den Speicher.
(Tip: Die Methode GetLBText gibt es auch in einer Version, die einen CString& schluckt)
-
Ups, stimmt!
Aber auch die Änderung zu:LPTSTR s = ""; m_ComboBoxWerte.GetLBText(m_ComboBoxWerte.GetCurSel(), s); CString s2 = s; int anzahl = atoi(s2);Hilft nichts. Die andere Methode habe ich auch versucht anzuwenden, aber auch das hab ich nicht hinbekommen...
Noch nen Tipp?
-
Stürzt er beim atoi ab? Ist es eine Null pointer exception?
-
Ja, String-Literale darf man normalerweise nicht vom Programm aus überschreiben. Entweder du nimmst ein Array
TCHAR s[len];(den Wert von len mußt du groß genug ansetzen, um Platz zu haben) oder du holst dir den nötigen Speicher vom HeapLPTSTR s = new TCHAR[m_ComboBoxWerte.GetLBTextLen(m_ComboBoxWerte.GetCurSel())+1];.PS: Die Umwandlung von LPTSTR nach CString (s2=s) und wieder zurück (implizit beim Funktionsaufruf) ist übrigens unnötig

-
Danke euch beiden. Jetzt bekomm ich eine Zeile später nen Fehler. Und das liegt allerdings daran, dass anzahl = 0 ist, obwohl ich in der ComboBox z.B. "10" drinstehen habe. Also liegt Fehler jetzt in dem Auslesen des Textes aus der ComboBox. Aber die Methode müsste doch die richtige sein oder?
-
Ist denn der Eintrag mit der 10 überhaupt ausgewählt? (oder auf deutsch: Was für einen Wert liefert GetCurSel() zurück?)
-
Stimmt das sollte ich mal schauen ^^.
Also:LPTSTR s = ""; int sel = m_ComboBoxWerte.GetCurSel(); m_ComboBoxWerte.GetLBText(sel, s); CString s2 = s; int anzahl = atoi(s2);In sel steht eine 3 aber in anzahl eine 0! Und der vierte Eintrag ist ausgewählt (also index 3) und dort steht in der ComboBox eine "100".
-
es interessiert doch nur was in s2 drin steht.
-
Was sagt der Debugger?
PS: Und wir sind wieder beim Anfang - du hast keinen verwertbaren Speicherplatz bereitgestellt, wo der String-Inhalt reingepackt werden könnte (erstaunlich, daß Windows dich nicht mit einer Access Violation darauf hinweist):
int sel = m_ComboBoxWerte.GetCurSel(); LPTSTR s = new TCHAR[m_ComboBoxWerte.GetLBTextLen(sel)+1]; m_ComboBoxWerte.GetLBText(sel, s); int anzahl = atoi(s); delete[]s;
-
plizer schrieb:
Ich will jetzt aus einer ComboBox nur den ausgewählten Text als int umwandeln. In Java ginge dies so:
int anzahl = new Integer(jComboBox.getSelectedItem().toString()).parseInt();will mal erbsen zählen. in java macht man das so:
int anzahl = Integer.parseInt(jComboBox.getSelectedItem().toString());
-
thordk schrieb:
plizer schrieb:
Ich will jetzt aus einer ComboBox nur den ausgewählten Text als int umwandeln. In Java ginge dies so:
int anzahl = new Integer(jComboBox.getSelectedItem().toString()).parseInt();will mal erbsen zählen. in java macht man das so:
int anzahl = Integer.parseInt(jComboBox.getSelectedItem().toString());Stimmt :-). Ich meinte auch intValue() statt parseInt(). Aber gut, das new kann man sich natürlich auch sparen. Tja, es ist soweit, bald kann ich kein C++ und auch kein Java mehr, buhu...
@CStoll: Es läuft jetzt, vielen Dank! Aber ich muss sagen, dass man schon einiges auf den Kasten haben muss, um genau drauf zu kommen. Dabei ging es doch "nur" um das Auslesen eines Textes aus der ComboBox. Du hast mir einige Stunden erspart, vielen Dank!

-
plizer schrieb:
@CStoll: Es läuft jetzt, vielen Dank! Aber ich muss sagen, dass man schon einiges auf den Kasten haben muss, um genau drauf zu kommen. Dabei ging es doch "nur" um das Auslesen eines Textes aus der ComboBox. Du hast mir einige Stunden erspart, vielen Dank!

Daß man bei C-String (char-Array) Funktionen üblicherweise selber den nötigen Speicher bereitstellen sollte, gehört eigentlich zu Grundwissen - dacht ich zumindest
