取拨号网络列表问题

sxzqlzx 2003-07-21 06:16:43
我在取拨号网络列表时提示某一段内存只读
代码如下:
LPRASENTRYNAME RasEntry;
DWORD BufSize;
DWORD dwReturn;
DWORD Entries;
DWORD i;
AnsiString sStatus;
ListBox1->Clear() ;
RasEntry = (LPRASENTRYNAME)GlobalAlloc(GPTR, sizeof(RASENTRYNAME));
RasEntry->dwSize = sizeof(RASENTRYNAME);
BufSize = sizeof(RASENTRYNAME) * 256;

if ((dwReturn = RasEnumEntries(NULL, NULL, RasEntry, &BufSize, &Entries))
== 603) //Buffer too small
{
RasEntry = (LPRASENTRYNAME)GlobalAlloc(GPTR, BufSize);
RasEntry->dwSize = sizeof(RASENTRYNAME);
BufSize = sizeof(RASENTRYNAME) * 256;
}
dwReturn = RasEnumEntries(NULL, NULL, RasEntry, &BufSize, &Entries);

if (dwReturn == ERROR_SUCCESS)
{
for (i = 0; i < Entries; i ++)
{
ListBox1->Items->Add(RasEntry->szEntryName);
RasEntry++;
}
}
else
{

MessageDlg("RasEnumEntries Error", mtError, TMsgDlgButtons() << mbOK, 0) ;
}
请各位指点:
...全文
75 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljianq 2003-09-26
  • 打赏
  • 举报
回复
下面是我以前写的拨号类中的一个方法,用的很好,供参靠:
void __fastcall TRASDialer::ReadPhoneBookEntry()
{
try {
FPhoneEntries = new RASENTRYNAME[1];
FPhoneEntries[0].dwSize = sizeof(RASENTRYNAME);
DWORD numEntries;
DWORD size = FPhoneEntries[0].dwSize;
DWORD res = RasEnumEntries(0, 0, FPhoneEntries, &size, &numEntries);
if (res == ERROR_BUFFER_TOO_SMALL) {
delete []FPhoneEntries;
FPhoneEntries = new RASENTRYNAME[numEntries];
FPhoneEntries[0].dwSize = sizeof(RASENTRYNAME);
res = RasEnumEntries(0, 0, FPhoneEntries, &size, &numEntries);
if (res) {
char buff[256];
RasGetErrorString(res, buff, sizeof(buff));
throw Exception(buff);
}
}
else if (numEntries == 0) throw Exception("没有拨号连接,请先建立...");
FConnectionCount=numEntries;
}
catch(...) { ; }
}
runnerrunning 2003-09-25
  • 打赏
  • 举报
回复
555555555
runnerrunning 2003-09-25
  • 打赏
  • 举报
回复
up.....

1,317

社区成员

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

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