Autor Wątek:  Pole tekstowe w C++ [SOLVED]  (Przeczytany 4377 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Paczkuś

  • Wiadomości: 433
  • Mój nick się odmienia przez przypadki.
    • Zobacz profil
  • Otrzymane polubienia: 0
Pole tekstowe w C++ [SOLVED]
« dnia: 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.
« Ostatnia zmiana: 10 Grudnia 2012, 23:50:54 wysłana przez Paczkuś »
Solo oración!

Offline SKP

  • Zasłużony dla Symulatora
  • Wiadomości: 1690
  • Stwierdzanie Końca Pociągu
    • Zobacz profil
  • Otrzymane polubienia: 26
Odp: C++
« Odpowiedź #1 dnia: 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.
Scenarzysta teoretyk. Trasopisarz doświadczalny.

Offline firleju

  • Zasłużony dla Symulatora
  • Wiadomości: 1588
  • bawię się (w) exe...
    • Zobacz profil
  • Otrzymane polubienia: 120
Odp: C++
« Odpowiedź #2 dnia: 10 Grudnia 2012, 22:29:59 »
Zrób if'a z porównaniem string=="".
Skrypty do Blendera dostępne tutaj
W miarę aktualne wiki EXE wiki.eu07.es

Offline Paczkuś

  • Wiadomości: 433
  • Mój nick się odmienia przez przypadki.
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: C++
« Odpowiedź #3 dnia: 10 Grudnia 2012, 22:40:09 »
1. Niestety to musi być C++.
2. Z tym string też nie bangla.
Solo oración!

Offline libertyn89

  • Wiadomości: 2002
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: C++
« Odpowiedź #4 dnia: 10 Grudnia 2012, 22:42:28 »
A to na pewno jest std::string?
Pozdrawiam, Karol

Offline Paczkuś

  • Wiadomości: 433
  • Mój nick się odmienia przez przypadki.
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: C++
« Odpowiedź #5 dnia: 10 Grudnia 2012, 23:01:54 »
Tak, tylko, że teraz zawsze wyświetla mi, że pusty.
Solo oración!

Offline libertyn89

  • Wiadomości: 2002
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: C++
« Odpowiedź #6 dnia: 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?
Pozdrawiam, Karol

Offline Paczkuś

  • Wiadomości: 433
  • Mój nick się odmienia przez przypadki.
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: Pole tekstowe w C++
« Odpowiedź #7 dnia: 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.
Solo oración!

Offline libertyn89

  • Wiadomości: 2002
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Pole tekstowe w C++
« Odpowiedź #8 dnia: 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.
Pozdrawiam, Karol

Offline hunter

  • Zasłużony dla Symulatora
  • Wiadomości: 1126
    • Zobacz profil
    • kolej.banda.pl
  • Otrzymane polubienia: 5
Odp: Pole tekstowe w C++
« Odpowiedź #9 dnia: 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.
Z pozdrowieniami,
Grzegorz Durbajło

http://www.kolej.banda.pl/ - moje kolejowe zdjęcia.

Offline Paczkuś

  • Wiadomości: 433
  • Mój nick się odmienia przez przypadki.
    • Zobacz profil
  • Otrzymane polubienia: 0
Odp: Pole tekstowe w C++
« Odpowiedź #10 dnia: 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
« Ostatnia zmiana: 11 Grudnia 2012, 06:12:29 wysłana przez Rozi »
Solo oración!