- Symulator MaSzyna -
Hyde Park => Inne niekolejowe => Wątek zaczęty przez: Paczkuś w 10 Grudnia 2012, 22:15:42
-
Wiem, że to nie jest forum pomocy szkolnej, ale mam drobny problem.
Próbuję rozgryźć pewne zadanie i nie ogarniam. Mam pole tekstowe. Jeśli jest puste to zrobić X, jeśli jest cokolwiek wpisane to wypisać w MessageBoxie ten tekst.
Największym problemem jest sprawdzenie tej pustości. Próbowałem skopiować tekst (za pomocą GetWindowText) do tablicy i sprawdzić czy "sizeof(tab) == 0", ale sizeof(tab) wychodzi zawsze dodatni.
-
Musisz to zrobić koniecznie w C++? Jakby język był dowolny, to z C# nie byłoby problemu.
W C# to będzie coś takiego:
if(!String.IsNullOrEmpty(textBox1.Text))
MessageBox.Show(textBox1.Text);
Natomiast w C++ się za bardzo nie orientuję, lecz na wikipedii znalazłem, że metoda empty() klasy string zwraca true, jeśli jest string jest pusty. Możesz sprawdzić czy działa.
-
Zrób if'a z porównaniem string=="".
-
1. Niestety to musi być C++.
2. Z tym string też nie bangla.
-
A to na pewno jest std::string?
-
Tak, tylko, że teraz zawsze wyświetla mi, że pusty.
-
Zajrzałem do dokumentacji GetWindowText (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633520(v=vs.85).aspx) i wynika z niej, że funkcja ta zwraca LPTSTR. Jest to chyba jakaś odmiana standardowego char *, a to std::stringiem nie jest. Trzeba spróbować z rzutowaniem. W jaki sposób tworzysz std::string z tego GetWindowText?
-
Przez GetWindowText(hTekst,Bufor,600); zrzucam do Bufor typu LPSTR. A potem na końcu c=Bufor+c; I działa jak chce.
-
A czym jest c? Jeśli char * to nie ma co się dziwić - dodajesz wskaźniki... Najlepiej to pokaż kod.
-
if (String.IsEmpty()==true) ?
EDIT: To w Builderze. http://www.cplusplus.com/reference/string/string/empty/ - tu masz funkcje do std::string.
-
I w sumie to wyszło, że trzeba użyć GetWindowTextLength(hTekst). Przepraszam za zawrócenie głowy. Mój wzrok nie przyjmował leżących obok siebie w dokumentacji funkcji. Jeszcze raz przepraszam i dziękuję za poświęcony mi czas.
Zamykam.
Rozi