怎样合法性检查用户的输入是ip地址

mikesome 2002-07-20 09:47:35
用什么控件好,普通的edit还是maskedit还是其他
...全文
109 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingcaiyao 2002-07-20
  • 打赏
  • 举报
回复
那你可以这样:
void __fastcall TEdit1:Edit1KeyDown(TObject *Sender,TShiftState ShiftState,WORD &Key)
{
if(Key==13)
{
AnsiString Str=Edit1->Text.Trim();
AnsiString Sub;
int iCount=0;
for(int i=1;i<=Str.Length();i++)
{
Sub=Str.SubString(i,1);
if(Sub.c_str()[0]>'9' || Sub.c_str()[0]<'0')
{
if(Sub.c_str()[0]!='.')
{
ShowMessage("The ip address you typed is not valid");
break;
}
}
if(Sub.c_str()[0]=='.')
{
iCount++;
}
}
if(iCount!=3)
{
ShowMessage("The ip address you typed is not valid");
break;
}
}
}
其实你用WinSock函数还简单些。


mme 2002-07-20
  • 打赏
  • 举报
回复
用 kingcaiyao(AKing) 的这一句就够了int addr=inet_addr(AddrString.c_str());
mikesome 2002-07-20
  • 打赏
  • 举报
回复
我不知道怎么判断会比较简练一点
mikesome 2002-07-20
  • 打赏
  • 举报
回复
kingcaiyao(AKing)我需要的可能还不用这么复杂
我只想合法性检查用户输入的一个字符串是不是合法的ip地址
这个ip地址的机器可以不存在的
hlmsoft 2002-07-20
  • 打赏
  • 举报
回复
用maskedit
kingcaiyao 2002-07-20
  • 打赏
  • 举报
回复
如果线粹用代码来判断可以这样写:
.cpp File
char Error[256];
WSADATA WSAData;
memset(&WSAData,0,sizeof(WSADATA));
Word Version=MAKEWORD(2,0);
int res=WSAStartup(Version,&WSAData);
if(res!=0)
{
sprintf(Error,"Failed to initialize WinSock,ErrorCode:",WSAGetLastError());
Application->MessageBox(Error,"Error",MB_OK+MB_ICONERROR);
return -1;
}
for(int i=1;i<=AddrString.Length();i++)
{
if(AddrString.SubString(i,1)==" ")
{
AddrString.Delete(i,1);
}
}
int addr=inet_addr(AddrString.c_str());
if(addr==INADDR_NONE)
{
hostent *he=gethostbyname(AddrString.c_str());
if(he)
{
memcpy(&addr,he->h_addr_list[0],sizeof(int));
//ShowMessage(addr);
}
else
{
return -1;
}
}
WSACleanup();
return addr;
kingcaiyao 2002-07-20
  • 打赏
  • 举报
回复
用maskEdit比较好,但合法性需要代码来实现,就用WinSock中的一些函数吧。
RockyZou 2002-07-20
  • 打赏
  • 举报
回复
都可以,不过还是要自己去判断是否合法
mikesome 2002-07-20
  • 打赏
  • 举报
回复
up
mikesome 2002-07-20
  • 打赏
  • 举报
回复
VS什么东西
zheng_can 2002-07-20
  • 打赏
  • 举报
回复
没有 IP地址控件 吗
我知道 VS 里面就有

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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