Strona 1 z 1

[+] libgadu - otrzymywanie wiadomości w formie tekstowej

: 20 sierpnia 2009, 12:25
autor: IgiKoval
Witam. Ostatnio próbuję zrobić prosty program wykonujący w powłoce to, co dostanie ode mnie z gg. Mam coś takiego.

Kod: Zaznacz cały

if (event->type == GG_EVENT_MSG) {
      std::wcout<<L"Wiadomosc od: "<<(event->event.msg.sender)<<L"\n";
		std::wcout<<(event->event.msg.message)<<L"\n";
      }
Jednak, kiedy wysyłam wiadomość, dostaję tylko coś w stylu

Kod: Zaznacz cały

Wiadomość od: 4449442
0x84a59c8
Wiadomość od: 4449442
0x84a40d0
itp. Czemu tak się dzieje i co mam zrobić, żeby otrzymywać wiadomości w formie tekstowej?
Z góry dziękuję za pomoc.

: 21 sierpnia 2009, 12:26
autor: killanonimx
To mi wygląda na wskaźnik.
Spróbuj przez std::cout, albo przez

Kod: Zaznacz cały

printf("%s\n", event->event.msg.message);
Jeśli nie wyświetli wiadomości przez printf, a będzie będzie naruszenie ochrony pamięci (SIGSEGV), to będę musiał przejrzeć bibliotekę.

: 21 sierpnia 2009, 16:51
autor: IgiKoval
Printf, który podałeś, nie wyświetla nic.

: 21 sierpnia 2009, 17:48
autor: killanonimx
A spróbuj tak:

Kod: Zaznacz cały

printf("%s\n", (char*)event->event.msg.message);
Bo widzę że event->event.msg.message to unsigned char*.

: 21 sierpnia 2009, 19:40
autor: IgiKoval
Niestety dalj nic.

Edit: A jednak! Dzięki twojej podpowiedzi z (char*) udało mi się wyświetlić poprawnie tekst. Dzięki, już rozwiązane.

Edit: próbowałem wklepać to do mojego shella i niestety mam naruszenie ochrony pamięci...
Kod wygląda tak:

Kod: Zaznacz cały

strcpy(td, (char*)event->event.msg.message);
strcat(td, (char*)OUTSAVE);
system(td);
Gdzie OUTSAVE to

Kod: Zaznacz cały

#define OUTSAVE " > out"
Edit: Już sobie poradziłem. Miałem

Kod: Zaznacz cały

char* td;