高手,请帮我把下面的一段C++Builder程序翻译成Delphi代码.150个大饼!(150分)

  • 主题发起人 主题发起人 jingtao
  • 开始时间 开始时间
J

jingtao

Unregistered / Unconfirmed
GUEST, unregistred user!
BOOL IsInternetConnected (void)
{
int nCheck = AfxSocketInit();
CSocket m_Server;
HKEY hKey;
DWORD dwDial, dwDialType = REG_DWORD, dwDialSize = 4;
DWORD dwNew = 0;
BOOL bResult = true;

if ( RegOpenKeyEx ( HKEY_CURRENT_USER,
Software//Microsoft//Windows//CurrentVersion//Internet Settings",
0, KEY_SET_VALUE, &hKey) != ERROR_SUCCESS)
; // We cannot find the key. Handle this situation or just continue

if ( RegQueryValueEx( hKey, "EnableAutodial", NULL, &dwDialType,
(BYTE *) &dwDial, &dwDialSize ) != ERROR_SUCCESS )
; // We cannot find the value. Handle it.

if ( dwDial ) { // We need to change the value, in order to make
// a dialup window not to show up.

if ( (nCheck = RegSetValueEx( hKey, "EnableAutodial", NULL,
dwDialType, (BYTE *) &dwNew, dwDialSize )) != ERROR_SUCCESS)
; // Failed? We shouldn't get here. You decide how to handle it
}


if ( !m_Server.Create() ) {
// m_sError = _T( "Unable to create the socket." );
bResult = false;
}

// You can use www.microsoft.com in order to check whether DNS is available
// or numeric IP otherwise
else if ( !m_Server.Connect( "www.microsoft.com", 80 ) ) { // 207.46.130.150
//m_sError = _T( "Unable to connect to server" );
m_Server.Close();
bResult = false;
}


if ( dwDial ) {
if ( (nCheck = RegSetValueEx( hKey, "EnableAutodial", NULL,
dwDialType, (BYTE *) &dwDial, dwDialSize )) != ERROR_SUCCESS)
; // Failed? We shouldn't get it. You decide how to handle this.
}

RegCloseKey( hKey );
return ( bResult );
}
 
看不懂吗?
 
很简单
可惜我不会pascal
 
首先把{}用begin...end替换过来,把整段程序放到DELPHI琢步调试
 
这个一看就不是C++Builder的,是VC的。所以我也无法翻译了。
 
应该不是BCB的程序!
这个东西是通过访问 微软的站点来检测网络或者dns有没有问题。
这类的程序没什么意思,一般来讲不会有人给你翻译的,你自己应该看的懂呀!
照着写一个。
 
各位大哥,这个程序是用来检测局部网的电脑有没有连接上INTENER,和局部网的电脑
上网后的动态IP的。小弟接触编程才半年,所以还没有学VC。
我在论坛问过好几次这个问题,都没有找到答案。问了冯志洪老前辈,他给的答案,也不能
让我满意。后来跑去问了冰河,他就给了这个答案。而最近他忙着赶工程,所以也没有时间
帮我翻译成DELPHI的。我最近忙着搞一个防止断线的程序,必须要用这个东西。各位大哥,
就请帮帮小弟吧,分数不够可以再加。
急急啊。。。。。。。。。。
 
OH,I'm Stupid.我去看了一本VC的书,原来这么简单的.哈哈.
本来想考完试学VC的.现在看来是越早越好啊,哈哈.
提了几次问题最后都是自己搞定了,我的分.......
 
大哥,不是每个人都能够连到www.microsoft.com:80的,再说万一那天微软玩玩了你的
程序还想不想继续用?
小弟也不能给你提什么有价值的,不过我觉得取到网关地址(???)然后ping(??)
一下(???)都比这方法好。
 
JJams_King>>哈哈,我才21啊,可能您才是大哥啊,呵呵.
你说的方法:由于我们是局部网上网,网关是192.168.0.1,就算他不上网,开着电脑也能PING
通啊.
 
To: jingtao
呵呵,明白了。原来你是想知道网关上不上网。让我想想,嗯……
有了,用过TraceRt没有??这样,取网关地址,把地址的第一个值加一以保证不是
跟网关在同一个子网里(一般应该没问题的),然后用TTL为2的包ping这个地址。
那位大哥有兴趣,可以试一下(我可没试过哦)。
再说了,连www.microsoft.com还不如来连www.delphibbs.com呢
(都是年轻人,共同学习嘛)
 
我比较忙,没时间帮你转换,你自己按下边的次序放到DELPHI逐步调试:
1、弄清两者的定义变量规则,DELPHI (I:INTEGER)C++(INT I)
2、{}用BEGIN、、、END转换
3、API基本相同
 
xjming>>谢谢您!我已经搞定它了.
 
后退
顶部