摘要: 一、WSAStartup函数int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData );使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。以后应用程序就可以调用所请求的Socket库中的其它Socket函 阅读全文
posted @ 2011-05-11 18:32 星星的学习小志 阅读(272) 评论(0) 推荐(0) 编辑
摘要: function GetBiHua(chnstr:string):integer;constBiHuaTable=#10#7#10#10#8#10#9#11#17#14#13#5#13#10#12#15+#10#6#10#9#12#8#10#10#8#8#10#5#10#14#16#9+#12#12#15#15#7#10#5#5#7#10#2#9#4#8#12#13+#7#10#7#21#10#8#5#9#6#13#8#8#9#13#12#10+#13#7#10#10#8#8#7#8#7#19#5#4#8#6#9#10+#14#14#9#12#15#10#15#12#12#8#9#5#15#1 阅读全文
posted @ 2011-05-11 18:29 星星的学习小志 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,它在Windows单元中是这样声明的:typeTMsg = packed recordhwnd: HWND; / /窗口句柄message: UINT; / /消息常量标识符wParam: WPARAM ; // 32位消息的特定附加信息lParam: LPAR 阅读全文
posted @ 2011-05-11 18:27 星星的学习小志 阅读(745) 评论(0) 推荐(0) 编辑
摘要: {=========================================================================功 能: 网络函数库时 间: 2002/10/02版 本: 1.0=========================================================================}unit Net;interfaceusesSysUtils,Windows,dialogs,winsock,Classes,ComObj,WinInet;//得到本机的局域网Ip地址Function GetLocalIp(var Loc 阅读全文
posted @ 2011-05-11 18:27 星星的学习小志 阅读(388) 评论(0) 推荐(0) 编辑
摘要: ClientDataSet组件支持很多特性,其中一些与三级结构有关,而且还可以用在其他环境中。该组件说明了一个数据库完全映象在内存中,这使得可以进行动态的操作,如建立一个索引,其他数据集合通常不支持该特性。例如,为了对查询分类,我们通常是重新执行它。为了索引一个局部表格,需要定义索引。只有ADO数据集合有一些与ClientDataSet一样的动态索引功能。索引并不是ClientDataSet提供的全部功能。当我们拥有了索引之后,可以基于它定义组,可能是多级别的分组。对于确定一个记录在组中的位置(头、尾或中间位置),甚至有专门的支持。在组或整个数据表格中,我们可以定义总计;也就是说,可以动态计算 阅读全文
posted @ 2011-05-11 18:26 星星的学习小志 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 在Dephi中提供了一个抽象的数据类型TStream来支持对流式数据的操作。这些数据通常来自文件、数据库、内存对象、OLE对象等,TStream提供了统一、简洁的方法来进行数据的读写。在通常情况下,我们并不需要直接使用TStream类,对流式数据的读写封装在VCL控件的方法中。但是如果这些方法无法满足我们的要求,就需要自己手动控制数据的读写。 一、 TStream的常用的方法和属性:1. function Read(var Buffer; Count: Longint): Longint; virtual; abstract 2. function Write(const Buffer; Co 阅读全文
posted @ 2011-05-11 18:26 星星的学习小志 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 这应该不算是什么技巧,估计有数据库方面程序的DELPHI程序员都知道;本来没有写想到需要把它写成一篇贴子,但前不久看个别刚入门的兄弟的代码时。才发展他们还在刀耕火种,为此才想把它写出来算是对入门的兄弟们的一点帮助,让大侠们见笑了; 我们都知道TCLIENTDATASET有把对它其中的数据所做的修改记录下来的功能;如果需要还可以将 修改回复到以前的某个状态,而且结合DATASETPROVIDER还可能自动完成改动到SQL映射,将改动成批提交到数据库中 这个特性对于写数据库程序来说非常有用。其实我所说的保存CLIENTDATASET的数据也是利用这个特性来实现的; 代码很简单:unit uCDSS 阅读全文
posted @ 2011-05-11 18:25 星星的学习小志 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 随着“金盾工程”建设的逐步深入和公安信息化的高速发展,公安计算机应用系统被广泛应用在各警种、各部门。与此同时,应用系统体系的核心、系统数据的存放地――数据库也随着实际应用而急剧膨胀,一些大规模的系统,如人口系统的数据甚至超过了1000万条,可谓海量。那么,如何实现快速地从这些超大容量的数据库中提取数据(查询)、分析、统计以及提取数据后进行数据分页已成为各地系统管理员和数据库管理员亟待解决的难题。在以下的文章中,我将以“办公自动化”系统为例,探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页。以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结 阅读全文
posted @ 2011-05-11 18:24 星星的学习小志 阅读(137) 评论(0) 推荐(0) 编辑
摘要: procedure OBDCDelete(ODBCName:string);var registerTemp:TRegistry;begin registerTemp := TRegistry.Create; with registerTemp do begin try RootKey:=HKEY_LOCAL_MACHINE; if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then begin //注册一个DSN名称 DeleteValue(ODBCName); end ; closeKey; regis 阅读全文
posted @ 2011-05-11 18:23 星星的学习小志 阅读(291) 评论(0) 推荐(0) 编辑
摘要: unit WLFtp; interface uses Windows, Messages, Variants,SysUtils, Classes, Wininet, Dialogs; type TWLFtp = class(TObject) private FInetHandle: HInternet; // 句柄 FFtpHandle: HInternet; // 句柄 FHost: string; // 主机IP地址 FUserName: string; // 用户名 FPassword: string; // 密码 FPort: integer; // 端口 FCurrentDir: s 阅读全文
posted @ 2011-05-11 18:22 星星的学习小志 阅读(1395) 评论(0) 推荐(0) 编辑
摘要: 此方法不适用于9x系统我们知道在NT及以上操作系统提供了一个函数VirtualAllocEx,利用这个函数我们可以在其它进程中申请一块内存,其定义如下function VirtualAllocEx(hProcess: THandle; lpAddress: Pointer; dwSize, flAllocationType: DWORD; flProtect: DWORD): Pointer; stdcall;其中hProcess为要申请内存的进程的句柄,可以用如下方法得到指定的窗口所属的进程的进程句柄.Function GetProcessHandle: THandle;varWndHand 阅读全文
posted @ 2011-05-11 18:22 星星的学习小志 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组件的安装方法介绍一下。 1只有一个DCU文件的组件。DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布。一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会出现错误。也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。这样的组件的安装方法是:在Component菜单中,选择install component,在对话框中的"into existing package 阅读全文
posted @ 2011-05-11 18:21 星星的学习小志 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 近日做的程式需要取得字符点阵数据的功能,研究了一下,费了点周折才成功,现将方法总结如下。 取得字符点阵主要用GetGlyphOutline函数:DWORD GetGlyphOutline( UINT nChar, UINT nFormat, LPGLYPHMETRICS lpgm, DWORD cbBuffer, LPVOID lpBuffer, const MAT2 FAR* lpmat2 )他需要类型为GLYPHMETRICS、MAT2的变量;MAT2 结构要手动填充, GLYPHMETRICS结构则由GetGlyphOutline填充;GLYPHMETRICS包含了点阵数据的一些有用的信 阅读全文
posted @ 2011-05-11 18:21 星星的学习小志 阅读(1265) 评论(0) 推荐(0) 编辑
摘要: 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。 在使用本文中的例子之前,你必须注意以下的问题。大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统使用哪一天作为一周的第一天。所有以下的例子都是以星期天作为 阅读全文
posted @ 2011-05-11 18:20 星星的学习小志 阅读(209) 评论(0) 推荐(0) 编辑
摘要: //-----下面是一个支持任意表的 SQL SERVER2000分页存储过程//----分页存储过程开始创建-----------------------------------------------------------------------------------------------------------IF EXISTS (SELECT name FROM sysobjects WHERE name = 'PageShowOne' AND type = 'P') DROP PROCEDURE PageShowOneGOCREATE Proc 阅读全文
posted @ 2011-05-11 18:18 星星的学习小志 阅读(283) 评论(0) 推荐(0) 编辑
摘要: unit Fuck_CAD_Unit;interfaceuses Windows, TLHelp32,SysUtils;const MyKernel='SnowmanLockScreenHook.Dll'; //释放完得文件名,可以自己改 Winlogon='winlogon.exe'; MyKernelSize=9216; MyKernelBuf:Array [0..9215] of Byte = ( $4D,$5A,$50,$00,$02,$00,$00,$00,$04,$00,$0F,$00,$FF,$FF,$00,$00, $B8,$00,$00,$00 阅读全文
posted @ 2011-05-11 18:17 星星的学习小志 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 把主菜单作以下调整:OnMeasureItem指向MeasureMainItem、OnAdvancedDrawItem指向DrawMainItem,子菜单的OnMeasureItem指向MeasureSubItem、OnAdvancedDrawItem指向DrawSubItem,调整颜色或使用默认颜色即可达到效果//调整主菜单项尺寸procedure TForm1.MeasureMainItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer);begin Width := Width + 6; Height := H 阅读全文
posted @ 2011-05-11 18:16 星星的学习小志 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 越来越多的程序使用了多国语言切换,虽然Delphi自带多语言包的添加和配置,但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍给大家的是利用INI文件来读取界面的语种文字,用这种方法,不但简单易行,而且在切换的时候不会出现界面的闪烁。我们从一个例子出发,看看怎么实现语言的切换。首先建立一个新工程。放置如下组件:(如图) MainMenu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Label1: TLabel; Button1: TButton; CheckBox1: TCheckBox; CheckBox2: TChe 阅读全文
posted @ 2011-05-11 18:16 星星的学习小志 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 数说明:f文件名、s写入或读取的文件内容、hs文件头、b是否读写文件头。UTF-8文件写入函数程序代码 程序代码procedureSaveUTF(f:string;s:string;b:boolean=true);varms:TMemoryStream;hs:String;beginifs=''thenexit;ms:=TMemoryStream.Create;ifbthenbegin hs:=#$EF#$BB#$BF; ms.Write(hs[1],3);end;s:=AnsiToUtf8(s);ms.Write(s[1],Length(s));ms.Position:=0; 阅读全文
posted @ 2011-05-11 18:15 星星的学习小志 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 问题的提出最近要编写一个考试系统,使得考生能自主地取得试卷并进入考试,考试期间系统自动计时并在考试结束后自动回卷到服务器。取卷、回卷功能都已实现,但在整个考试过程中能成功地准确计时,必须使得程序不在中途被关闭掉。退一步来说,即使程序中途被关闭,也要自动地重新起动,并以之前已保存的时间记录继续工作。解决的思路对于这种监控用的程序除了程序的交互界面要做得不能让用户退出外,更应该注意到用户使用诸如“任务管理器”等“暴力”的手段来终止程序。而对付这种终止程序的方法一般来说有以下两种方法:第一种方法,把监控程序的进程伪装起来。例如把进程的名称改为与系统进程相仿的名字,让用户不敢终止或忽略这个进程,更甚者 阅读全文
posted @ 2011-05-11 18:14 星星的学习小志 阅读(822) 评论(0) 推荐(0) 编辑