DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: will123wi
今日帖子: 21
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/10/29 22:17:45
标题:
急:电脑报出版《delphi编程实力80例》征稿 浏览:5568
加入我的收藏
楼主: 电脑报即将出版《delphi编程实例80例》,他们的编辑找到我要求我负责

第六章  图形图像多媒体(8-12)*
第八章  网络与通讯(8-12)*

这两章,由于时间紧迫,我个人无法写完这么多例子,因而这里我公开征稿,当前我已经完成如下例子:

第八章 实例一 用DELPHI实现网络信使服务
第八章 实例二 升级精灵
第八章 实例三 断点续传
第八章 实例四 邮件群发
第八章 实例五 网络文件传输

注意:上面列出来的是我已经写完的,不是我需要的!!!!!!!!!!

如果有对 图形图像多媒体 研究较深的高手能独立完成第6章的10个例子,我可以推荐成为本书作者之一,如果只能提供稿件给我,将可以获得基本稿费,稿费由电脑报支出。

完成时间限制,11月15日,我的进度大概是2-3天一篇,无奈只能请大家帮帮我。

稿件模板看附件:
此帖子包含附件:zIzII_20031029221744.doc 大小:233.5K
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
女 one_sunlight (one_sunlight) ★☆☆☆☆ -
盒子活跃会员
2003/10/30 9:28:04
1楼: 什么时候用?联系方式
----------------------------------------------
自己一直自力于DELPHI程序的开发工作
作者:
男 hq11z (xx) ★☆☆☆☆ -
普通会员
2003/10/30 11:53:52
2楼: 把你的E-mail给我到时和你联系~~~文字
按此在新窗口浏览图片 按此在新窗口浏览图片
----------------------------------------------
-
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/10/30 14:43:00
3楼: 点我的用户名就能看到我的联系方法:
root@2ccc.com
或者QQ:163932(因为这个QQ我不回答问题,所以请加我后留言说明写书)
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/10/30 16:22:16
4楼: 太难了 超过偶的水平 偶只能等待这本书的电子版出世了 偶在向
各位大哥学习!
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 jenlin (jenlin) ★☆☆☆☆ -
盒子活跃会员
2003/10/30 20:06:52
5楼: 你这样子也出书?
----------------------------------------------
-
作者:
男 12521052 (混世生) ★☆☆☆☆ -
盒子活跃会员
2003/10/30 20:43:03
6楼: 我没有WORD。可不可以发文本或HTML。
----------------------------------------------
——混世生
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/10/31 1:37:26
7楼: 6楼,无所谓,反正也要审稿的,txt也行,要有例子、bmp图片、代码。
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 langzi (红旗下的蛋) ★☆☆☆☆ -
普通会员
2003/10/31 13:52:36
8楼: 我写了段程序:数据库方面的 
关于excel表和数据库之间的导出导入的问题,如果需要我可以提供这个例子,在
csdn上,和大富翁上贴 了的 …………
----------------------------------------------
-
作者:
男 pengxunaiting (边城浪子) ★☆☆☆☆ -
普通会员
2003/10/31 15:31:28
9楼: 期待
此帖子包含附件:
GIF 图像
大小:90.9K
----------------------------------------------
一路只因有你
作者:
男 bjdribllec ( ) ★☆☆☆☆ -
盒子活跃会员
2003/10/31 15:38:55
10楼: 楼主:我前两天还在问如何实现信使服务,现在问书何时出啊?
就冲第八章实验一,我也要有这么一本书!
----------------------------------------------
-
作者:
男 jemsn (jemsn) ★☆☆☆☆ -
盒子活跃会员
2003/11/1 19:52:27
11楼: 支持,我每年都买
----------------------------------------------
-
作者:
男 msqsniper (常省电) ★☆☆☆☆ -
盒子活跃会员
2003/11/1 21:14:57
12楼: 大力支持
----------------------------------------------
-
作者:
男 againb (anson) ★☆☆☆☆ -
盒子活跃会员
2003/11/2 14:20:43
13楼: 斑竹啊?稿费如何?
不知道书的水平会如何?期待中、、、、、、、
支持斑竹!
----------------------------------------------
-
作者:
男 lovebzn (半瓶子醋) ★☆☆☆☆ -
普通会员
2003/11/3 20:37:55
14楼: 你就是在qq不说话
----------------------------------------------
http://www.36535.com/bbs
http://bbs.36535.com   都是我的
作者:
男 shijun (石军) ★☆☆☆☆ -
普通会员
2003/11/4 10:37:45
15楼: 呵呵,不错。
----------------------------------------------
All about android
www.kidroid.com
作者:
男 renwang (RenWang) ★☆☆☆☆ -
盒子活跃会员
2003/11/5 9:13:09
16楼: 我看你也挺忙的,帮帮你!
这是我软件载的一篇文章,自己看看吧!

