Samool's blog

TIdInterceptThrottler限制TIdHTTP下载速度

作者:傻猫 发布时间:2010-08-18 21:13:33 分类:Delphi No Comments 90 Views

要限制idhttp的速度,必须使用IdInterceptThrottler来做,放一个IdInterceptThrottler和Idhttp组件,设置TIdHTTP的Intercept属性为TIdInterceptThrottler。

TIdInterceptThrottler有三个速度限制的属性:

BitsPerSec:平均速度

RecvBitsPerSec:控制接收速度

SendBitsPerSec:发送的速度

使用ICS实现多线程分块下载文件

作者:傻猫 发布时间:2010-08-18 21:10:15 分类:Delphi No Comments 54 Views

现在的下载软件一般都是多线程,多资源的下载模式,本文用ICS中的TMultipartHttpDownloader组件实现多线程,单资源的分块下载模式,鲁大师的升级就是这样的原理,可以参考.
先看组件的几个事件:
HTTPRequestDone(Sender: TObject; ErrorCode: Integer; const Reason: string);
下载完成事件,在这里可以释放下载的文件流
  FMultiPartHTTP.FileStream.Free;
  FMultiPartHTTP.FileStream := nil;
HTTPShowStats(Sender: TObject);
下载显示状态信息事件
  '已下载(MB):' + Format('%2f',[FMultiPartHTTP.TotalCount / 1024 / 1024]) +
  ' 完成:' + Format('%3.0f', [FMultiPartHTTP.PercentDone])+'%' +
  ' 速度(KB/秒):' + Format('%6.2f', [FMultiPartHTTP.CurSpeed]) +
  ' 耗时:' + FormatDateTime('hh:nn:ss', FMultiPartHTTP.ElapsedTime);
下面2个事件和进度条有关,ICS自带了个下载进度条
HTTPProgressAddSegment(Sender: TObject; StartOffset, ASpan, InitPos: Int64);
ASpan分段大小,InitPos分段开始大小, StartOffset,分段开始大小
HTTPProgressSetPosition(Sender: TObject;Index: Integer; Position: Int64);
Index第几个分段 Position 分段已下载的大小
下面是用法,非常简单:
    FMultiPartHTTP.URL:=下载文件地址;
    FMultiPartHTTP.PartCount:=分块个数;
    FMultiPartHTTP.FileStream:=TFileStream.Create('下载本地文件名',fmCreate);
    FMultiPartHTTP.Start;
注意:PartCount要大于1,这个组件支持断网断点下载,如果要控制下载的线程数量需要改ICS的源代码

用HttpCli异步POST数据

作者:傻猫 发布时间:2010-08-18 21:08:41 分类:Delphi No Comments 29 Views

procedure THttpPostForm.PostButtonClick(Sender: TObject);
var
    Data : String;
begin
    Data := 'FirstName=' + UrlEncode(Trim('test')) + '&' +
            'LastName='  + UrlEncode(Trim('test123'))  + '&' +
            'Submit=';
    HttpCli1.SendStream := TMemoryStream.Create;
    HttpCli1.SendStream.Write(Data[1], Length(Data));
    HttpCli1.SendStream.Seek(0, 0);
    HttpCli1.RcvdStream := TMemoryStream.Create;
    HttpCli1.URL := Trim('URL');
    HttpCli1.PostAsync;
end;

在RequestDone事件中接收和释放对象
procedure THttpPostForm.HttpCli1RequestDone(
    Sender  : TObject;
    RqType  : THttpRequest;
    ErrCode : Word);
var
    Data : String;
begin
    HttpCli1.SendStream.Free;
    HttpCli1.SendStream := nil;
    if ErrCode <> 0 then //有异常
    begin
        HttpCli1.RcvdStream.Free;
        HttpCli1.RcvdStream := nil;
        Exit;
    end;
    if HttpCli1.StatusCode <> 200 then //返回错误
    begin
        HttpCli1.RcvdStream.Free;
        HttpCli1.RcvdStream := nil;
        Exit;
    end;
    HttpCli1.RcvdStream.Seek(0, 0);
    SetLength(Data, HttpCli1.RcvdStream.Size);
    HttpCli1.RcvdStream.Read(Data[1], Length(Data));
end;

腾讯推出抄袭作品《葫芦娃大战群妖》

作者:傻猫 发布时间:2010-08-18 13:31:57 分类:游戏娱乐 No Comments 33 Views

《植物大战僵尸》由知名游戏制作公司PopCap Games于2009年推出的益智策略类塔防御战游戏,如今早已火爆全球,以抄袭著称的腾讯公司新游戏上线也放过这游戏,推出山寨版《植物大战僵尸》,叫《葫芦娃大战群妖》,听到这个名字,哥已经吐了一地了,唉,人不能无耻到这地步啊。。。

