建议先了解一下windows编程的架构
解决方案 »
- 关于Paintto,动态定义控件时出问题,很疑惑?
- ado如何连接dbf文件?(100分)
- 再次请教一个delphi 开发的简单问题………….
- 如何更改TEdit的编辑位置的大小,
- 如何构造IP包,谢谢!
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 因为毕业答辩 急需各位高手滴帮助 有谁愿意帮我完成一个关于超市销售商品的界面呢 拜托!偶是菜鸟 万分感
- 如何调用一些Delphi中没有定义的函数,比如GetIfEntry函数
- 两个问题:高分等待你的到来(非高手莫入)
- DElPHI 6 (中文版)下载!!!
- delphi如何自定义一个函数库,把自己需要的函数添加到里面?
- 100分求算法
- 如何讓dbgrid左邊的行號顯示出來
例如 Master Delphi 5 or 6;
Delphi 5 or 6 Developer's Guide (開發者指南);
Delphi in the NutShell;
都是適合中級或以上的好書.Delphi和C++都是Object Oriented; 但是Delphi都較C++有條理, 但相信你一段時間來過渡呢. 先用用Delphi VCL試試看吧, 熟習了以後, 你再用win32 api編寫也未遲
unit
uses
winsock,...;//winsock单元可在delphi目录中找到。var
Form1: TForm1;
xl_socket:Tsocket;implementationprocedure TForm1.Button1Click(Sender: TObject);
VAR
XL_VERSION:WORD;
XL_WSADATA:tWSADATA;
RET:INTEGER;
hostname:string;
server_port:integer;
xl_hostent:phostent;
xl_sockaddrin:TSOCKADDRIN;
psaddr:^longint;
saddr:integer;
begin
server_port:=8080;
hostname:='111.111.111.111';
xl_sockaddrin.sin_port:=htons(server_port);
xl_sockaddrin.sin_family:=PF_INET;
xl_hostent:=gethostbyname(PCHAR(HOSTNAME));
IF xl_hostent=nil then
begin
saddr:=inet_addr(pchar(hostname));
if saddr<>-1 then
xl_sockaddrin.sin_addr.S_addr:= saddr;
end
ELSE
BEGIN
psaddr:=pointer(xl_hostent.h_addr_list^);
xl_sockaddrin.sin_addr.S_addr:=psaddr^;
END;
XL_VERSION:=$101;
RET:=WSASTARTUP(XL_VERSION,XL_WSADATA);
IF RET=0 THEN
BEGIN
APPLICATION.MessageBox(初始化成功','注意',mb_ok);
xl_socket:=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
IF XL_SOCKET=INVALID_SOCKET THEN
APPLICATION.MessageBox('SOCKET创建失败','注意',mb_ok)
else
begin
APPLICATION.MessageBox('SOCKET创建成功','注意',mb_ok);
RET:=CONNECT(xl_socket,xl_sockaddrin,sizeof(xl_sockaddrin)); if ret=socket_error then
begin
APPLICATION.MessageBox('SOCKET连接失败','注意',mb_ok);
ret:=closesocket(xl_socket);
if ret=0 then
APPLICATION.MessageBox('SOCKET释放成功!','注意',mb_ok);
end
else
begin
APPLICATION.MessageBox('SOCKET连接成功!','注意',mb_ok);
button2.Enabled:=true;
button3.Enabled:=true;
exit;
end;
end;
WSAcleanup;
END;procedure TForm1.Button3Click(Sender: TObject);//发送
var
ret,len:integer;
s:string;
psend:pchar;
begin
s:=memo1.text;
len:=length(s);
Psend:=stralloc(LEN);
STRPCOPY(Psend,S);
ret:=send(xl_socket,Psend^,len,0);
if ret<>SOCKET_ERROR then
application.MessageBox('发送成功','注意',mb_ok)
else
application.MessageBox('发送失败','注意',mb_ok);
end;
例如 Master Delphi 5 or 6;
Delphi 5 or 6 Developer's Guide (開發者指南);
Delphi in the NutShell;
都是適合中級或以上的好書.Delphi和C++都是Object Oriented; 但是Delphi都較C++有條理, 但相信你一段時間來過渡呢. 先用用Delphi VCL試試看吧, 熟習了以後, 你再用win32 api編寫也未遲
例如 Master Delphi 5 or 6;
Delphi 5 or 6 Developer's Guide (開發者指南);
Delphi in the NutShell;
都是適合中級或以上的好書.Delphi和C++都是Object Oriented; 但是Delphi都較C++有條理, 但相信你一段時間來過渡呢. 先用用Delphi VCL試試看吧, 熟習了以後, 你再用win32 api編寫也未遲
一步一步来
先把语法等学习好
在是API等高层次的啊
而且最好的方法是自己写一个比较完整的程序出来旧好拉
GOOD LUCKLY!
我学变成已经快半年了,一见api就头晕!我还不会用呢! 帮不了你!
delphi已经为我们预先定义了大部分的类型
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, winsock,StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
ListBox1: TListBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;scansocket:tsocket;
implementation
Function checkport(pnum:pointer):boolean;stdcall;
var
net,num,ret:integer;
version:WORD;
sa:tsockaddrin;
wsd:TWSADATA;
p:^integer;
begin
p:=pnum;
num:=p^;
sa.sin_port:=htons(num);
sa.sin_family:=PF_INET;
sa.sin_addr.s_addr:=inet_addr(pchar(form1.Edit1.text));
version:=$101;
ret:=WSASTARTUP(version,wsd);
if ret=0 then
begin
NET:=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
IF NET=INVALID_SOCKET THEN
begin
result:=false;
APPLICATION.MessageBox('SOCKET创建失败','注意',mb_ok);
end
else
begin
ret:=connect(scansocket,sa,sizeof(sa));
if ret=socket_error then
begin
APPLICATION.MessageBox('SOCKET连接失败','注意',mb_ok);
ret:=closesocket(scansocket);
result:=false;
if ret=0 then
APPLICATION.MessageBox('SOCKET释放成功!','注意',mb_ok);
end
else
begin
form1.ListBox1.Items.Add(inttostr(num));
end;
end;
wsacleanup;
result:=true;
form1.ListBox1.Items.Add(inttostr(num));
end;
{$R *.dfm} end;procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
p1:^integer;
hMasterThread: array[0..49] of THandle;
dwThreadID: array[0..49] of DWORD;
begin
for i := 0 to 4 do
begin p1:=@i;
hMasterThread[i]:=CreateThread(nil,0,@checkport,p1,0,dwThreadID[i]);
end;//for
end; end.
个人意见,仅供参考。另外有反对意见者不要乱扔鸡蛋,毕竟鸡蛋还是很贵的哟。
我要解决的95%都是数据库编程问题。
编程功底:
是对问题的分析解决能力,不是API或VCL
最好在数据结构和算法上下功夫
工具和方法都可以通过不断的实践掌握的
//个人观点,仅供参考
编程功底:
是对问题的分析解决能力,不是API或VCL
最好在数据结构和算法上下功夫
工具和方法都可以通过不断的实践掌握的