![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
delphi
shuihan20e
这个作者很懒,什么都没留下…
展开
-
窗体生成的过程
program Project1; uses Windows, Messages; {等待调用的过程, 用于在窗体上绘制文本} Procedure OnPaint(h: HDC); const s = CodeGear Delphi 2007; begin TextOut(h, 10, 10, PChar(s), Length(s)); end; {转载 2008-07-11 11:44:00 · 551 阅读 · 2 评论 -
DELPHI中完成端口(IOCP)的简单分析(3)
最近太忙,所以没有机会来写IOCP的后续文章。今天好不容易有了时间来写IOCP的粘包处理问题。TCP数据粘包的产生原因在于TCP是一种流协议。在以太网中一个TCP的数据包长度是1500位。其中20位的IP包头,20位的TCP包头,其余的1460都是我们可以发送的数据。在数据发送的时候,我们发送的数据长度有可能比1460短,这样在TCP来说它还是以一个数据包来发送。从而降低了网络的利用率。转载 2009-05-16 13:21:00 · 570 阅读 · 0 评论 -
利用DELPHI开发完成例程(2)
对于使用完成例程来实现发送数据,其实现类似于接收方法。一下我大概讲述一下。首先定义一个发送的回调函数:procedure SendWorkerThread(Error:DWORD;BytesTransferred:DWORD;IoData: PIOData;InFlags:DWORD);stdcall;FComletionRoutine:=TCompletionRoutine(I转载 2009-05-16 13:25:00 · 670 阅读 · 0 评论 -
DELPHI中完成端口(IOCP)的简单分析(2)
今天我写一下关于DELPHI编写完成端口(IOCP)的工作者线程中的东西。希望各位能提出批评意见。上次我写了关于常见IOCP的代码,对于IOCP来说,接受到客户端发送过来和自己发送出去的数据都是从工作者线程中得到。代码和解释如下:function ServerWorkerThread(CompletionPortID:Pointer):Integer;stdcall;begin Comp转载 2009-05-16 13:21:00 · 1034 阅读 · 1 评论 -
DELPHI中完成端口(IOCP)的简单分析(1)
我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构 LPVOID = Pointer; LPPER_IO_OPERATION_DATA = ^转载 2009-05-16 13:19:00 · 1139 阅读 · 0 评论 -
利用DELPHI开发完成例程(1)
对于网络开发者来说,完成例程应该是一个不陌生的概念(什么?你不知道?去看看书吧)。我在网上看了一下,发现完整实现完成例程的代码很少。前些日子由于工作不是很忙就自己写了一个,今天将如何实现公布出来,希望对大家有个帮助。由于水平有限,代码中难免会有不对的地方,希望各位看客能不吝指出。言归正传。完成例程在其性能上仅次于IOCP。通过我的测试,觉得一般支持1000-2000的客户端应该没有什转载 2009-05-16 13:24:00 · 753 阅读 · 0 评论 -
DELPHI中完成端口(IOCP)的简单分析(4)
在我以前写的文章中,一直说的是如何接收数据。但是对于如何发送数据却一点也没有提到。因为从代码量上来说接收的代码要比发送多很多。今天我就来写一下如何使用IOCP发送数据。 function TNetControl.SendSpecifyData(const Socket: TSocket; Data: array of char; DataLen: Integer): Boolean;c转载 2009-05-16 13:22:00 · 508 阅读 · 0 评论 -
项目总结
上一项目终于验收通过了,终于可以松一口气了。 即时项目不大,时间也不是特别紧,但总感觉那是到目前为止做过的最累的项目。由于没有独自去做过需求分析,而且对对方信息工程部的人员素质估计过高(-_-!!!),导致最后的产品和最初的需求分析差别比较大。 不过通过这个项目,收获还是不少的。从头到尾,完完整整的参与了一个IM的开发,进一步了解indy(以后可能不会再用indy甚至delphi了原创 2009-05-13 11:17:00 · 605 阅读 · 1 评论 -
用dll封装mdi窗口
***********************main (mdi) form***********************unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type TShowFr原创 2008-12-27 12:35:00 · 865 阅读 · 0 评论 -
Delphi组件indy 10中IdTCPServer修正及SSL使用心得
indy 10终于随着Delphi2005发布了,不过indy套件在我的印象中总是复杂并且BUG不断,说实话,不是看在他一整套组件的面子上,我还是喜欢VCL原生的Socket组件,简洁,清晰。Indy9发展到了indy10几乎完全不兼容,可叹啊。言归正传。在使用IdTCPServer组件的时候发现了他的漏洞,他的OnConnec,OnExecute,OnDisconnect等事件是在其他线程转载 2008-12-06 15:05:00 · 1282 阅读 · 0 评论 -
indy9做后个即时通讯的小程序
前一段时间发布几篇小文章,也是关于一个即时通讯的,但是那是公司的一个项目,因为涉及到公司的一些机密,没有发表完。 前段时间一个朋友托我给他们公司做个小的局域网的即时通讯,准备把它整理一下,发上来,初学者可以看看。高手嘛,也可以看看,指出其中的不足,也能帮助我来提高自己的水平,^_^ 这个小程序用的indy9来做的,主要用到了IdTcpServer,IdTcpClient,IdFTP原创 2008-11-27 09:34:00 · 557 阅读 · 0 评论 -
New 和 GetMem 的不同之处
如果操作一个 record 指针中的字符串变量,会不会丢失 string 的内 存空间,造成内存泄漏? 结果是:使用 New() 分配的内存,会自动初始化 record 的内容,并且在 Dispose 时自动 清除所有已分配的内存,包括 string 或其他动态数组的内存。GetMem/FreeMem 没有这个 性质。事实上,New() 中调用了 GetMem,并且执行了一些初始化的操作。 代码如转载 2009-01-02 16:27:00 · 667 阅读 · 0 评论 -
从Indy9升级到Indy10时IdTcpServer的变化
从Indy9升级到Indy10时IdTcpServer的变化 一、从Indy9升级到Indy10时IdTcpServer的变化 试用了CodeGear2007后感觉挺好的,于是决定升级。别的都很顺利,就是程序中用到的控件Indy9.18要升级到Indy10.15转载 2008-06-13 09:54:00 · 2688 阅读 · 0 评论 -
如何截取被看不见的视窗内容?
原来,在 Window2K下实现这个功能还真不容易。在XP下有一个新的API函数,PrintWindow,网上有一段代码。整理如下,测试后发现OK。PrintWindow 的声明如下:function PrintWindow(SourceWindow: hwnd; Destination: hdc; nFlags: cardinal): bool; stdcall; external转载 2008-06-11 17:11:00 · 713 阅读 · 1 评论 -
精通OCX工程构架
精通OCX工程构架1 工程构架 不能为MDI。ocx工程的主窗体嵌在浏览器中,当前的活动窗口为浏览器,如果为MDI类型,当子窗体打开时,则找不到活动的MDI父窗体。所以,工程中所有窗体的FormStyle属性都应设为fsNormal。2 在程序中关闭浏览器 可以在程序中向浏览器发送关闭消息。在消息发送之前,必须得到浏览器的窗口句柄。代码如下: PostMessage(GetActiveW转载 2008-06-03 12:04:00 · 1058 阅读 · 0 评论 -
十六进制转化成二进制
function HexToBinText(sIn: String): String;const HEX_BINSTR_Prefx: array [0..15] of String[4] = ( 0000 , 0001转载 2008-06-03 11:58:00 · 1507 阅读 · 1 评论 -
一个小型即时通讯项目的开发经验4--模块设计与功能分配
FTP服务器 要实现的主要功能点 FTP服务器实现标准的FTP协议,用于各种文件的上传下载。 FTP服务器的端口、用户名、密码都可以配置,默认走21端口。由于客户端并不能实时的获取到这些参数的改变,因此,尽可能确定好以后就不要修改。 FTP服务器为提高安全性,不支持匿名上传、下载。 支持断点上传、断点下载,能适原创 2008-05-29 23:40:00 · 542 阅读 · 0 评论 -
浅析Delphi实现IOCP后的优化
在我的BLOG中有几篇文章是关于如何用DLEPHI来实现IOCP,详见我的BLOG《DELPHI中完成端口(IOCP)的简单分析》。在这几篇文章中介绍了如何编写一个简单的IOCP的方法。最近我重新对这些文章中的一些BUG和效率低下的部分做了修正(其实相当于重新编写),通过几个不同的途径对IOCP进行了实现。下面我就来说一下我对以前代码的优化方法。 1:结构定义部分。首先我们必转载 2009-05-16 13:26:00 · 2059 阅读 · 2 评论