第八章 实例二 升级精灵
第八章 实例三 断点续传



  Http协议的通信遵循一定的约定.例如,请求一个文件的时候先发送Get请求,然后服务器会返回请求的数据.如果需要进行断点传输,那么先发送'HEAD /'请求,其中返回的'Content-Length: '就是文件实际大小.将其和我们本地需要断点下载的文件大小比较,发送GET请求和发送需要下载的文件开始位置'RANGE: bytes='+inttostr(iFilePos)+'-'+#13#10;服务器如果支持断点下载的话就会接着发送余下的数据了.因为这方面的文章比较多,我在这里就不详细讲述了.感兴趣的朋友可以自行查阅相关资料或者RFC文档.我写的"搜霸"就是采用这种方式进行断点下载的.
   当然,如果你是个懒人,也可以直接采用Delphi自带的控件.以Delphi6的INDY组件为例.新建一个工程,放上一个TIdHTTP控件,一个TIdAntiFreeze控件,一个TProgressBar用于显示下载进度.最后放上一个TButton用于开始执行我们的命令.代码如下:

procedure TForm1.Button1Click(Sender: TObject);//点击按钮的时候开始下载我们的文件
var
MyStream:TMemoryStream;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;//设置使程序有反应.
MyStream:=TMemoryStream.Create;
try
IdHTTP1.Get('http://www.138soft.com/download/Mp3ToExe.zip',MyStream);//下载我站点的一个ZIP文件
except//INDY控件一般要使用这种try..except结构.
Showmessage('网络出错!');
MyStream.Free;
Exit;
end;
MyStream.SaveToFile('c:\Mp3ToExe.zip');
MyStream.Free;
Showmessage('OK');
end;

procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCountMax: Integer);//开始下载前,将ProgressBar1的最大值设置为需要接收的数据大小.
begin
ProgressBar1.Max:=AWorkCountMax;
ProgressBar1.Min:=0;
ProgressBar1.Position:=0;
end;

procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);//接收数据的时候,进度将在ProgressBar1显示出来.
begin
ProgressBar1.Position:=ProgressBar1.Position+AWorkCount;
end;

   IdHTTP1的Get还有一种形式就是获取字符串:例如,上面的程序可以改写成:

procedure TForm1.Button1Click(Sender: TObject);
var
MyStr:String;
begin
IdAntiFreeze1.OnlyWhenIdle:=False;//设置使程序有反应.
try
MyStr:=IdHTTP1.Get('http://www.138soft.com/default.htm');
except
Showmessage('网络出错!');
Exit;
end;
Showmessage(MyStr);
end;

   应用:现在很多程序都有自动升级功能,实际上就是应用了GET.先在自己站点放一个文本文件注明程序版本号,当检查升级的时候,取文本内容与当前版本号比较,然后决定升级与否.

   实际上,GET还可以用在其它方面,前提是与你的网页文件挂钩.例如,你的个人站点放在你的硬盘上面,你在http://my.yeah.net申请了一个免费的域名,你将URL指向你的IP.但是你的IP是动态的,经常会改变,每次改变后需要手工打开http://my.yeah.net站点进行设置是非常麻烦的.这时候,你可以自己动手写一个程序.
   首先,我们来写两个函数从返回页面里提取我们需要的信息.

function GetInfoByYearNetHtm1(const str:string):String;
{
功能:从Yeah.Net的域名申请和修改返回网页文件中提取需要的信息
参数:Yeah.Net的网页文件内容
输出:实际的信息
作者:陈经韬
日期:2003,2,8
修改:无
}
const
SubColor='<font color=red>';
SubCenter1='<center>';
SubCenter2='</center>';
var
S:String;
i,j,k:integer;
begin
Result:=';
S:=str;

j:=0;
repeat
i:=Pos(SubColor,LowerCase(S));
if i=0 then break;
if Length(s)<(i+Length(SubColor)-1) then Break;
Delete(S,1,i+Length(SubColor)-1);

i:=Pos(SubCenter1,LowerCase(S));
if i=0 then break else if i<=10 then j:=-1;
until j=-1;

k:=Pos(SubCenter2,LowerCase(S));
S:=Copy(S,i+Length(SubCenter1),k-i-Length(SubCenter1));

