[ Hallman @ 21.02.2004. 14:01 ] @
Problem je sledeci: Koristim obicnu CSocket klasu kako bih napravio program za otvaranje sadrzaja mail servera. Znaci sve lepo radi, konektujem se, aktivira se "OnRecieve" event, kreiram "CString data" pa zatim pokusam da preuzmem sarzaj sledecom metodom (naravno unutar OnRecieve): ret = this->Receive (data.GetBuffer (256), 256); Ja dobijem ono sto sam ocekivao "+OK", ali nije bas tako. Verovatno zbog memorije, na kraju stringa (bilo CString ili obican char, sa pokazivacem ili ne... opet isto) dobijem ovo: +OK ĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚ Sto je vrlo nezeljen rezultat, ovo ispod je spojeno sa stringom ali nije deo njega, za duzinu stringa mi daje 0, standardne funkcije klase CString ne funkcionisu (ne rade bas nista). Duzina te mrlje ispod varira u zavisnosti od same velicine promenljive, i od 2. parametra funkcije Recieve (256 u ovom slucaju). Znam c++ tek neke dve nedelje, poznajem turbo c, i vb odlicno, pa me ovo zbunjuje, jer se ta mrlja uvek prikazuje zajedno sa stringom ali ne postoji u njemu (ne moze se ukloniti nikako). Cak kada kopiram taj CString u nesto drugo (recimo char[3]) dobijam ISTO to, iako taj char ima samo 3 slobodna mesta. Mozda je ovo standardna glavobolja c++ stringova, a mozda i neki winsocket bug zbog loseg rukovanja (samo sam ga napravio, i konektovao se, sta lose moze da bude...). A povratna vrednost funkcije daje duzinu stringa (5 tj. 3 vidljiva karaktera ovde), ali ne vredi kad mi ubaci ovaj "bug" us string, ironija. POMAGAJTE ! |