| 便便's profile可爱的便便PhotosBlogLists | Help |
|
|
3/11/2006 [软件] 网页IP转换工具 Lily Ip SearchLily Ip Search ==================================================== v2.00 ReadMe Powered by Net ==================================================== 将网页上的ip地址转为物理地址。 安装后,重新打开浏览器。 在网页中点击右键,选择“转换页面所有IP地址”: ![]() 原图: ![]() 转换后: ![]() 下载: http://www.onlinedown.net/soft/47715.htm 7/31/2005 [郁闷] 装控件装死我了为了编译那个“胜天进销存 (源代码)”,安装下列控件:
需要安装的控件包
DevExQuantumGrid v3.22 Pro for D6,D7 表格控件 ExpressBars v4.2 (工具条控件) RX Library 2.75 D7 (控件包) ExpressQuantumGrid Suite v 4.2 表格控件 SkinEngine v3.4.7 (皮肤界面控件包) 需要编译的控件包(不需要安装) InfoPower 4000.0.3 (数据库控件包) Report Machine 2.6 报表控件包 TsncCurrency 货币编辑控件 V1.1 vclzip2.23 需要安装的微软的 MSAGENT.EXE 比较麻烦的 ehlib3 哎哟,装死我了,装了一下午。那个 ExpressQuantumGrid Suite v 4.2 尤其恶心,一装会把原来Delphi里的搜索路径清空,气死我了。(后来看人家的评论,这个可以不用装)
后来越来越郁闷,又碰到Express系列的到处不兼容。心一横,把所有都卸了,再把Delphi卸了,嘿嘿。重来一遍,而且上面说什么版本就什么版本(原来尽量升级到新一点的版本,因为以我自己的经历,旧版本有好多bug),那个郁闷啊。
装完,路径加好,编译,P4 2.8G 512M的编译了一分钟,一大堆Warning,还好没有Fatal error。唉,总算是成功了。
运行,Win2000系统报错:“Cannot find procedure starting adress GetGlobalBabyJITEnabled in DLL-file
CLBCatQ.DLL”。好像是系统的问题,因为我运行了一下原来可以的程序,也有这个错误。可能是连ACCESS数据库的问题。不管了,反正程序没大问题。 最后,鄙视用那么多控件的程序。。。。我靠。。。。 7/29/2005 [更新] 百合IP搜索 Lily Ip Search v2.0 v2.00 ReadMe Powered by Net
==================================================== IP搜索在本程序内完成,不再调用珊蝴虫QQ的dll 点击地址后IP信息复制到剪贴板
解决旧版本在XP等系统上不能正常工作的bug
解决旧版本再次调用出现乱码的bug
制作安装文件,方便安装/卸载
[呵呵] ipsearch的问题v1.00版本用的是QQ外挂的ipsearcher.dll,不过好像在xp系统里面COM调用出问题:值不能传给JavaScript。
后来没办法,只好自己写查询ip了。
网上找了php的、c#的查询QQWry.Dat的代码,想改成Delphi的,后来发现也有Delphi的代码,就拿来改了改,试了试,发现这样调用是没有问题的。
于是,想当然的把MyIP.dat也当成QQWry.Dat的格式来查找,发现报错(不过一直没怀疑到这点上来,好笨笨)。呵呵,后来发现格式是不一样的。
发信给MyIP.dat的作者问格式,好像没在上网。
呵呵,自己先用UltraEdit打开看看MyIP.dat,格式比QQWry.Dat简单多了。大概是这样的:
文件头:0000h - 00c1h(偏移194)
下面是数据记录,每个记录占用106长度:起始ip占用16,结束ip占用16,国家占用14,地区占用47,感谢人占用13
好像查找是按照记录从头到脚查的。
用Delphi描述每个记录:
TMyIPRecord = record
startIP: string[16]; endIP: string[16]; country: string[14]; area: string[47];
thank: string[13];
end; 不知道对不对,暂时这样写着。作者实在联系不到就这样试试吧。
{===============================================================================
TMyIP Class with MyIP.dat - by bianbian (yuelinniao#hotmail.com) Status: Freeware
Compiler: Delphi4, Delphi5, Delphi6, Delphi7 Version: 1.0 Lastdate: 2005-07-29 Url: http://spaces.msn.com/members/yuelinniao 在此unit中,实现了对于QQ自定义IP数据库(MyIP.dat)的IP数据库的检索
===============================================================================} unit untMyIP;
interface
uses
SysUtils, Classes, Math, dialogs; const
_header = 193; //文件头偏移 _startIP = 16; //开始ip的长度 _endIP = 16; //结束ip的长度 _country = 14; //国家的长度 _area = 47; //地区的长度 _thank = 13; //感谢人的长度 type
TMyIP = class(TObject) public constructor Create(cQQWryFileName: string); destructor Destroy; override; function GetIPAddress(IP: string): string; protected function GetIPValue(IP: string): Cardinal; private MyIPFileStream: TFileStream; end; implementation
constructor TMyIP.Create(cQQWryFileName: string);
begin inherited Create; MyIPFileStream:=TFileStream.Create(cQQWryFileName, fmOpenRead or fmShareDenyWrite, 0); end; destructor TMyIP.Destroy;
begin MyIPFileStream.Free; inherited Destroy; end; ///** //* 给定一个IP地址,返回该项记录的信息 //* @param IP IP地址 string //* @return 国家信息+地区信息 string //*/ function TMyIP.GetIPAddress(IP: string): string; function SearchAddress(IPRecordFrom, IPValue: Cardinal): string; var strStartIP: string[_startIP]; strEndIP: string[_endIP]; CompareIPValue1, CompareIPValue2: Cardinal; strCountry: string[_country]; strArea: string[_area]; begin Result := ''; MyIPFileStream.Seek(IPRecordFrom, soFromBeginning); MyIPFileStream.Read(strStartIP, _startIP);
MyIPFileStream.Read(strEndIP, _endIP); try strStartIP[_startIP] := Chr(0); strEndIP[_endIP] := Chr(0); except end; CompareIPValue1 := GetIPValue(strStartIP);
CompareIPValue2 := GetIPValue(strEndIP); //找到了
if (IPValue >= CompareIPValue1) and (IPValue <= CompareIPValue2) then begin MyIPFileStream.Read(strCountry, _country); MyIPFileStream.Read(strArea, _area); Result := strArea; //这里只返回区域 end else if (IPValue > CompareIPValue2) then //比大的还要大,查下一个 begin IPRecordFrom := MyIPFileStream.Position + _country + _area + _thank; Result := SearchAddress(IPRecordFrom, IPValue); end; end; begin Result := SearchAddress(_header, GetIPValue(IP)); end; ///**
//* 给定一个IP地址(四段点分字符串形式),返回该IP的数值 //* @param IP IP地址(四段点分字符串形式) string //* @return 该IP的数值 Cardinal //*/ function TMyIP.GetIPValue(IP: string): Cardinal; var tsIP: TStringlist; i: integer; function SplitStringToStringlist(aString: string; aSplitChar: string): TStringlist; begin Result:=TStringList.Create; while pos(aSplitChar, aString)>0 do begin Result.Add(copy(aString, 1, pos(aSplitChar, aString)-1)); aString:=copy(aString, pos(aSplitChar, aString)+1, length(aString)-pos(aSplitChar, aString)); end; Result.Add(aString); end; begin tsIP:=SplitStringToStringlist(IP, '.'); Result:=0; for i:=3 downto 0 do begin Result:=Result + StrToInt(tsIP[i]) * trunc(power(256, 3-i)); end; end; end. 7/28/2005 [原创] 百合IP搜索 Lily Ip Search v1.00 百合IP搜索 Lily Ip Search v1.00 ReadMe ==================================================== Powered by Net 将网页上的ip地址转为物理地址。 运行RegLilyIpSearch.exe安装和卸载。 在网页中点击右键,选择“转换页面所有IP地址”: ![]() 效果图: ![]() v1.0下载已经不可用,请下v2.0 5/24/2005 [原来] 原来连个Postgres这么麻烦要装BDE,psqlodbc。 呵呵,今天客户那里没有BDE,我机器上因为装了Delphi,有BDE。 客户装了ODBC后连不上数据库,连不上数据库就不能批量导数据(总不能天天让欧干这种活吧)。 呵呵。后来装了BDE就搞定了。 [牢骚] 我靠。。。。我就服了TTable晚上用Delphi把Excel的数据导入到Postgres数据库里(领导说客户明天就要用,sign)。 怎么都提示找不到字段。 于是改字段、加字段、移字段。。。。。还是失败。 于是重启数据库、重新删了配置ODBC,重新。。。。。还是失败。 我靠,后来发现Delphi的TTable(访问数据库表的控件)里面居然要事先指定Table的所有字段名。 我靠,没见过这么白痴的控件。我就服了! 害我和项目经理搞到现在。。。。。。。。。5555555555。。。。。。。。 TTable啊,你不会是我的仇家派来故意玩我的吧~
|
|
|