NAT Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 вот си задрал то с типами даных...как сравнить две строки? делаю так:char *test;bool b;cin >> test;if(strcmp(test,"dead")) b = true;компилится, но падает после ввода в test Ссылка на комментарий
0xDEADBEEF Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 NATПричем тут типы? Память кто будет выделять?Юзай лучше std::string и вообще STL, а то какаято каша выходит. Да удобнее/безопастнее/быстрее/лучше с ним. Ссылка на комментарий
Lakers Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 а вот не могу понять, перегружаю операцию >> для istream и после вызова перегруженной функции программа падает,почему? Ссылка на комментарий
0xDEADBEEF Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 LakersКод в студию! Ссылка на комментарий
Lakers Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 не там от конкретного кода независит. но примерно вот так:ostream operator<<(ostream& cout,t& a){...} Ссылка на комментарий
0xDEADBEEF Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 Если я не ошибаюсь нада возвращать ссылку на поток. Ссылка на комментарий
Lakers Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 не не ну это конечно.программа падает и полностью закрывается как только выполнение переходит на перегруженную функцию.и сама среда тоже закрывается. Ссылка на комментарий
0xDEADBEEF Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 Значит ошибка в кодеЛибо у тебя сидибилдер)) Ссылка на комментарий
Lakers Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 видимо в коде.просто много рас пробовал в разных задачах это сделать и все время одна и таже ошибка. Ссылка на комментарий
0xDEADBEEF Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 Стримы нельзя копировать, можно только связывать буферы (2мя способами), такчто там должна быть ссылка Ссылка на комментарий
Lakers Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 в смысле в функции должна быть *this или что? Ссылка на комментарий
0xDEADBEEF Опубликовано 6 апреля, 2009 Жалоба Поделиться Опубликовано 6 апреля, 2009 Нельзя копировать - это значит у него скрыт конструктор копирования и оператор присваивания, т.е. другой такойже создать нельзя, а значит передаватся в/из функции он может только по ссылке.В данном случае это компилится не будетostream operator<<(ostream& out,t& a){...}должно быть такostream& operator<<(ostream& out,t& a){...} Ссылка на комментарий
NAT Опубликовано 7 апреля, 2009 Жалоба Поделиться Опубликовано 7 апреля, 2009 Причем тут типы? Память кто будет выделять?Юзай лучше std::string и вообще STL, а то какаято каша выходит. Да удобнее/безопастнее/быстрее/лучше с ним.вот я грю тупые типы, зачем тогда char нужен? если можно юзать стринг?ps;я новичок просто Ссылка на комментарий
D3V3L0p3R Опубликовано 21 апреля, 2009 Жалоба Поделиться Опубликовано 21 апреля, 2009 Беда текст не перегоняется, помогите плиз. код первый это сервер. второй код это клиент.Между ними отправка сообщений через send и recv. не доходят собака.#include #pragma hdrstop#include "Unit1.h"#include #include //---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;int s1,n;AnsiString s;WSADATA WsaData;SOCKET socket1,socket2;SOCKADDR_IN sin;SOCKADDR_IN from;TMyThread *Thr=new TMyThread(true);char *buff;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){WSAStartup(MAKEWORD(2,0),&WsaData);if(WSAStartup(MAKEWORD(2,0),&WsaData) !=0) { ShowMessage("ERROR"); }socket1=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (socket1 ==INVALID_SOCKET) {ShowMessage("Сокет не создан");} sin.sin_family = AF_INET; sin.sin_port = htons(8080); sin.sin_addr.s_addr = INADDR_ANY;bind( socket1, (LPSOCKADDR)&sin, sizeof(sin) );listen( socket1, SOMAXCONN);}//---------------------------------------------------------------------------__fastcall TMyThread::TMyThread(bool CreateSuspended) : TThread(CreateSuspended){}void __fastcall TMyThread::Execute(){socket2=accept(socket1,0,0); if (socket2==INVALID_SOCKET) {ShowMessage("clien dont connected");} else {ShowMessage ("Client Connected"); recv(socket1,buff,sizeof(buff),0) ;} Synchronize(pb);}void __fastcall TForm1::Button3Click(TObject *Sender){Thr->Priority = tpLower; // установить приоритет ниже нормальногоThr->Resume(); // запустить поток выполняться}//---------------------------------------------------------------------------void __fastcall TMyThread::pb(){Form1->Memo1->Lines->Add(buff);}void __fastcall TForm1::Button2Click(TObject *Sender){s=Form1->Edit1->Text;buff=s.c_str();send(socket2,buff,sizeof(buff),0);Memo1->Lines->Add(s);}//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender){Thr->Suspend();}//---------------------------------------------------------------------------//---------------------------------------------------------------------------а вот клиент#include #pragma hdrstop#include "Unit1.h"#include "Winsock2.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;WSADATA WsaData;SOCKADDR_IN anAddr;SOCKET socket1,socket2;TMyThread *Thr=new TMyThread(true);char *buff;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){WSAStartup(MAKEWORD(2,0),&WsaData);if(WSAStartup(MAKEWORD(2,0),&WsaData) !=0) { ShowMessage("ERROR"); }socket1=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (socket1 ==INVALID_SOCKET) {ShowMessage("Сокет не создан");} anAddr.sin_family = AF_INET; anAddr.sin_port = htons(8080); anAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");socket1=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);connect(socket1, (struct sockaddr *)&anAddr, sizeof(struct sockaddr));}//---------------------------------------------------------------------------__fastcall TMyThread::TMyThread(bool CreateSuspended) : TThread(CreateSuspended){}//---------------------------------------------------------------------------void __fastcall TMyThread::Execute(){connect(socket1, (struct sockaddr *)&anAddr, sizeof(struct sockaddr));if (socket1==INVALID_SOCKET) {ShowMessage("dont connect to server");} else {ShowMessage ("Connected to Server"); recv(socket1,buff,sizeof(buff),0);} Synchronize(pb);}void __fastcall TMyThread::pb(){Form1->Memo1->Lines->Add(buff);}void __fastcall TForm1::Button3Click(TObject *Sender){Thr->Priority = tpNormal;Thr->Resume(); Thr->FreeOnTerminate = true;}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){AnsiString s;s=Form1->Edit1->Text;buff=s.c_str();send(socket2,(buff),sizeof(buff),0);Memo1->Lines->Add(s);}//---------------------------------------------------------------------------//--------------------------------------------------------------------------- Ссылка на комментарий
X-tender Опубликовано 21 апреля, 2009 Жалоба Поделиться Опубликовано 21 апреля, 2009 D3V3L0p3R, выведи что возвращает sizeof(buff), и еще проверь что возвращает recv. А вообще поточнее бы сказал как именно "не доходят". Ссылка на комментарий
D3V3L0p3R Опубликовано 22 апреля, 2009 Жалоба Поделиться Опубликовано 22 апреля, 2009 да че то много ошибок я допустил. Переделаю. А если кто то увидел ошибки сообщите пож-та Ссылка на комментарий
D3V3L0p3R Опубликовано 22 апреля, 2009 Жалоба Поделиться Опубликовано 22 апреля, 2009 Блин, тут касяГ с потоками. я хз как их юзать. кто нибудь растолкуйте Ссылка на комментарий
Lakers Опубликовано 28 апреля, 2009 Жалоба Поделиться Опубликовано 28 апреля, 2009 как в TImage затолкать *.jpg? Ссылка на комментарий
triwire Опубликовано 28 апреля, 2009 Жалоба Поделиться Опубликовано 28 апреля, 2009 Lakers TJPEGImage *jpg=new TJPEGImage; jpg->LoadFromFile("C:\\3.jpg"); Image1->Picture->Assign(jpg); delete jpg; Ссылка на комментарий
Lakers Опубликовано 29 апреля, 2009 Жалоба Поделиться Опубликовано 29 апреля, 2009 ооо!спасибки=) Ссылка на комментарий
bumbehe Опубликовано 19 ноября, 2009 Жалоба Поделиться Опубликовано 19 ноября, 2009 скажите пожалуйста что это значит?не как не могу открыть с++( Ссылка на комментарий
Lakers Опубликовано 19 ноября, 2009 Жалоба Поделиться Опубликовано 19 ноября, 2009 пхд пути неправильные. Ссылка на комментарий
bumbehe Опубликовано 20 ноября, 2009 Жалоба Поделиться Опубликовано 20 ноября, 2009 си++ лежит у меня на локальном диске С, в директориях указываю правильный путь, но все время выдает эту же ошибку Ссылка на комментарий
0xDEADBEEF Опубликовано 20 ноября, 2009 Жалоба Поделиться Опубликовано 20 ноября, 2009 zh_arПоменяйте компилятор. Тробо си - это же динозавр. Поставте студию экпресс или кодблокс, и будет вам счастье). Ссылка на комментарий
bumbehe Опубликовано 20 ноября, 2009 Жалоба Поделиться Опубликовано 20 ноября, 2009 нет мы изучаем си++ Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти