TClientSock连接与TMemo控制某一行字体的颜色

zhengyu17 2003-06-02 05:55:14
void __fastcall TChatForm::ComboBox1Exit(TObject *Sender)
{
HostName=ComboBox1->Text;
if(IsChangeHostName)
{
IsChangeHostName=false;
int index1 ;
index1 = ComboBox1->Items->IndexOf(HostName);
if (index1== -1)
ComboBox1->Items->Add(HostName);
if(ClientSocket1->Active)
ClientSocket1->Close();
ClientSocket1->Host = HostName;
ClientSocket1->Port = 4000;
ClientSocket1->Open ();
}
}

我的ClientSock连接ServerSock代码如上,当连接的Server主机不存在时,在这个事件执行完后会报一系统错误,不知道这样的主机在"Async Lookup";
我要怎么样能在代码中捕获当连接的主机不存在时的这种情况.

怎么样控制TMemo的某一行的颜色,就像QQ上一样,自己与别人的发言以不同的颜色表示!
...全文
83 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
guangjie 2003-06-11
  • 打赏
  • 举报
回复
把程序编译成.EXE后运行,应该可以.
zldjp 2003-06-11
  • 打赏
  • 举报
回复
我也碰到这个问题了,有办法么?否则只能写 API了
kingcaiyao 2003-06-04
  • 打赏
  • 举报
回复
To halfdream:
谢谢你的指点,不好意思,我写的大多都是stBlocking式的,如果是nonBlocking,那么应该在OnError事件中写代码来处理。
zhengyu17 2003-06-04
  • 打赏
  • 举报
回复
谢谢大家!
第二个问题已经解决,确实需要用RichEdit,感谢kingcaiyao(AKing) ,但要改变某一行的颜色或字体,需要用
RichEdit1->SelAttributes->Color = clBlue;

第一个问题还是不行,我运行了BCB带的例子Chat也一样,也存在这个情况!
halfdream 2003-06-04
  • 打赏
  • 举报
回复
运行BCB带的例子也是这样?
那么你只是在集成环境里跟踪调试报的异常?
那没有关系啊,它只是用于在调试的时候提示你。
程序独立运行时候,这些异常不会跳出来的。
halfdream 2003-06-03
  • 打赏
  • 举报
回复
TO:kingcaiyao(AKing)
你1中那样的代码,只能在阻塞方式的SOCKET下生效,在非阻塞方式,它是抓不住异常的,
原因很简单,非阻塞是异步调用,异常还未产生,函数已经返回。

在onerror事件中处理一下错误就行了
ErrorCode=0;肯定是要的,
另外,可能还要在这儿把SOCKET CLOSE一下。
zhengyu17 2003-06-03
  • 打赏
  • 举报
回复
第一个问题,我已经是加了try catch,可还是一样,try cathc无法捕获到!
kingcaiyao 2003-06-02
  • 打赏
  • 举报
回复
第1个问题,只需要自写一个异常嵌套就可以了:
try
{
ClientSocket1->Port=Port;
ClientSocket1->Host=IPAddr;
ClientSocket1->Active=true;
}
catch(...)
{
ShowMessage("指定的端口已使用或指定的服务器不存在");
}
...............
第2个问题很简单,用RichEdit,RichEdit有一个DefAttributes属性.

void __fastcall TForm1::FormCreate(TObject *Sender)

{
RichEdit1->DefAttributes->Color = clBlue;
RichEdit1->DefAttributes->Style =
RichEdit1->DefAttributes->Style << fsBold << fsItalic;
RichEdit1->Lines->Add("This is a test");

}
zhengyu17 2003-06-02
  • 打赏
  • 举报
回复
warton(转型中...) :
在TRichEdit中又怎么用?
zhengyu17 2003-06-02
  • 打赏
  • 举报
回复
我已经将ErrorCode=0
warton 2003-06-02
  • 打赏
  • 举报
回复
Memo不行吧,用TRichEdit

在onerror事件中处理一下错误就行了

1,317

社区成员

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

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