Delphi_学聚网——聚合学习资源

Delphi 技术文档

  链接标题:delphi_学聚网  链接描述:delphi 技术文档
  链接地址http://www.techrss.cn/searchlist/delphi.htm  更新时间:2008-11-22 20:35:18
  RSS 地址http://www.techrss.cn/searchlist/rss/Delphi.xml [复制RSS地址]   推荐人:中文RSS(CN-RSS.COM)


用DELPHI 做一个简单的屏幕保护程序

一、首先创建一个窗体,在窗体中加入一个timer控件和一个label控件,各控件名称和重要属性设置如下。二、为了使该程序在每台计算上都以同样大小显示,需要设置屏幕运行时的尺寸。三、当有击键和鼠标移动后退出程序的实现四、实现label的来回移动。 用DELPHI 做一个简单的屏幕保护程序 利用DELPHI强大的功能,再加上你的精彩设想可以很容易作出一个屏幕保护程序。步骤如下:一、 首先创建一个窗体,在窗体中加入一个timer控件和一个label控件,各控件名称和重要属性设置如下。窗体名称:Form1属性:borderstyxe :bsnone ; color : clblack ;windowstate: wsmaximized;标签名称: label1;属性: caption;这是一个屏幕保护程序;Autosize:True ;时钟名称: Timer1;属性: interval :100;
  [阅读全文]  [返回页首]

Inno Setup基本用法

1.打开Inno Setup,选择''用脚本向导创建一个新的脚本文件'',单击''确定''2.单击''下一步''3.输入相应的应用程序信息,单击''下一步''4.设置应用程序目录,单击''下一步''5.选择你的可执行文件,并在其他应用程序文件中添加以下文件: (1)CMS07 说明:数据库备份文件 (2)osql.exe 说明:在Sql的bin目录下有此文件 (3)Restore.txt文件,里面的内容是: use master if exists (select * from sysdevices where name='cms07') EXEC sp_dropdevice 'cms07' Else EXEC sp_addumpdevice 'disk','cms07', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\cms07.mdf' restore database cms07 from disk='C:\Program Files\myapp\cms07' with replace 注意:数据库名要写你自己的 (4)Restore.bat文件,里面的内容是: osql -E -S -i Restore.txt 6.一直单击''下一步''(中间还可根据需要做一些修改),最后点击''完成'',..
  [阅读全文]  [返回页首]

一个程后台扫描的程序

来自 unit1.pasunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Tabs, ExtCtrls, ComCtrls, IdHTTP, Unit2;typeTForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; TabSet1: TTabSet; StatusBar1: TStatusBar; ProgressBar1: TProgressBar; Panel1: TPanel; GroupBox1: TGroupBox; Memo1: TMemo; Edit2: TEdit; Button2: TButton; Button3: TButton; Button4: TButton; GroupBox2: TGroupBox; Memo2: TMemo; GroupBox3: TGroupBox; Memo3: TMemo; Button5: TButton; OpenDialog1: TOpenDialog; procedure TabSet1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Butt..
  [阅读全文]  [返回页首]

加密解密时遇到的"不正确的数据"以及"要解密的数据长度无效"问题解决方案

这两天一直在为文件加密解密时,由于关闭数据转换链接流CryptoStream或者使用FlushFinalBlock时出现的“不正确的数据”和“要解密的数据长度无效”异常而烦恼,到现在也没弄懂具体是什么问题,如果有哪位高人能指点一下,在下不胜感激。 不过问题最终还是解决了,改变了加密和解密时的读取和写入的方式来解决了,最初都是直接对文件流操作,昨晚把它们修改为直接操作内存流。下面是操作文件流和操作内存流代码的对比: 直接操作文件流---加密: 程序代码: /// <summary>/// 文件加密/// </summary>/// <param name=''inFileName''>需要加密的文件(文件的完整路径)</param>/// <param name=''outFileName''>加密后的文件(文件的完整路径)</param>/// <param name=''sAlgorithm''>对称算法实例</param>/// <returns>bool</returns>private bool EncryptFile(string InFileName, string Ou..
  [阅读全文]  [返回页首]

