Socket流操作的时候遇到的问题。帮助解决

xifenmin 2006-05-09 09:43:56
lpStream是//TMemoryStream
我在用ServerSocket1->Socket->SendStream(lpStream);编译的时候提示"Member identifier expected".我不知道原因在哪里?请求帮助
...全文
347 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp616 2006-05-09
  • 打赏
  • 举报
回复
如果可以把代码打个包。我帮你调通。mail:cnxbb@163.com
xifenmin 2006-05-09
  • 打赏
  • 举报
回复
你们说的都不对,lpStream是Private:TMemoryStream *lpStream,我忘记告诉了。我只给出了一部分代码。SendStream我在头部已经定义过了。这些都没问题。我不会犯那些低级错误的。至于那个ServerSocket1,是我打错了。我程序里面是对的。你们可以帮忙再看一看
pp616 2006-05-09
  • 打赏
  • 举报
回复
Serversocket1->Socket->Connections[0]->SendStream(lpStream);
Serversocket1 中第2个s没大写。

你贴程序中没lpStream的定义。不知你是在哪定义的。

还有#ifdef SendStream
定义宏名称别和程序中的变量或是函数名相同。
铖邑 2006-05-09
  • 打赏
  • 举报
回复
[C++ Error] main.cpp(78): E2451 Undefined symbol 'lpStream'
xifenmin 2006-05-09
  • 打赏
  • 举报
回复
void __fastcall TForm1::mmo1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
AnsiString Str;

if(Key == VK_RETURN)
{
Str = mmo1->Lines->Strings[mmo1->Lines->Count-1];

if(IsServer)
{
#ifdef SendStream
lpStream->Write(Str.c_str(),Str.Length());
lpStream->Position = 0;

Serversocket1->Socket->Connections[0]->SendStream(lpStream);//这里出错。错误提示就是我说的"Member identifier expected"

#else
ServerSocket1->Socket->Connections[0]->SendText( \
mmo1->Lines->Strings[mmo1->Lines->Count-1]);
#endif
}
else
{
#ifdef SendStream
lpStream->Write(Str.c_str(),Str.Length());
lpStream->Position = 0;

ClientSocket1->Socket->SendStream(lpStream);
#else
ClientSocket1->Socket->SendText( \
mmo1->Lines->Strings[mmo1->Lines->Count-1]);
#endif
}
}
}
铖邑 2006-05-09
  • 打赏
  • 举报
回复
没有问题啊,楼主把完整代码贴出来吧
pp616 2006-05-09
  • 打赏
  • 举报
回复
10120129
xifenmin 2006-05-09
  • 打赏
  • 举报
回复
谢谢pp616了,有QQ 吗?是否可以留一下。交流交流。是的我发现如果你在SendStream后如果在delete 就报错,提示指针指向无效的区域。原来是BCB自动释放了。
铖邑 2006-05-09
  • 打赏
  • 举报
回复
需要delete
pp616 2006-05-09
  • 打赏
  • 举报
回复
是的。SendStream后bc负责释放。千万别自己delete
xifenmin 2006-05-09
  • 打赏
  • 举报
回复
请问如果我用SendStream(lpStream)(lpStream 是TMemoryStream)是不是不用delte lpStream,SendStream之后自动释放了呢?
xifenmin 2006-05-09
  • 打赏
  • 举报
回复
谢谢了,看来就是关键字重复了
pp616 2006-05-09
  • 打赏
  • 举报
回复
程序就不发了。改下宏名称就OK。
pp616 2006-05-09
  • 打赏
  • 举报
回复
是你宏名称的问题。
把宏名字改下就可以了。

#define _SENDSTREAM 1
就可以了。
xifenmin 2006-05-09
  • 打赏
  • 举报
回复
已经发到你信箱了。如果解决了。帮忙注释上。谢谢了

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