k:=0;
repeat
i:=pos('<',s);
j:=pos('>',s);
if (i=0) or (j=0) then Break;
Delete(s,i,j-i+1);
Insert(' ', S, i);
until k=-1;
s:=s+'.';
Result:=s;
end;

function GetInfoByYearNetHtm2(const Str:String):String;
{
功能:从Yeah.Net的域名转向返回网页文件中提取需要的信息
参数:Yeah.Net的网页文件内容
输出:实际的信息
作者:陈经韬
日期:2003,2,8
修改:无
}
var i,j,k:integer;
begin
Result:='; 
i:=Pos('url=',Str); 
if i=0 then Exit;
i:=i+4; 
j:=Pos(',Str); 
if i=0 then Exit;
j:=j-2; k:=j-i; 
Result:=copy(Str,i,k); 
end; 

  第一步,我们先来实现注册功能.放上五个Edit控件分别代表注册用户名称,密码1,密码2,Email地址和需要指向的URL.然后用GET方式来注册:

procedure TForm1.Button1Click(Sender: TObject);
var
StrRecive:String;
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('正在申请域名!');
try
StrRecive:=IdHTTP1.Get('http://my.yeah.net/cgi-bin/register?username=&#39;+Edit1.Text//注册名称
+'&domain=yeah.net'
+'&password='+Edit2.Text//密码1
+'&password2='+Edit3.Text//密码2
+'&email='+Edit4.Text//注册人Email地址
+'&url=http://'+Edit4.Text);//该域名指向的URL
Memo1.Lines.Add(GetInfoByYearNetHtm1(StrRecive));
except
Memo1.Lines.Add('申请域名错误!请检查网络!');
end;
end;

   第二步,当你需要更新自己的IP地址的时候:

procedure TForm1.Button2Click(Sender: TObject);
var
StrRecive:String;
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('正在更新域名!');
try
StrRecive:=IdHTTP1.Get('http://my.yeah.net/cgi-bin/modify?username=&#39;+Edit1.Text//注册名称
+'&domain=yeah.net'
+'&password='+Edit2.Text//密码1
+'&url=http://'+Edit4.Text);//该域名指向的URL
Memo1.Lines.Add(GetInfoByYearNetHtm1(StrRecive));
except
Memo1.Lines.Add('更新IP错误!请检查网络!');
end;
end;

  第三步:当然是你的程序取的真实指向了:)

procedure TForm1.Button3Click(Sender: TObject);
begin 
try
Memo1.Lines.Add(GetInfoByYearNetHtm2(IdHTTP1.Get(Edit4.Text)));//eg:http://lovejingtao.yeah.net
except
Memo1.Lines.Add('更新IP错误!请检查网络!');
end;
end;

   当然,如果你的程序想写的非常小,那么就要动用API了.大概过程如下:
...........
...........
HeadInfo:=';
HeadInfo:=HeadInfo+'GET /'+'+' HTTP/1.1'+#13#10;
HeadInfo:=HeadInfo+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'+#13#10;

HeadInfo:=HeadInfo+'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)'+#13#10;
HeadInfo:=HeadInfo+'RANGE: bytes='+inttostr(533263)+'-533263'+#13#10;
HeadInfo:=HeadInfo+'Host: '+GetHost(HostName)+#13#10;
HeadInfo:=HeadInfo+#13#10;
ZeroMemory(@SendStrBuf,SizeOf(SendStrBuf));
for Re:=0 to Length(HeadInfo)-1 do SendStrBuf[Re]:=HeadInfo[Re+1];
Re:=send(MySocket,SendStrBuf,Strlen(SendStrBuf),0);

if Re = SOCKET_ERROR then
begin
CloseSocket(MySocket);
WSACleanUP();//Winsocket释构
Exit;
end;

Re:=recv(MySocket,ReciveStrBuf,SizeOf(ReciveStrBuf),0);
if Re = SOCKET_ERROR then
begin
CloseSocket(MySocket);
WSACleanUP();//Winsocket释构
Exit;
end;
Result:=GetInfoByYearNetHtm2(ReciveStrBuf);
..........
..........

   应用:(1)无IP电脑取有IP电脑的地址,就是有IP的电脑把自己的IP更新上去,然后无IP的电脑去取回来连接.两者均是用GET.(2)注册版软件:在网站后台建立一个数据库,软件自动去取ID判断合法与否.现在一般注册软件都采用这种办法.

                                                     2003,9,18凌晨.

作者:陈经韬
主页:http://www.138soft.com
转载请注明出处.谢谢.