试玩地址:http://www.7k7k.com/swf/39800.htm   

下载地址:http://flash.7k7k.com/fl_8/20100630/huluwa.swf  

511下载:http://u.115.com/file/f9ddc9d70b

截图如下:

葫芦娃大战群妖1.jpg

葫芦娃大战群妖2.jpg

Delphi 2010手动安装indy10.5.7

作者:傻猫 发布时间:2010-08-16 15:49:18 分类:Delphi 2 Comments 78 Views

由于老版本的Indy对ssl支持有问题,好像是某些不支持,同样的代码,安装了新版Indy10.5.7就可以完美运行,但是indy 10.2.5,indy 9就不行,欧卖疙瘩。前一篇鸟语你看懂了没有?我研究了大半天,安装了好几次,始终没有成功,老是报错,相当郁闷。最后还是按照老办法安装成功。

经过本人实践得真理:以下安装适合Delphi7,Delphi2006,Delphi2007 安装Indy组件,由于默认安装开始工具后,自带了Indy组件,但是都是低版本的,要安装最新版的Indy只有自己安装。

阅读剩余部分...

Compile Indy Tiburon in RAD Studio 2010 for use with C++ Builder

作者:傻猫 发布时间:2010-08-16 14:28:57 分类:Delphi No Comments 55 Views

Because Indy is changing fairly rapidly, and because there are problems with the version of Indy that shipped with RAD Studio 2010, I found that I had to download and compile a new version of Indy. Although that isn't too hard, the documentation is scattered all over, and there is no comprehensive source of information. Searching through all of this, I wasted quite a number of hours. To save others (and save myself when I have to do it again), I wanted to post a set of instructions.

None of the information here is original. I take credit for nothing, but I take responsibility for all of the errors. Please post corrections, for the benefit of all. I greatly appreciate the contributions of the Indy developers and experts.

My setup is RAD Studio 2010, including both Delphi and C++ Builder. I have only passing knowledge of Delphi, as C++ is what I mostly use. However, C++ Builder, by itself, is poorly documented, since Embarcadero includes most of the demos and documentation for Delphi, so I got the combined RAD Studio product. That is fortunate, since it is much easier to compile Indy using the Delphi personality than with C++ Builder. These instructions are for replacing Indy Tiburon version 140 with a new version of Indy Tiburon 140.

阅读剩余部分...

没有情人的七夕节怎么过

作者:傻猫 发布时间:2010-08-16 9:39:47 分类:傻猫杂谈 No Comments 24 Views

1、打电话把酒店大床房预订光;

2、上街扇别人男友耳光;

3、隔着座位把电影票买光;

4、拿针去超市把套套扎光;

5、上街卖花,见情侣就说:给你妈买束花吧;

6、吃饭不结账,走时指着别人男友说:我前夫结;

7、去QQ好友印象,男的写:前任老公。女的写:孩子他妈。

Delphi开发工具被感染SysConst.dcu病毒

作者:傻猫 发布时间:2010-08-11 18:29:53 分类:Delphi 4 Comments 37 Views

在DELPHI盒子与DELPHI群里看到的,据说只感染DELPHI7以下的版本(包含DELPHI7),貌似N多人中招了。感染此病毒后,所有用DELPHI编译的程序全都有感染能力。

如果在 C:\Program Files\Borland\Delphi7\Lib 发现有 SysConst.bak (12KB) 和
SysConst.dcu (18KB)

文件: C:\Program Files\Borland\Delphi7\Lib\sysconst.bak
大小: 11658 字节
修改时间: 2002年8月9日, 22:00:00
MD5: 957D629F2E4C38B9FA2AC911E352FC82
SHA1: 859EFAF4C24AF89E2B06922912D1081BAD349E7C
CRC32: 004EBB9D

文件: C:\Program Files\Borland\Delphi7\Lib\sysconst.dcu
大小: 18207 字节
修改时间: 2002年8月9日, 22:00:00
MD5: 89DD28E7C1EAEAE1793D9354E7C38D21
SHA1: F7EF5B9C3C85FF01299556C5546CAD511CA9F5A8

那么恭喜你,中招了。

原版下载:SysConst.rar

阅读剩余部分...

Idhttp伪造来源地址、Cookie欺骗、通过代理访问

作者:傻猫 发布时间:2010-08-11 17:56:55 分类:Delphi No Comments 32 Views

1、伪造来源地址:使用IdHttp可以伪造这个来源地址,而且很简单,只要在访问某地之前加上一句:
IdHttp1.Request.Referer := 'http://www.3464.com/';那么来源地址就变成了http://www.3464.com/而不是你实际的来源地址了。

