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 нет мы изучаем си++ Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.