- Symulator MaSzyna -

Hyde Park => Inne niekolejowe => Wątek zaczęty przez: Paczkuś w 10 Grudnia 2012, 22:15:42

Tytuł: Pole tekstowe w C++ [SOLVED]
Wiadomość wysłana 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.
Tytuł: Odp: C++
Wiadomość wysłana przez: SKP w 10 Grudnia 2012, 22:22:46
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.
Tytuł: Odp: C++
Wiadomość wysłana przez: firleju w 10 Grudnia 2012, 22:29:59
Zrób if'a z porównaniem string=="".
Tytuł: Odp: C++
Wiadomość wysłana przez: Paczkuś w 10 Grudnia 2012, 22:40:09
1. Niestety to musi być C++.
2. Z tym string też nie bangla.
Tytuł: Odp: C++
Wiadomość wysłana przez: libertyn89 w 10 Grudnia 2012, 22:42:28
A to na pewno jest std::string?
Tytuł: Odp: C++
Wiadomość wysłana przez: Paczkuś w 10 Grudnia 2012, 23:01:54
Tak, tylko, że teraz zawsze wyświetla mi, że pusty.
Tytuł: Odp: C++
Wiadomość wysłana przez: libertyn89 w 10 Grudnia 2012, 23:11:04
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?
Tytuł: Odp: Pole tekstowe w C++
Wiadomość wysłana przez: Paczkuś w 10 Grudnia 2012, 23:30:47
Przez GetWindowText(hTekst,Bufor,600); zrzucam do Bufor typu LPSTR. A potem na końcu c=Bufor+c; I działa jak chce.
Tytuł: Odp: Pole tekstowe w C++
Wiadomość wysłana przez: libertyn89 w 10 Grudnia 2012, 23:33:47
A czym jest c? Jeśli char * to nie ma co się dziwić - dodajesz wskaźniki... Najlepiej to pokaż kod.
Tytuł: Odp: Pole tekstowe w C++
Wiadomość wysłana przez: hunter w 10 Grudnia 2012, 23:39:31
if (String.IsEmpty()==true) ?
EDIT: To w Builderze. http://www.cplusplus.com/reference/string/string/empty/ - tu masz funkcje do std::string.
Tytuł: Odp: Pole tekstowe w C++
Wiadomość wysłana przez: Paczkuś w 10 Grudnia 2012, 23:50:23
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