DELPHI第三方组件的简单安装方法

DELPHI安装第三方组件,可以按照组件提供的文件类型对号入座进行安装: 1、DCU文件——DCU文件是作者已编译好的单元文件,是没有组件的源码。安装时注意版本要和DELPHI一致。 方法:点击Component,选择install component,在对话框''into existing package''页中,单击“Unit file name”后的“Browse”按扭,在打开的文件对话框中,将“文件类型”设定为*.dcu,找到要安装的DCU文件,按OK按钮返回''into existing package''页后再按OK按钮就可以安装了。 此时Delphi会提示dclusr.dpk将被重建,是否继续,这里是将这个组件安装到dclusr.dpk包中,(此包是用户自定义组件包,当然我们也可以选择安装到一个新的包中),点OK即可。 安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等,到组件面板上看看,一般会出现一个新的组件页,其中有刚安装的组件。 2、PAS文件——这是组件的源码。 方法:跟1类似,只需要将“..
  [阅读全文]  [返回页首]

windows实用命令

来自 winver---------检查Windows版本 wmimgmt.msc----打开windows管理体系结构(WMI) wupdmgr--------windows更新程序 wscript--------windows脚本宿主设置 write----------写字板 winmsd---------系统信息 wiaacmgr-------扫描仪和照相机向导 winchat--------XP自带局域网聊天 mem.exe--------显示内存使用情况 Msconfig.exe---系统配置实用程序 mplayer2-------简易widnows media player mspaint--------画图板 mstsc----------远程桌面连接 mplayer2-------媒体播放机 magnify--------放大镜实用程序 mmc------------打开控制台 mobsync--------同步命令    dxdiag---------检查DirectX信息 drwtsn32------ 系统医生 devmgmt.msc--- 设备管理器 dfrg.msc-------磁盘碎片整理程序 diskmgmt.msc---磁盘管理实用程序 dcomcnfg-------打开系统组件服务 ddeshare-------打开DDE共享设置 dvdplay--------DVD播放器    net stop messenger-----停止信使服..
  [阅读全文]  [返回页首]

清理IIS LOG中自己登录ip的VBS