----------------------------------------------
上天给我的这次机会我留给了你!!!
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/11/5 9:51:28
17楼: 我的意思上面六篇文章是我已经写完的了:~(
----------------------------------------------
维护世界和平,共创美好盒子。
作者:
男 zjbfvfv (zjb) ★☆☆☆☆ -
盒子活跃会员
2003/11/5 14:11:58
18楼: 不知 网络与通讯中有什么规划,我有这方面的一些经验
----------------------------------------------
-
作者:
男 lishim (lishim) ★☆☆☆☆ -
普通会员
2003/11/6 15:40:12
19楼: 有没有商业软件硬件序列号生成认证码,通过认证码生成注册码的例子,最好是在整个程序中的应用实例!多谢!
----------------------------------------------
-
作者:
男 blueapple (blueapple1120) ★☆☆☆☆ -
盒子活跃会员
2003/11/7 9:49:02
20楼: 那你现在还需要吗?
----------------------------------------------
Blueapple
作者:
男 pcc11051059 (人) ★☆☆☆☆ -
盒子活跃会员
2003/11/7 18:40:01
21楼: 怎么样发表帖子啊?
----------------------------------------------
--_--
按此在新窗口浏览图片
作者:
男 blueapple (blueapple1120) ★☆☆☆☆ -
盒子活跃会员
2003/11/7 19:06:47
22楼: 那你说怎们发啊!?
----------------------------------------------
Blueapple
作者:
男 lovebzn (半瓶子醋) ★☆☆☆☆ -
普通会员
2003/11/7 19:13:48
23楼: 慢慢看清楚就可以了,很简单的
----------------------------------------------
http://www.36535.com/bbs
http://bbs.36535.com   都是我的
作者:
男 blueapple (blueapple1120) ★☆☆☆☆ -
盒子活跃会员
2003/11/7 19:20:51
22楼: 那你说怎们发啊!?
----------------------------------------------
Blueapple
作者:
男 namelysweet (就是甜) ★☆☆☆☆ -
盒子活跃会员
2003/11/8 10:54:34
24楼: 版主厉害啊!羡慕 :)
----------------------------------------------
-
作者:
男 infoone (浪花) ★☆☆☆☆ -
普通会员
2003/11/8 14:36:29
25楼: 发行了我也买
----------------------------------------------
-海中的浪花,不管风浪有多大,他还是浪花。
茫茫人海中的一个普通人,不管困难有多大也无法让我屈服,我相信没有我做不到的。
作者:
男 aq96321 (aq96321) ★☆☆☆☆ -
盒子活跃会员
2003/11/8 14:42:15
26楼: 支持版主,发行了我也买。
----------------------------------------------
-
作者:
男 namelysweet (就是甜) ★☆☆☆☆ -
盒子活跃会员
2003/11/8 14:45:00
27楼: 买,BUY,BUY!:)
----------------------------------------------
-
作者:
男 aq96321 (aq96321) ★☆☆☆☆ -
盒子活跃会员
2003/11/8 14:48:14
26楼: 发行了我也买,支持版主。
----------------------------------------------
-
作者:
男 givemeliu (delphi傻瓜) ★☆☆☆☆ -
盒子活跃会员
2003/11/8 15:34:02
28楼: 乌  乌  。。。。。
----------------------------------------------
我们共同努力,一切问题都会解决
作者:
男 xu007 (as) ★☆☆☆☆ -
普通会员
2003/11/11 8:36:53
29楼: 斑竹你好:
由于种种原因,现在才看到你的消息。我刚写完一本《Dephi编程100例》。手头有一些现成的资料。不知道你现在是否还需要。你看是否合适,如果还行,可以跟我联系。我会在11月15日之前把文章给你的。如果已经不需要了,我们还可以以后有机会再联系。下面是目录(附件包括一篇实例文章):
1.图象的衬底效果
2.AutoCAD三视图效果
3.BMP转化JPEG和灰度设置
4.实现图形的旋转
5.巧妙实现类似Photoshop图层的效果
6.轻松显示数据库中的图像文件
7.波形显示研究
8.MSAgent技术实现
9.GIS组件——MapOject的深层开发
10.在IntraWeb中操纵图象

联系方式:
现住地址:北京市--中国地质大学
手机:138-10580350
电话:010-82320805
Email:xuzheping@yeah.net
此帖子包含附件:xu007_2003111183652.doc 大小:767.0K
----------------------------------------------
-
作者:
男 zizii (高高高级馒头) ★☆☆☆☆ -
神秘会员
2003/11/11 20:19:43
30楼: to xu007 :
我现在在深圳,大概明天晚上回家,再联系,加我QQ:6036742。
----------------------------------------------
维护世界和平,共创美好盒子。
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行117.1875毫秒 RSS