2、Cookie欺骗:
如何用idhttp提交自己构造过的Cookie
我不知道的是:如果把自己构造过的Cookie传给idhttp让它提交。
比如站点 http://www.aaa.com 是要cookie的。
我已经在程序上放了idhttp和IdCookieManager。
我get http://www.aaa.com 后,idhttp通过IdCookieManager已经得到当前站点的Cookie了。
我可以用
for i := 0 to IdCookieManager1.CookieCollection.Count - 1 do
memo1.Lines.Add(IdCookieManager1.CookieCollection.Items[i].CookieText);
得到。

现在,如果我想更改这个cookie,或者说我想按这个Cookie的格式重新写一个,再用idhttp进行post。我应该怎么做?用途是Cookie欺骗等。
如:得到的Cookie为:skin=2; ASPSESSIONIDSQTSABQD=IEMKPIDBKKMEEKEHLLOIJJON; UserCode=3CA001D63984E6115FE55681%2E95
我更改为:skin=123; ASPSESSIONIDSQTSABQD=IEMKPIDBKKMEEKEHLLOIJJON; UserCode=3CA001D63984E6115FE55681%2E95
我再post

阅读剩余部分...

网页颜色对照表

作者:傻猫 发布时间:2010-08-09 23:02:22 分类:Web技术 2 Comments 27 Views

红色和粉红色,以及它们的16进制代码。

#990033 #CC6699 #FF6699 #FF3366 #993366 #CC0066
#CC0033 #FF0066 #FF0033 #CC3399 #FF3399 #FF9999
#FF99CC #FF0099 #CC3366 #FF66CC #FF33CC #FFCCFF
#FF99FF #FF00CC

紫红色,以及它们的16进制代码。

#FF66FF #CC33CC #CC00FF #FF33FF #CC99FF #9900CC
#FF00FF #CC66FF #990099 #CC0099 #CC33FF #CC99CC
#990066 #993399 #CC66CC #CC00CC #663366
蓝色,以及它们的16进制代码。
#660099 #666FF #000CC #9933CC #666699 #660066
#333366 #0066CC #9900FF #333399 #99CCFF #9933FF
#330099 #6699FF #9966CC #3300CC #003366 #330033
#3300FF #6699CC #663399 #3333FF #006699 #6633CC
#3333CC #3399CC #6600CC #0066FF #0099CC #9966FF
#0033FF #66CCFF #330066 #3366FF #3399FF #6600FF
#3366CC #003399 #6633FF #000066 #0099FF #CCCCFF
#000033 #33CCFF #9999FF #0000FF #00CCFF #9999CC
#000099 #6666CC #0033CC
黄色、褐色、玫瑰色和橙色,以及它们的16进制代码。
#FFFFCC #FFCC00 #CC99090 #663300 #FF6600 #663333
#CC6666 #FF6666 #FF0000 #FFFF99 #FFCC66 #FF9900
#FF9966 #CC3300 #996666 #FFCCCC #660000 #FF3300
#FF6666 #FFCC33 #CC6600 #FF6633 #996633 #CC9999
#FF3333 #990000 #CC9966 #FFFF33 #CC9933 #993300
#FF9933 #330000 #993333 #CC3333 #CC0000 #FFCC99
#FFFF00 #996600 #CC6633
绿色,以及它们的16进制代码。
#99FFFF #33CCCC #00CC99 #99FF99 #009966 #33FF33
#33FF00 #99CC33 #CCC33 #66FFFF #66CCCC #66FFCC
#66FF66 #009933 #00CC33 #66FF00 #336600 #33300
#33FFFF #339999 #99FFCC #339933 #33FF66 #33CC33
#99FF00 #669900 #666600 #00FFFF #336666 #00FF99
#99CC99 #00FF66 #66FF33 #66CC00 #99CC00 #999933
#00CCCC #006666 #339966 #66FF99 #CCFFCC #00FF00
#00CC00 #CCFF66 #CCCC66 #009999 #003333 #006633
#33FF99 #CCFF99 #66CC33 #33CC00 #CCFF33 #666633
#669999 #00FFCC #336633 #33CC66 #99FF66 #006600
#339900 #CCFF00 #999966 #99CCCC #33FFCC #669966
#00CC66 #99FF33 #003300 #99CC66 #999900 #CCCC99
#CCFFFF #33CC99 #66CC66 #66CC99 #00FF33 #009900
#669900 #669933 #CCCC00
白色、灰色和黑色,以及它们的16进制代码。
#FFFFF #CCCCCC #999999 #666666 #333333 #000000
16色和它们的16进制代码。
Aqua Black Fuchsia Gray Gree Lime
Maroon Navy Olive Purple Red Silver
Teal White Yellow Blue