网络大本营 Option Explicit Dim sourcefile,ipaddress,objargs const destfile=''tempfile''Const ForWriting = 2 Dim TextDim fso,objNet,ServiceObjDim txtStream, txtStreamOut Set objArgs = WScript.Arguments If objArgs.Count = 2 Then sourcefile=objArgs(0)ipaddress=objargs(1)Elsewscript.echo ''Parameter Error''+ vbcrlfwscript.Echo ''USAGE:KillLog.vbs LogFileName YourIP.''wscript.Quit 1End If Set fso = CreateObject(''Scripting.FileSystemObject'')if fso.FileExists (sourcefile) thenSet objNet = WScript.CreateObject( ''WScript.Network'' )Set ServiceObj = GetObject(''WinNT://'' & objNet.ComputerName & ''/w3svc'')Set objNet=nothingServiceObj.stopwscript.sleep 6000Set txtStream = fso.OpenTextFile(sourcefile) Set txtStreamOut = fso.OpenTextFile(destfile, ForWriting, True)Do While Not (tx..
  [阅读全文]  [返回页首]

修改SQL Server数据库的逻辑文件名

使用 FILE_NAME 函数可以返回给定文件标识 (ID) 号的逻辑文件名。 如下: 下例返回 file_ID 为 1 的文件名(master 数据库文件)。 USE master SELECT FILE_NAME(1) 当我们进行从一个备份中还原数据库时,数据库的逻辑文件名是不会改变的。 可用 ALTER DATABASE 的 MODIFY FILE 子句作为替代方式更改数据文件或日志文件的逻辑名称。 alter database 数据库名 modify file ( name=逻辑名 ,newname=新逻辑名 ) 事实上,上面的语句是更改了sysfiles和sysfiles1系统表中的name字段。 例如: /*修改逻辑文件名*/ USE staff_db alter database staff_db modify file ( name=MIS2007_Data ,newname=STAFF_DB_Data ) alter database staff_db modify file ( name=MIS2007_Log ,newname=STAFF_DB_Log )
  [阅读全文]  [返回页首]

C#:文件的按行读/写及文件目录对话框的使用

按行读写文件 判断文件是否存在:File.Exists(string filePath) 判断目录是否存在:Directory.Exists(''D:\\LastestVersion'') 按行读取文件: int fileCount=0; // Open the file just specified such that no one else can use it. StreamReader sr = new StreamReader(textBox.Text.Trim()); while(sr.Peek() > -)//StreamReader.Peek()返回下一个可用字符,但不使用它 { listBox.Items.Add(sr.ReadLine()); fileCount++; } sr.Close(); 按行写入文件: StreamWriter sw = new StreamWriter(''D:\\result.txt''); for(int i=0;i<0;i++) { sw.WriteLine(''这是第''+i.ToString()+''行数据''); } 文件目录对话框的使用 文件对话框即过滤条件的使用: string resultFile=''''; OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = ''D:\\Patch'' ; openFileDialog.Filter = ''All files (*.*)|*.*|txt fil..
  [阅读全文]  [返回页首]

如何在 Windows NT 和 Windows 2000 中使用自定义页面大小打印

来自 概要在 Microsoft Windows 95、Windows 98 和 Windows Millennium Edition (Me) 系统上,可以灵活地自定义页面大小。但在运行 Windows NT 和 Windows 2000 的系统上,必须先将所有页面大小定义为页形 (form) 才能使用。本文介绍如何在 Windows NT 和 Windows 2000 上打印自定义页面大小,并包含一个代码示例,演示如何添加、选择和删除自定义页形。 备注:由于 Visual Basic 5.0 Printer 对象的特性,通过调用ResetDC 对 DEVMODE 所做的更改不起作用。因此,本文中的代码示例不适用于 Visual Basic 5.0。 本文分为以下几个部分: • 定义或选择页面大小的 DEVMODE 成员 • 如何通过编程方式选择页形 • 页形来源和函数 • 为网络打印机添加本地打印驱动程序的步骤 • 分步示例 更多信息定义或选择页面大小的 DEVMODE 成员打印机将其默认设置存储在名为 DEVMODE 的结构中。定义或选择页面大小时,可能会涉及此结构的四..
  [阅读全文]  [返回页首]

关于MS SQL Server数据库文件

从总体来看,数据库文件包括如下一些文件: · 一个主数据文件(.mdf) · 0个或多个辅助数据文件(.ndf) · 1个或多个日志文件(.ldf) 他们各自的作用又是什么呢?答案实际上很明显,我再次强调一下: · 主数据文件:除了存储数据以外,还可以跟踪其余的数据库文件,估计是存储了index页面和allocation页面的结果。简单地说就是用来存放系统表和数据的。在用最简单的create database命令创建数据库时,主数据文件的默认大小为master数据库主数据文件的大小。 · 辅助数据文件:在主数据文件达到最大值之后来存储数据用的,至于当用户插入一条记录,究竟是插入主数据文件中还是插入到辅助数据文件中,还是两个数据库文件都插入相同的一条记录,这个问题后面具体讨论。 · 日志文件:存储恢复事务的所有必要的信息,因为事务的回复主要是靠日志来完成,所以日志文件在数据库文件中是必备的,至少有..
  [阅读全文]  [返回页首]

在Vista操作系统中通过manifest文件使VC应用程序获得管理员权限

VC编译出来的应用程序在vista下运行,有可能因为权限问题,不能成功运行。 用以下办法,给应用程序添加一个manifest文件,程序运行时系统就会跳出UAC对话框,获得管理权限。 1.打开应用程序的源代码工程 2.添加一个“custom”资源,''resource type''填24,把资源ID改为1,然后把以下内容复制到资源内容中保存 <?xml version=''1.0'' encoding=''UTF-8'' standalone=''yes''?><assembly xmlns=''urn:schemas-microsoft-com:asm.v1'' manifestVersion=''1.0''><assemblyIdentity version=''1.0.0.0'' processorArchitecture=''X86'' name=''mulitray.exe.manifest'' type=''win32''/><trustInfo xmlns=''urn:schemas-microsoft-com:asm.v3''> <security> <requestedPrivileges> <requestedExecutionLevel level=''requireAdministrator'' uiAccess=''false''/> </re..
  [阅读全文]  [返回页首]

真正的Java学习从入门到精通

一、 工具篇JDK (Java Development Kit)   JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。   1、 JDK的下载和安装   JDK又叫做J2SE(Java2 SDK Standard Edition),可以从Sun的Java网站上下载到,http://java.sun.com/j2se/downloads.html ,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页面在这里:http://java.sun..
  [阅读全文]  [返回页首]

在Delphi中使用DirectX

Delphi作为一种方便的可视化程序设计语言,一 直非常受大家喜爱。但它在图形处理、3D表现等方面 不很让人满意。如果说你要开发一个Windows95下的 3D游戏,你会用什么工具呢?DirectX!不少人会不加 思索地答道。然而接触过DirectX的朋友们都知道它 内部的结构复杂,一般来说结合VC开发是一个理想 的组合。而要在Delphi中利用DirectX SDK真是难上 加难。但现在一切都好啦,有了本文介绍的DelphiX 组件,你终于可以用你熟悉的Delphi来开发漂亮的图 形程序了。   DelphiX是由日本人Hiroyuki Hori开发的使Di rectX5.0在Delphi中更容易使用的一套控件,从网上 下载时叫DelphiX.zip,837KB。解开后在bin目录下 运行install_for?(根据你的Delphi版本号,支持3.0和 4.0),DelphiX会自动将控件安装到你的Delphi中,帮 助文件也自动融合到Delphi的帮助里,真是好用极 了!   DelphiX包括的控件有如下这些:   TDXDraw 最重要的控件,是DirectDraw和Direct3D的基础..
  [阅读全文]  [返回页首]

怎样闪烁应用程序在任务栏上的按钮

如果您创建的应用程序是运行在Windows 98或更高版本操作系统上,您可以通过调用API函数FlashWindowEx并赋给它一个FlashWInfo结构体来实现. 而如果是运行在Windows 95上则比较麻烦, 但您也可以通过使用一个Timer组件来实现想要的效果。 FlashWindowEx 当您调用API函数FlashWindowEx时,一个TFlashWInfo被用来控制Windows实现该闪烁功能的信息. 幸运的是,Delphi已经为您封装了该结构体。Delphi中它被申明如下:type TFlashWInfo = record cbSize : LongInt; hWnd : LongInt; dwFlags : LongInt; uCount : LongInt; dwTimeout : LongInt; end; 您所需做的全部事情仅仅是填充和组装该记录类型,并调用API函数。本例中,我把两者放在了一个按钮的OnClick事件中,当然您也可以放置它们到任何合适的地方:procedure TForm1.Button1Click(Sender: TObject);var FWinfo: TFlashWInfo;begin FWinfo.cbSize := 20; FWinfo.hwnd := Application...
  [阅读全文]  [返回页首]

C语言直接显示汉字

在模式 13H 下, 直接写屏显示汉字. 其中 hzk16 是 UCDOS 的字库, 把它放在当前目录下 显示汉字用的是 区位码, 稍加修改可变成显示其它码.// Graphics Mode 13h Test, Display a Chinese String, Wildrose Inc.// Compile it with Watcom C/C++ 10.0 compiler// Copyright(c) Jan. 1997 ZhangWei// All rights reserved#if !defined(__WATCOMC__)' '!defined(__386__)#error ''This Program needs Watcom C/C++ 10.0 Compiler''#endif#include <io.h>#include <i86.h>#include <dos.h>#include <stdio.h>#include <conio.h>#include <fcntl.h>#include <stdlib.h>char c=1;int orig_mode=3;char *pv=(char *)(0x0A0000L);FILE *fp; char buffer[32];void PutPixel(int x, int y, char c){ *(pv+y*320+x)=c; //put pixel color}void InitGraph()//Set 320x200 256 colors Mode{ union REGS regs; //Test i..
  [阅读全文]  [返回页首]

获得数据库的空间大小,已使用的数据库空间大小

执行这个exec sp_spaceused测试代码<%set rs=server.CreateObject(''adodb.recordset'')sqlstr=''exec sp_spaceused''rs.open sqlstr,conn,1,1 if rs.eof=false thenresponse.write rs(0)&rs(1)&rs(2) '返回的测试值 test25.38 MB6.34 MB'rs(0)是数据库名称,rs(1)是数据库空间,rs(2)是可用空间end if rs.closeconn.close%>这样写也可以 <%set rs=server.CreateObject(''adodb.recordset'')sqlstr=''exec sp_spaceused''rs.open sqlstr,conn,1,1 response.write rs(''database_name'') '数据库名称response.write rs(''database_size'') '数据库空间response.write rs(''unallocated_space'') '可用空间%>
  [阅读全文]  [返回页首]

Delphi语句用法-我原来作项目用到的语句整理

Delphi语句用法-我原来作项目用到的语句整理 我原来作项目用到的语句整理:由于是几年前的代码了。当然有不少问题,也不清楚是干什么用的了。仅仅是看一些估计对做这个有用的句子摘抄如下: 当然写的很不规范,了解大概模仿即可。 Shape.Brush.Color:=RGB(random(255),random(255),random(255)); frmcomset:=Tfrmcomset.Create(Application);frmcomset.showmodal();frmcomset.Free; Lblcomset.Font.Color:=RGB(0,180,255); Lblgetdata.Font.Color:=clMaroon; //加入帮助时使用 if Key=112 thenApplication.HelpJump('mainhelp'); StringGrid1.RowCount:=1;StringGrid1.Cells[row,col]:='序号';StringGrid1.Cells[row+1,col]:='时间';StringGrid1.Cells[row+2,col]:='深度';StringGrid1.Cells[row+3,col]:='速度';StringGrid1.Cells[row+4,col]:='张力';StringGrid1.Cells[row+5,col]:='报警'; inttostr(StrToInt('$'+Trim(parvalue2))..
  [阅读全文]  [返回页首]

Delphi与串口通讯

网络大本营 在Delphi中的实现如下。我们使用Tcomm控件实现串口通讯。此控件调用Win32 API来实现所需功能。控件安装后可见如下属性BaudRate、CommPort、DataBits、DataCount、DTREnabled、HwHandShaking、InputLen、Parity、PortOpen、RThreshold、RTSEnabled、StopBits、SwHandShaking等设置串口的通讯协议。并提供了3个事件OnReceiveData、OnReceiveError、FOnModemStateChange等.通过控件提供的简单接口,我们可以方便的编程。我们可以在属性中直接选择协议规定的值,或在过程中修改他们的属性,在触发事件里写我们处理数据的代码。底下是一段发送代码程序: procedure TFrmTransient.TimerTotalSendTimer(Sender: TObject); var ByteSend:array of Byte; i:Dword; StringSend:array [0..7] of Byte; begin CommTotal.PortOpen:=false; StringSend[0]:=StrToInt('$'+'BB'); StringSend:=StrToInt('$'+'BE'); StringSend:=StrToInt('$'+'10'); ..
  [阅读全文]  [返回页首]

加载树形结构

表SoftClass:SID 编号 自动编号ATEXT 文字 字符PID 父节点 数字 type //软件分类结构 PSoftClass=^TSoftClass; TSoftClass=record SID:String; //软件分类编号 SoftText:String;//分类文字 PID:String;//父编号 end; //查询,返回成功或失败function GetRecordSet(var adoQry:TADOQuery;strSQL:String):Boolean;//加载软件分类 procedure LoadSoftClass(adoQry:TADOQuery;tv:TTreeView;var PSoft:array of PSoftClass);//根据父节点加载function LoadNodeFromParent(tv:TTreeView;var PSoft:array of PSoftClass;CurP:Integer;PID:String;ParentNode:TTreeNode;cdsTree:TClientDataset):Boolean; //根据父节点加载function LoadNodeFromParent(tv:TTreeView;var PSoft:array of PSoftClass;CurP:Integer;PID:String;ParentNode:TTreeNode;cdsTree:TClientDataset):Boolean;var ret:Boolean; NewNode:TTreeNode; a:PString; cdsTmp:TClientDataset;begi..
  [阅读全文]  [返回页首]

有关.Net中使用压缩解压缩的问题补充

对于之前发布的有关Net中使用压缩解压缩技术中,有个相当大的缺陷,是压缩文件时,不能递归压缩子文件夹。现将递归压缩的方法提供一下,还望大家多多探讨。(该代码参考别人写的例子修改了一下) 注意:请引用以下类库 using System;using System.Collections.Generic;using System.Text;using System.IO;using System.DirectoryServices; using ICSharpCode.SharpZipLib.Zip;using ICSharpCode.SharpZipLib.GZip;using ICSharpCode.SharpZipLib.Checksums; public class ZipHelper { ......... #region 压缩文件夹,支持递归 /// <summary> /// 压缩文件夹 /// </summary> /// <param name=''dir''>待压缩的文件夹</param> /// <param name=''targetFileName''>压缩后文件路径(包括文件名)</param> /// <param name=''recursive''>是否..
  [阅读全文]  [返回页首]

Delphi + Word = 数据库 + 公文处理

Delphi擅长做数据库类的MIS开发,但对于OA就有点力不从心了。不过随着Microsoft的COM技术逐渐成熟,现在普通Windows应用已经可以和Office 97无缝结合了,尤其是在Delphi 5中提供了一组Servers组件,更是简化了程序开发。 最近接触了一个用户的案例,用Delphi控制Word做一个合同管理程序。办公人员先根据业务需要,写好合同的文字,但在用户名称、产品名称等变化的位置填写指定的标记字符串,然后通过Delphi把数据库中的实际数据替换掉Word中的文字,最后让Word打印出合同。 Delphi自带了一个简单的Word例题,但功能太简单。通过查找VBA的说明,再对照Delphi的VCL,编写了如下代码,实现了基本的公文管理功能。 启动Word时用如下代码: begintry Wordapplication.Connect; except MessageDlg(Word may not be installed, mtError, [mbOk], 0); Abort; end; Wordapplication.Visible := True; WordApplication.Caption := Delphi automation; end; 关闭..
  [阅读全文]  [返回页首]

Delphi中怎样将字符串按给定字符分隔(类似split函数的功能)

今天偶尔要做的Delphi程序,其中涉及到了字符串处理,里面有一个功能类似于VB里的split()函数的功能,于是查了很久才查到些资料,现将这些资料整理一下,方便大家. 首先是一个网友自己编的函数.实现了和split()函数的功能. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type userarray=array of string; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private function split(s: string; dot: char): userarray; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses StrUtils; {$R *.dfm}//按所给字符将字符串分隔成数组function TForm1.split(s:string;dot:char):userarray;varstr:userarray;i,j:integer;begini:=1;j:=0;SetLe..
  [阅读全文]  [返回页首]

用delphi取得本机IP

function localIP: string; type TaPInAddr = array [0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe : PHostEnt; pptr : PaPInAddr; Buffer : array [0..63] of char; I : Integer; GInitData : TWSADATA; begin WSAStartup($101,ginitdata); result := ''; gethostname(buffer,sizeof(buffer)); phe := gethostbyname(buffer); if phe =nil then exit; pptr := papinaddr(phe^.h_addr_list); I := 0; while pptr^[i] <> nil do begin result := SysUtils.StrPas(inet_ntoa(pptr^[i]^)); inc(I); end; WSACleanup; end ;
  [阅读全文]  [返回页首]

GDI+ 在Delphi程序的应用 -- 图像饱和度调整

图像的饱和度调整有很多方法,最简单的就是判断每个象素的R、G、B值是否大于或小于128,大于加上调整值,小于则减去调整值;也可将象素RGB转换为HSV或者HSL,然后调整其S部分,从而达到线性调整图象饱和度的目的。这几种方法我都测试过,效果均不太好,简单的就不说了,利用HSV和HSL调整饱和度,其调节范围很窄,饱和度没达到,难看的色斑却出现了。而Photoshop的饱和度调整调节范围大多了,效果也好多了,请看下面25%饱和度调整时几种方法的效果对比图: 可以看出,都是25%的饱和度调整,Photoshop的调节幅度显得小一些(平坦些),效果也好多了,而HSV和HSL均出现了色斑,某些颜色也严重失真,尤其是HSV方式。 据网上和书上的介绍,Photoshop的是利用所谓HSB颜色模式实现色相/饱和度调节的,可是就是没有看到其算法,我只得自己进行琢磨,首先发现Photoshop色相/饱和度命令中的明度调节好象是“独立”的,也就是它不需要转换为所谓的HSB模式,..
  [阅读全文]  [返回页首]

Delphi与汇编

转载 Delphi与汇编我一直认为Delphi功能与C++相比毫不逊色,提供了丰富的控件和类、全部API以及嵌入的汇编。最近小弟在把C版的Huffman压缩改用Delphi写时,顺便“研究”了一下Delphi的位操作和嵌入式汇编,利用嵌入汇编我们可以得到高效的程序代码,完成一些Delphi没有提供的底层功能。借贵报一方宝地与大家分享我的“研究”。  Delphi的位操作  每个学习C的朋友都会被告之C是“中级语言”,其位操作非常方便,而Pascal之流只适用于教学。但是Delphi中提供了一组位操作,可别以过去对Pascal的态度看Delphi。  * 按位的逻辑操作:  Delphi中的AND、OR、NOT可不仅仅只对逻辑表达式有作用,它们还可以操作数;  AND:按位与,如:1 AND 2其结果为0  OR:按位或,如:1 OR 2其结果为3  Not:按位取反:如Not 1其结果对于有符号数是-2,对于无符号数是65534  另外,还有按位异或XOR:如:1 XOR 2结果为3  * 移位操作  Delphi提供了SHL和..
  [阅读全文]  [返回页首]

Delphi版MD5算法

1、 MD5String、MD5File、MD5Print、MD5Match这四个函数是供调用的。其他是用来辅助这几个函数的子函数。2、MD5String为加密字符串。3、MD5File为加密这个文件。4、MD5Print是将加密后的密文转换成字符串。5、MD5Match是用来比较密文是否一致。unit Md5;interfaceuses Windows;type MD5Count = array[0..1] of DWORD; MD5State = array[0..3] of DWORD; MD5Block = array[0..15] of DWORD; MD5CBits = array[0..7] of Byte; MD5Digest = array[0..15] of Byte; MD5Buffer = array[0..63] of Byte; MD5Context = record State: MD5State; Count: MD5Count; Buffer: MD5Buffer; end;procedure MD5Init(var Context: MD5Context);procedure MD5Update(var Context: MD5Context; Input: pChar; Length: longword);procedure MD5Final(var Context: MD5Context; var Digest: MD5Digest);function MD5String(M: string): MD5Digest;function MD5F..
  [阅读全文]  [返回页首]

GDI+ 在Delphi程序的应用 -- 图像灰度化、二值化及反色处理

图像的灰度化、二值化和反色是些较简单的图像像素处理过程,我在《GDI+ 在Delphi程序的应用 -- ColorMatrix与图像灰度化》和《GDI+ 在Delphi程序的应用 -- 图像二值化》二篇文章中讲了如何利用GDI+的ColorMatrix实现图像灰度化和二值化,但是那种处理只适合GDI+的图像类,为了兼容GDI+图像和Delphi的TBitmap处理,还是采用BASM写了这些个函数。 一、定义的数据类型及TBitmap数据结构转换函数: type // 256色灰度统计数组,每个元素表示该下标对应的颜色个数 TImageGrayArray = array[0..255] of LongWord; // 与GDI+ TBitmapData结构兼容的图像数据结构 TImageData = packed record Width: LongWord; // 图像宽度 Height: LongWord; // 图像高度 Stride: LongWord; // 图像扫描线字节长度 PixelFormat: LongWord; // 未使用 Scan0: Pointer; // 图像数据地址 Reserved: LongWord; /..
  [阅读全文]  [返回页首]

Delphi版的线性回归分析

文章《C语言版的线性回归分析函数》发布后,不少朋友留言或给我来信,询问能否提供Delphi版的线性回归分析代码,因C语言版是我以前DOS下的老代码稍作整理后发布的,所以没有现成的Delphi代码,今天比较闲,于是将C代码改写为Delphi代码贴在下面,有关的回归公式说明及例子图示可参见《C语言版的线性回归分析函数》,这里不再累叙,由于改写时间仓促,可能有错误,请不吝指出,亦可来信建议:maozefa@hotmail.com 线性回归分析代码: unit Regression; interface uses SysUtils; type PEquationsData = ^TEquationsData; TEquationsData = array[0..0] of Double; // 线性回归 TLinearRegression = class(TObject) private FData: PEquationsData; FAnswer: PEquationsData; FSquareSum: Double; FSurplusSum: Double; FRowCount: Integer; FColCount: Integer; FModify: Boolean; function GetAnswer(Index: Inte..
  [阅读全文]  [返回页首]

Delphi写Sql2000扩展存储过程的例子

library project1; uses Windows, SysUtils, MSODSApi; ...{$R *.res}Function GetParamStr(pSrvProc: SRV_PROC; Index : integer; Var Param : String ) : integer;var PType : Byte; cbMaxLen , ParaLen : DWORD; IsNULL : BOOL;begin Result := NO_ERROR; srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, NIL, @IsNULL); if PType in [SRVTEXT,SRVVARCHAR,SRVCHAR,SRVNTEXT, SRVBIGVARCHAR,SRVBIGCHAR,SRVNVARCHAR,SRVNCHAR] then begin Param := ''; if ParaLen>0 then begin SetLength(Param , ParaLen); srv_paraminfo(pSrvProc, index, @PType, @cbMaxLen, @ParaLen, @Param, @IsNULL); end; end else begin Result := -1; end;end; Function EpPackFile(pSrvProc: SRV_PROC) : integer;cdecl;var ls1,ls2,ls3 : String; n : integer;begin Result :..
  [阅读全文]  [返回页首]
[RSS分类] [名站RSS] [最新RSS] [热门RSS] [RSS新闻] [RSS知识] [RSS阅读器]
[关于本站] [设为首页] [加入收藏] [推荐RSS] [登录RSS]
中文RSS(CN-RSS.COM) 版权所有 2006-2008 保留所有权利 湘ICP备06008262号