文档库 最新最全的文档下载
当前位置:文档库 › delphi海康

delphi海康

delphi海康
delphi海康

type

//HCNetSDK头文件类型声明Delphi改写

//基本数据类型声明

DWORD=LongWord;

//WORD:Word;

USHORT=Word;

LONG=Longint;

//BYTE=char ;

//#define BOOL int

UINT=Longword;

LPVOID=Pointer;

HANDLE=Pointer;

LPDWORD=^LongWord;

//typedef unsigned long long UINT64;

//NET_DVR_Login_V30()参数结构

type LPNET_DVR_DEVICEINFO_V30=^NET_DVR_DEVICEINFO_V30;

NET_DVR_DEVICEINFO_V30=Record

sSerialNumber:array [0..SERIALNO_LEN-1] of BYTE ; //序列号

byAlarmInPortNum:BYTE ; //报警输入个数

byAlarmOutPortNum:BYTE ; //报警输出个数

byDiskNum:BYTE ; //硬盘个数

byDVRType:BYTE ; //设备类型, 1:DVR 2:ATM DVR 3:DVS ......

byChanNum:BYTE ; //模拟通道个数

byStartChan:BYTE ; //起始通道号,例如DVS-1,DVR - 1

byAudioChanNum:BYTE ; //语音通道数

byIPChanNum:BYTE ; //最大数字通道个数

byZeroChanNum:BYTE ; //零通道编码个数 //2010-01-16

byMainProto:BYTE ; //主码流传输协议类型 0-private, 1-rtsp

bySubProto:BYTE ; //子码流传输协议类型0-private, 1-rtsp

bySupport:BYTE ; //能力,位与结果为0表示不支持,1表示支持,

//bySupport & 0x1, 表示是否支持智能搜索

//bySupport & 0x2, 表示是否支持备份

//bySupport & 0x4, 表示是否支持压缩参数能力获取

//bySupport & 0x8, 表示是否支持多网卡

//bySupport & 0x10, 表示支持远程SADP

//bySupport & 0x20, 表示支持Raid卡功能

//bySupport & 0x40, 表示支持IPSAN 目录查找

//bySupport & 0x80, 表示支持rtp over rtsp

bySupport1:BYTE ; // 能力集扩充,位与结果为0表示不支持,1表示支持 //bySupport1 & 0x1, 表示是否支持snmp v30

//bySupport1 & 0x2, 支持区分回放和下载

byRes1:BYTE ;

wDevType:WORD ; //设备型号

byRes2:array [0..15] of BYTE ; //保留

end;

//NET_DVR_Login_V30()参数结构end

//回调函数无返回值声明为过程

type fSerialDataCallBack=procedure(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DWO RD;dwUser:DWORD );//stdcall;

//type fSerialDataCallBack=procedure(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DW ORD;dwUser:DWORD )of object ;// stdcall;//external 'HCNetSDK.dll';

//自动生成

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Label1: TLabel;

Edit1: TEdit;

Button3: TButton;

Label2: TLabel;

Edit2: TEdit;

Button4: TButton;

Button5: TButton;

Button6: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

ErrorValues:LongWord;

szSendBuf:array [0..10] of char;

szReciBuf:array [0..10] of char;

//g_fSerialDataCallBack:fSerialDataCallBack;

lUserID:LONG;

struDeviceInfo:NET_DVR_DEVICEINFO_V30;

DVRIP,DVRUserName,DVRPassWord: String;

lTranHandle:LONG;

iSelSerialIndex:integer;

dwUser:DWORD;

lSerialChan:LONG;

//procedure g_fSerialDataCallBack(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DWOR D;dwUser:DWORD );stdcall;

implementation

{$R *.dfm}

function NET_DVR_Init():boolean;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_Init';

function NET_DVR_Cleanup():boolean;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_Cleanup';

function NET_DVR_SetConnectTime(dwWaitTime,dwTryTimes:DWORD):boolean;stdcall;external ' HCNetSDK.dll' name 'NET_DVR_SetConnectTime';

function NET_DVR_SetReconnect(dwInterval:DWORD;bEnableRecon:boolean):boolean;stdcall;ex ternal 'HCNetSDK.dll' name 'NET_DVR_SetReconnect';

function NET_DVR_GetLastError():LongWord;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_Get LastError';

function NET_DVR_Login_V30(sDVRIP:Pchar; wDVRPort:WORD; sUserName:Pchar; sPassword:Pc har; lpDeviceInfo:LPNET_DVR_DEVICEINFO_V30):LONG;stdcall;external 'HCNetSDK.dll' name 'NET _DVR_Login_V30';

function NET_DVR_Logout_V30(lUserID:LONG):boolean;stdcall;external 'HCNetSDK.dll' name 'NE T_DVR_Logout_V30';

function NET_DVR_SerialStart(lUserID:LONG;iSelSerialIndex:LONG; g_fSerialDataCallBack:fSerialD ataCallBack; dwUser:DWORD):LONG;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_SerialStart'; function NET_DVR_SerialStop(lTranHandle:LONG):boolean;stdcall;external 'HCNetSDK.dll' name ' NET_DVR_SerialStop';

function NET_DVR_SerialSend(lTranHandle:LONG; lSerialChan:LONG; pSendBuf:PChar; dwBufSize :DWORD):boolean;stdcall;external 'HCNetSDK.dll' name 'NET_DVR_SerialSend';

procedure g_fSerialDataCallBack(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize:DWORD; dwUser:DWORD );//stdcall;//external 'HCNetSDK.dll' ;

begin

messagedlg('回调过程!',mterror,[mbyes],0);

szReciBuf[0] := pRecvDataBuffer[0];

szReciBuf[1] := pRecvDataBuffer[1];

szReciBuf[2] := pRecvDataBuffer[2];

szReciBuf[3] := pRecvDataBuffer[3];

szReciBuf[4] := pRecvDataBuffer[4];

szReciBuf[5] := pRecvDataBuffer[5];

szReciBuf[6] := pRecvDataBuffer[6];

szReciBuf[7] := pRecvDataBuffer[7];

szReciBuf[8] := pRecvDataBuffer[8];

szReciBuf[9] := pRecvDataBuffer[9];

szReciBuf[10] := pRecvDataBuffer[10];

end;

procedure TForm1.Button1Click(Sender: TObject); //按键1过程

begin

NET_DVR_Init();

NET_DVR_Cleanup();

ErrorValues:=NET_DVR_GetLastError();

Memo1.Lines.Add('ErrorValues:'+inttostr(ErrorValues));

Memo1.Lines.Add('SDK网络通信库初始化及释放成功');

end;

procedure TForm1.Button2Click(Sender: TObject); //开第一路

begin

DVRIP:='192.168.1.101';

DVRUserName:= 'admin';

DVRPassWord:= '12345';

NET_DVR_Init();

//设置连接时间与重连时间

NET_DVR_SetConnectTime(2000, 1);

NET_DVR_SetReconnect(10000, true);

// 登陆注册设备

lUserID := NET_DVR_Login_V30(PChar(DVRIP), 8000, PChar(DVRUserName), PChar(DVRPassWor d), @struDeviceInfo);

Memo1.Lines.Add('lUserID:'+inttostr(lUserID));

ErrorValues:=NET_DVR_GetLastError();

Memo1.Lines.Add('ErrorValues:'+inttostr(ErrorValues));

//通过485串口建立透明通道

iSelSerialIndex := 2; //1:232串口;2:485串口

lTranHandle := NET_DVR_SerialStart(lUserID, iSelSerialIndex, g_fSerialDataCallBack, dwUser); //设置回调函数获取透传数据

Memo1.Lines.Add('lTranHandle:'+inttostr(lTranHandle));

if (lTranHandle < 0) then

begin

Memo1.Lines.Add('NET_DVR_SerialStart error,'+inttostr(NET_DVR_GetLastError()));

NET_DVR_Logout_V30(lUserID);

NET_DVR_Cleanup();

end;

//通过485透明通道发送数据

lSerialChan := 1; //使用485时该值有效,从1开始;232时设置为0

szSendBuf[0] := char($03); //开第一路指令数据

szSendBuf[1] := char($05);

szSendBuf[2] := char($00);

szSendBuf[3] := char($10);

szSendBuf[4] := char($FF);

szSendBuf[5] := char($00);

szSendBuf[6] := char($8C);

szSendBuf[7] := char($1D);

szSendBuf[8] := char(#0);

szSendBuf[9] := char(#0);

szSendBuf[10] := char(#0);

if (not NET_DVR_SerialSend(lTranHandle, lSerialChan, szSendBuf, sizeof(szSendBuf))) then//szSe ndBuf为发送数据的缓冲区

begin

Memo1.Lines.Add('NET_DVR_SerialSend error,'+inttostr(NET_DVR_GetLastError()));

NET_DVR_SerialStop(lTranHandle);

NET_DVR_Logout_V30(lUserID);

NET_DVR_Cleanup();

end;

Memo1.Lines.Add('接受数据');

Memo1.Lines.Add(#33+#33+szReciBuf[0]+szReciBuf[1]+#33);

//断开透明通道

NET_DVR_SerialStop(lTranHandle); //注销用户

NET_DVR_Logout_V30(lUserID); //释放SDK资源

NET_DVR_Cleanup();

//ErrorValues:=NET_DVR_GetLastError();

//Memo1.Lines.Add('ErrorValues:'+inttostr(ErrorValues));

end;

///修改

type

fSerialDataCallBack=procedure lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSize :DWORD;dwUser:DWORD );stdcall;

procedure g_fSerialDataCallBack(lSerialHandle:LONG;pRecvDataBuffer:PChar;dwBufSi ze:DWORD;dwUser:DWORD );stdcall;

begin

messagedlg('回调过程!',mterror,[mbyes],0);

szReciBuf[0] := pRecvDataBuffer[0];

szReciBuf[1] := pRecvDataBuffer[1];

szReciBuf[2] := pRecvDataBuffer[2];

szReciBuf[3] := pRecvDataBuffer[3];

szReciBuf[4] := pRecvDataBuffer[4];

szReciBuf[5] := pRecvDataBuffer[5];

szReciBuf[6] := pRecvDataBuffer[6];

szReciBuf[7] := pRecvDataBuffer[7];

szReciBuf[8] := pRecvDataBuffer[8];

szReciBuf[9] := pRecvDataBuffer[9];

szReciBuf[10] := pRecvDataBuffer[10];

end;

【外挂制作】程序多开原理记录

程序多开原理记录 windows系统下,程序防止多开的几种常见方法: 1)使用FindWindow API函数。 通过查找窗口标题(或/和类名)来判断程序是否正在运行。如果找到了,表明程序正在运行,这时可退出程序,达到不重复运行的效果;反之表明程序是第一次运行。 这种方法不适用于以下情况,程序的标题是动态变化的、系统中运行了相同标题(或/和类名)的程序 2)Mutex/Event/Semaphore 通过互斥对象/信号量/事件等线程同步对象来确定程序是否已经运行。最常用的函数如:CreateMutexA(注意:QQ堂、QQ游戏大厅就是采用这样方法来限制程序多开的) 3)内存映射文件(File Mapping) 通过把程序实例信息放到跨进程的内存映射文件中,也可以控制程序多开。 4)DLL全局共享区 DLL全局共享区在映射到各个进程的地址空间时仅被初始化一次,且是在第一次被windows加载时,所以利用该区数据就能对程序进行多开限制。 5)全局Atom 将某个特定字符串通过GlobalAddAtom加入全局原子表(Global Atom Table),程序运行时检查该串是否存在来限制程序多开。(该Atom不会自动释放,程序退出前必须调用GlobalDeleteAtom 来释放Atom) 6)检查窗口属性 将某些数据通过SetProp加入到指定窗口的property list,程序运行时枚举窗口并检查这些数据是否存在来限制多开。 以上只列举了最常见的几种方法,具体应用中可以有n种选择,或综合运用多种方法来限制。 上面说过,QQT采用CreateMutex函数来限制多开,那么我怎么知道是使用这个函数来限制的呢?

Delphi函数清单

[标准函数和过程] 首部 procedure Abort;$[SysUtils 功能引起放弃的意外处理。 说明不显示任何错误信息。 首部 function Abs(N: ): ;$[System 功能返回参数N的绝对值。 说明函数结果与参数有相同类型,参数可以是整型也可以是浮点型。 ## Abs(-12) = 12;Abs(-12.03) = 12.03 首部 procedure AddExitProc(Proc: TProcedure);$[SysUtils 功能将旧版本某一过程添加到当前版本运行的库的结束过程表中。 说明只能向下兼容,不能用在当前使用版本的 首部 function Addr(X): Pointer;$[System 功能返回指定对象的内存地址。 说明地址运算符 @ 可以产生与Addr相同的结果。 首部 procedure AddTerminateProc(TermProc: TTerminateProc);$[SysUtils 功能将一过程添加到运行时库的终止过程表中。 说明 Delphi 在程序结束时将终止该程序的全部进程,可以终止的进程都放在终止过程表中,程序通过结束终止过程表所有的进程来实现终止全部进程的目的。 首部 function AdjustLineBreaks(const S: string): string;$[SysUtils 功能将给定字符串的行分隔符调整为Cr/Lf序列。 说明 首部 function AllocMem(Size: Cardinal): Pointer;$[SysUtils 功能在堆栈上分配给定大小为 Size字节的块,即在内存里开辟Size 大小的空间。 说明 Cardinal 0..4294967295 32位无符号整数 首部 function AnsiCompareFileName(const S1, S2: string): Integer;$[SysUtils 功能比较两个文件名的大小。不区分大小写。 说明条件返回值 S1 > S2 | > 0 S1 < S2 | < 0 S1 = S2 | = 0 首部 function AnsiCompareStr(const S1, S2: string): Integer;$[SysUtils 功能比较两个字符串的大小。要区分大小写。 说明参见AnsiCompareFileName。 首部 function AnsiCompareText(const S1, S2: string): Integer;$[SysUtils 功能返回两个字符串是否相同的状态。不区分大小写。 说明参见AnsiCompareFileName。 首部 function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):string;$[SysUtils 功能将引用字串转换成结束引语返回。 说明函数支持多字节字符系统[MBCS]。 首部 function AnsiLastChar(const S: string): PChar;$[SysUtils 功能取参数S的最后一个字符,并转换成以null结束的字符串指针返回。 说明 ##AnsiLastChar(‘Sysoft’) = {‘t\0’}; 首部 function AnsiLowerCase(const S: string): string;$[SysUtils 功能将字符串S转换为小写返回。 说明函数支持多字节字符系统[MBCS]。 首部 function AnsiLowerCaseFileName(const S: string): string;$[SysUtils 功能将文件名S转换成小写返回 说明函数支持多字节字符系统[MBCS]。 首部 function AnsiPos(const Substr, S: string): Integer; $[SysUtils 功能返回子串Substr出现在主串S中的第一个位置。 说明 首部 function AnsiQuotedStr(const S: string; Quote: Char): string; $[SysUtils 功能返回引用字串的译文 说明 首部 function AnsiStrComp(S1, S2: PChar): Integer; $[SysUtils 功能比较两个指针字符串的大小。要区分大小写。 说明参见AnsiCompareFileName。

DELPHI 中WEBBROWSER控件详解实例

Delphi中WebBrowser控件详解实例 2008-10-18下午06:58 很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。今天主要给大家演示一下过程,让大家学习一下Delphi工具。 WebBrowser功能: 1。自动加载网页 2。去除WebBrowser滚动条 3。WebBrowser自身打开页面 4。禁止右键 1。首先,新建一个FROM窗体: 2。加入一个WEBBROWSER控件

3。调整后如下: 4.这样一个webbrowser就完成了,下一步我们来让程序打开后自动加载一个网页。 核心代码:WebBrowser1.Navigate('https://www.wendangku.net/doc/424640196.html,'); 双击窗体灰色处,对窗体进行初始化,在代码窗口中输入(Begin与End间输入核心代码): procedure TForm1.FormCreate(Sender:TObject); begin WebBrowser1.Navigate('https://www.wendangku.net/doc/424640196.html,');//窗体初始化完成WEBBROWSER加载一个网页end; 5。下面我们来实现禁止WEBBROWSER控件的滚动条功能:

核心代码:WebBrowser1.oleobject.Document.body.Scroll:=‘no’; 利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句 去掉滚动条。这时就要引入一个按扭控件来触发程序 加入SPEEDBUTTEN 调整形后:

《数据库技术》(delphi)试卷及答案

湖北汽车工业学院《数据库技术》(delphi )试卷(A )答案 一、单选题(每题1.5分,共30分) 1、Delphi 程序设计的基本特点是:( D )。 A 可视化程序设计 B 代码程序设计 C 事件驱动编程 D A 和C 2、进度显示组件ProgressBar 的当前进度可以通过( C )属性设置。 A Step B Scroll C Position D Max 3、下列变量命名正确的是:( B )。 A 7ABC B My7 C page@2 D cmd..1 4、“x 是小于200的非负数”的Object Pascal 表达式是( C )。 A 0 ≤ x < 200 B x >= 0, x<200 C (x >=0) AND (x < 200) D (x >= 0 ) OR (x<200) 5、在窗体上建立多页面的用户界面,需要首先建立的对象是( B ) A TabControl BPageControl C HeaderControl DPageScroller 6、能够删除edit1中内容的语句是( A )。 A edit1.Clear ; Bedit1. Focused ; C edit1.Text= null ; D .edit1.text :='\0' ; 7、现建立一个简单报表,仅包含数据列标题栏、数据栏和汇总栏,则在Bands 属性的子属性中,不需要选择的是( A ) A HasColumnHeader B Detail C Summary D Title 8、下面哪个功能键可以调出Delphi 的联机帮助信息(A ) A F1键 B F2键 C F3键 D F4键 9、Onclick 事件的操作是( B )

【VIP专享】delphi 三层架构CS简单例子一步步做

delphi 三层CS架构一步步建立的简单例子 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。 在Delphi中可以使用Socket或者Dcom组件来连接他们相互间的通讯。 本例使用SOCKET组件. DCOM用在局域网, SOCKET用在互联网. 环境为windows xp+ delphi 7 + access2000 创建过程: 1、请用ACCESS2000新建一个数据库database02.mdb. 2、请在delphi7执行file-new- application, 新建一个桌面, 上面放一个label, label.caption =’服务器端已运行….’

3、接下来在delphi7执行file --new--other,选择"Multitier"--"Remote data module"。在跳出来的对话框里面输入名称(任意),例如: AppSqlConn。选择确定,进入remote data module窗口。 界面如下图所示

4、加入组件:adodataset,点击connectionstring属性,点击后面的…,进 入设定连接窗口。在选择数据库中选择自己想要使用的数据库 database02.mdb。一般只要地址正确、用户名和密码无误,肯定可以连接通过。确定。 3、ADODATASET1在commandtext中点击后面的…,啥也不用设定,默认 配置; 4、ADODATASET1将active属性设置为false。

5、再加入组件:datasetprovider。设定其dataset属性为上面的adodataset1。 5.1 接着设置datasetprovider1的属性,poallowcommandtext=true, 其他的参数默认即可. datasetprovider1的属性如下图所示

Delphi如何使用基本的绘图函数绘制统计图

一个windows自带的画图工具是无论如何也不能满足我们的画图需要的,很多效果都需要我们在另外的工具中来实现。这些高级的功能是如何实现的呢,如何操纵一些基本的属性和函数,让它们最终能作出我们想要的效果呢?这里我们以绘制统计图来说明这些问题。 解决思路―― 这里,我们暂且先撇开具体的问题,综合地一下讨论画图的问题。 画图工具是基本元素的具体实现,对于我们初学者来说,还是有很好的参考价值的,在delphi 5中有一个自带的工程例子“……Borland\Delphi5\Demos\Doc\Graphex”,这个例子可以实现一些基本的绘图功能。对这个例子多加修改,一定会有所收获的。这里就不列出它的详细代码了,有心的读者可以自己找到这个例子。我这里只是想综合地讨论这方面的问题。使用DELPHI编写绘图软件的灵魂就在于操作画布,画笔和刷子,尽可能地挖掘它们的属性和相关参数的设置。 (一)画布 画布,画笔和刷子之间的关系很明了.其实,画笔和刷子都是画布的一个属性.而画布也只是TForm,TImage,TShape等组件对象的一个属性,专门负责与图象相关的信息打交道.它的主要作用可以概括如下几点: 1.指定使用画笔,刷子和字体的使用类型; 2.绘制和填充指定形状的线或图形; 3.修饰和改变图象; 画布的主要属性有: Brush--指定填充图形和背景的样式 CanvasOrientation--指定画布的定位类型,有coLeftToRight, coRightToLeft两个属性; ClipRect--指定剪切矩形的边界; CopyMode--指定图形图象的复制模式; Font--指定画布上使用的字体; Handle--为画布指定窗口GDI对象的设备描述表; LockCount--指定画布被别的线程锁定的次数; Pen--指定画布上使用的画笔,具体见下面描述; PenPos--指定画笔当前的位置; Pixels--指定当前剪切矩形的象素颜色; TextFlags--指定字体在画布上的显示方式,有ETO_CLIPPED,ETO_OPAQUE,ETO_RTLREADING,ETO_GL YPH_INDEX,ETO_IGNORELANGUAGE,ETO_NUMERICSLOCALETO_NUMERIC SLATIN等值可选; 画布相关的API函数及其注释如下: Arc--按指定方式画一条弧; BrushCopy--把位图复制到指定的画布的矩形中,用画布刷子颜色替换位图的颜色; Chord--按指定方式画弦; CopyRect--从一个矩形区域复制部分图象到另一个矩形区域; Draw--用指定参数在指定位置画图; DrawFocusRect--按指定焦点风格,通过异或操作来绘制一焦点矩形; Ellipse--按指定参数画一椭圆; FillRect--按指定的刷子填充一矩形; FloodFill--使用当前选定的刷子填充指定设备描述表中的一块区域;

delphi数学模块函数、过程大全

function ArcCos(const X : Extended) : Extended; overload; function ArcCos(const X : Double) : Double; overload; function ArcCos(const X : Single) : Single; overload; function ArcSin(const X : Extended) : Extended; overload; function ArcSin(const X : Double) : Double; overload; function ArcSin(const X : Single) : Single; overload; function ArcTan2(const Y, X: Extended): Extended; procedure SinCos(const Theta: Extended; var Sin, Cos: Extended) register; function Tan(const X: Extended): Extended; function Cotan(const X: Extended): Extended; { 1 / tan(X), X <> 0 } function Secant(const X: Extended): Extended; { 1 / cos(X) } function Cosecant(const X: Extended): Extended; { 1 / sin(X) } function Hypot(const X, Y: Extended): Extended; { Sqrt(X**2 + Y**2) } function RadToDeg(const Radians: Extended): Extended; inline; { Degrees := Radians * 180 / PI } function RadToGrad(const Radians: Extended): Extended; inline; { Grads := Radians * 200 / PI } function RadToCycle(const Radians: Extended): Extended; inline; { Cycles := Radians / 2PI } function DegToRad(const Degrees: Extended): Extended; inline; { Radians := Degrees * PI / 180} function DegToGrad(const Degrees: Extended): Extended; function DegToCycle(const Degrees: Extended): Extended; function GradToRad(const Grads: Extended): Extended; inline; { Radians := Grads * PI / 200 } function GradToDeg(const Grads: Extended): Extended; function GradToCycle(const Grads: Extended): Extended; function CycleToRad(const Cycles: Extended): Extended; inline; { Radians := Cycles * 2PI } function CycleToDeg(const Cycles: Extended): Extended; function CycleToGrad(const Cycles: Extended): Extended; { Hyperbolic functions and inverses } function Cot(const X: Extended): Extended; inline; { alias for Cotan } function Sec(const X: Extended): Extended; inline; { alias for Secant } function Csc(const X: Extended): Extended; inline; { alias for Cosecant } function Cosh(const X: Extended): Extended; function Sinh(const X: Extended): Extended; function Tanh(const X: Extended): Extended; function CotH(const X: Extended): Extended; inline; function SecH(const X: Extended): Extended; inline; function CscH(const X: Extended): Extended; inline; function ArcCot(const X: Extended): Extended; { IN: X <> 0 } function ArcSec(const X: Extended): Extended; { IN: X <> 0 } function ArcCsc(const X: Extended): Extended; { IN: X <> 0 } function ArcCosh(const X: Extended): Extended; { IN: X >= 1 } function ArcSinh(const X: Extended): Extended;

现代远程教育技术应用培训资料

现代远程教育技术应用培训(三) 讲稿 培训内容:现代远程教育资源 培训教师:学区全体教职工 培训地点:远程教育教室 主讲人:杨元玲 培训过程: 基于教育部基础教育新课标标准与规范,应用多媒体与网络新技术建设学科基础素材资源库与资源中心,运用直播卫星和电视广播技术传输,并在互联网的信息资源交流平台上,以课件素材和学科教学内容及教学参考文献为主,并涵盖百科知识的各个方面。提供课件动画、图片、音频、视频、文本等素材资源,教师可利用这些原始素材随心所欲地制作出自己想达到的课件效果。应有为学生课外学习和教师备课参考提供的海量的课外资料和资源。通过现代化的信息资源开发技术和整合平台,提供一个大容量的教育教学资源库。 1.学科课件库 内容应涵盖同步教程、同步教案、同步试题。兼顾各版本教材,满足各教学环节的需求。信息栏目有难点分析、课后练习、期中、期末试题、模拟试题、应试分析等。 2.媒体素材库

为教师进行计算机辅助教学提供丰富的素材资源,包括图片库、图标库、音效库、背景音乐库、动画库、视频库等等。 3.试题/试卷库 大量各类学科考试试题、试卷,包括历年来重点学校的中高考试题等,提供最为宝贵的参考信息。 4、网络课程库 各类网络教程、专业培训课程、课程辅导、网络课堂等等教育资源内容。 5、教案/论文库 各类教案,教研论文库。包括教育基础理论、课程与教学理论、教育教学实验、素质教育等领域的教研论文,供教师进行教育教学研究使用。 6、共享软件库 共享软件库,按类别分为:多媒体类、教育教学、实用工具、网络相关、益智娱乐等与教育密切相关的共享软件,是学校的“软件资源中心”。

现代远程教育技术应用培训(四) 讲稿 培训内容:多媒体开发工具的类型与功能 主讲人:刘山 培训地点:远程教育教室 培训过程: 1、多媒体开发工具的类型 基于多媒体创作工具的创作方法和结构特点的不同,可将其划分为如下几类: 1)基于时基的多媒体创作工具 基于时基的多媒体创作工具所制作出来的节目,是以可视的时间轴来决定事件的顺序和对象上演的时间。这种时间轴包括许多行道或频道,以使安排多种对象同时展现。它还可以用来编程控制转向一个序列中的任何位置的节目,从而增加了导航功能和交互控制。通常基于时基的多媒体创作工具中都具有一个控制播放的面板,它与一般录音机的控制面板类似。在这些创作系统中,各种成分和事件按时间路线组织。 优点:操作简便,形象直观,在一时间段内,可任意调整多媒体素材的属性,如位置、转向等。 2)基于图标或流线的多媒体创作工具

Delphi法具体的实施步骤

Delphi法具体的实施步骤: 1、设置项目评估、预测组织小组 小组的主要任务是:拟订项目评估、预测主题,编制以通信方式咨询专家的评估、预测问题表,选择专家,依据专家几个轮回完成的咨询表,对专家提出的意见及结果进行一系列的整理统计分析等工作。 2、编制专家咨询表 在设计表时首先要在前言中说明本次研究的目的,对Delphi法作一简要介绍,以及专家在本研究中的作用。然后再根据研究主题设计出具体要征询的问题,以及必要的填表说明。专家咨询表要简化,问题的数量不宜过多、过繁,一般认为,如果问题数量超过50个,则项目评估组织小组就要认真研究问题是否过于分散。应注意的是,在Delphi法的实施过程中,任何情况下及下一轮,项目评估组织小组或领导者个人都不能把自己的意见列入到专家咨询表中,否则就有可能把评估、预测结果引入迎合领导人偏误的轨道上。 3、选择专家组 挑选专家是Delphi法预测成败的一个重要问题。一般认为要从与研究主题相关的各个分支学科中选择有一定经验的、对研究感兴趣的专家。专家成员选择不当,一方面会增加评价中的偏倚;另一方面又会导致轮回之间应答率的下降。而要检验未应答者与应答者之间是否有差异,则常常难以做到。 Delphi法专家选择的基本原则是必须突出广泛性、代表性和权威性,兼顾相关专业领域和地域分布。所谓专家,应当是在自己所擅长的领域很少犯错误的专门人才,应当拥有一定的信息储备量,如一般方法学和基础、理论规律性与基本趋势的知识、参考资料量、专业及其相近领域的交叉学科知识、以往评估的经验、对该部分其他评估专家不同观点的独立见解等。评估专家的选择,取决于具体课题的目的与任务,宜从本部门内外,甚至从国内外同时挑选。从外部选择专家比较困难,首先要搜集本部门职工较熟悉的专家名单,再从有关期刊和出版物中物色一批知名专家,然后发给这两部分专家以某种形式的调查表,并了解该专家能否自始至终参加评估,同时要求他们再推荐1~2名有关专家。评估小组从推荐名单中选择一批有2人以上同时推荐的专家。在选择专家的过程中,不仅要注意选择有一定名望的本学科专家,还需要选择有关的边缘学科,选择承担各种技术领导职务的专家固然重要,但应考虑他们是否有足够的时间填写调查表。经验表明,一个身居要职的专家匆忙填写的调查表,其参考价值不如一个一般专家认真填写的调查表。

Delphi调用WebService的实例(非常经典)

Delphi 调用webservice 经典实例 Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口 TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE) ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeString(s); //加 base64 编码 s := DecodeString( str ); //解码 UTF8: UTF8 是8位的UNICODE字符,而ASCII是7位 ,gb2312和unicode是2字节/字,utf8是3字节/字utf8类似以前的8位转7位的编码,是为了在网络间不同系统的通讯方便而作的转换。几乎所有用.Net写的WebService只支持DOC方式、Delphi写的只支持RPC方式;J2ME目前对Web Service的支持仅限于RFC172,而 RFC172要求必须为DOC方式(sun怎么偏袒MS?)! 为了在设计中减少障碍,下面还介绍几个概念。 1) SOAP:SOAP是一种简单有效的数据传输协议,用于分布式网络环境下数据信息交换,它以XML 作为数据传输的格式,搭配Internet上标准的传输协议HTTP、SMTP、TCP等来传送信息。从本质上看,SOAP事实上只是将Request和Response经由XML格式把数据打包,达到双方沟通的目的。 2) WSDL:WSDL(Web Service Description Language)是一种以XML格式描述的Web Service语言,当Web Service Provider 要对外公布提供的 Web Service,就需要通过WSDL来构建描述语言。在WSDL中有两个非常重要的要素::此WSDL文件所要描述的Web Service集合;每一个Port代表外界Client可以和此Service沟通的一个进入点,一个Port会指定一个Binding方式。 3):处理中文乱码的问题: 将HttpRio的 Converter 的 Options 的 soUTF8InHeader 设为 True 将生成soap消息的HTTPSoapDispatcher控件,添加encoding为gb2312 https://www.wendangku.net/doc/424640196.html,eUTF8InHeader := True; 4)在Delphi中,能够传递的自定义类型的对象要继承TRemotable, 5:修正一个服务器端的一个Bug:将ISAPIThreadPool和ISAPIApp的次序变一下:ISAPIApp必须在 ISAPIThreadPool之前: uses ... ISAPIApp, ISAPIThreadPool 解决如下错误: Received content of invalid Content-Type setting:text/html -SOAP"expects"text/xml" 6:"XML document must have a top level element. Line: 0" 错误,我该如何解决??哈纳斯 (2002-08-05 17:26:00) 我也曾碰到同样的问题解决方法是:别设httprio的wsdllocation,设它的url 如http://localhost/mydir/project1.exe/wsdl/IFIRST mydir是你的可执行的虚拟目录,IFIRST是你定义的接口名 ********************************************************************* **************************

用HOOK Call 提升挂的效率和及时性(纯属转载)

有1 2 3 4 5 6 7 8 9 2分文),看到不少朋友发文章帮助新/高级菜鸟,也许发现自己的挂和市面上的还有一定差 HOOK对游戏进行注入的), +偏移方式进行,也采用定时器保证及时性,好处是内call 读取函数,可以直取内存。 API函数让反外挂检测到(像内存用的 打怪效率,好的挂怪物刚死亡,就开始打下一个了, 1ms一次,频繁的检测,却 recv(收

们仔细分析下,游戏中很多动作都会造成收发包,包括其他人物移动,攻击,怪物移动,等等,有很多都和血量无关的,所以事实上,命中率还是很低,如何做到只在血量发生变化时调用我们的血量判断呢?这就要主角上场了,HOOK Call 进阶 现在大家有调用call的经验,自然也就有了od找call的经验,我们以一个游戏“武林”为例,在武林中,你可以通过OD断下一个地方,然后会发现,只要你受到攻击,它就会断下来。很好,这就是我们要的地方,然后我们在它断下时,查看寄存器值,eax +4,血量,eax +8 蓝量,好了,数据也有了。实际上,这和用CE找数据基址是一样的,eax的值实际上就来自于[一级基址]+偏移+[二级基址]这样的组合(和内存挂取值一样),只是由于我们已经在call的内部,所以能一下就取到值。 找到了合适的地方,接下来如何去HOOK它呢,需要注意的是,这里的HOOK,我们不需要用到API,只需要直接改汇编代码就行了(API实际上也是同样操作)。在我们断下的那个点附近,上下看看,有没有call(HOOK call嘛,肯定要找call),好,我们找到一个,我们在call的第一行下个断点,进游戏受攻击,断下来,看eax+4 的值,是正确的。恭喜这个call可用,然后说明一下汇编中call的环境。 大家知道,一个call就是一个函数,可带参数,也可不带参数,参数在进call以前,被压入堆栈里,进call后从栈中取出。由于我们要HOOK call,也就是把call 0425142改为call 自己函数的地址,我们就应该像警察一样,要对现场进行保护。下面用Delphi给出一个自己函数的例子 Copy code {人物血量信息拦截函数 } function Char_call(): longint; begin asm pushad //将当前寄存器环境保存 mov ebx,dword ptr ds:[esi+$254] //将值取出 mov Char_ohp,ebx //将值赋给变量 mov ebx,dword ptr ds:[esi+$26c] mov Char_mhp,ebx mov ebx,dword ptr ds:[esi+$258] mov Char_omp,ebx mov ebx,dword ptr ds:[esi+$270] mov Char_mmp,ebx mov Char_hpChgFlag ,eax mov ebx,_char_c_addr //将原有call地址写入 call ebx //执行原有的call

统计预测与决策教案

统计预测与决策教案 时间:2005年9月 管理预测与决策方法授课计划 ?定性预测方法 ?定量预测方法 ◆确定性方法 ?回归分析预测方法 ?时间序列平滑预测方法 ?趋势外推预测方法 ?马尔可夫预测与决策法 ◆不确定性方法 ?灰色系统预测 ?随机性决策分析 ?模糊决策 ?粗糙集理论 第一章预测概述 1.1 引言 1. 预测的兴起 预测于20世纪60-70年代在美国逐步兴起的 预测:预测是指对事物的演化预先做出的科学推测。广义的预测,既包括在同一时期根据已知事物推测未知事物的静态预测,也包括根据某一事物的历史和现状推测其未来的动态预测。狭义的预测,仅指动态预测,也就是指对事物的未来演化预先做出的科学推测。预测理论作为通用的方法论,既可以应用于研究自然现象,又可以应用于研究社会现象,如社会预测、人口预测、经济预测、政治预测、科技预测、军事预测、气象预测等。 2. 预测的作用 正确的预测是进行科学决策的依据。政府部门或企事业单位制定发展战略、编制计划以及日常管理决策,都需要以科学的预测工作为基础。 如“诸葛亮借东风、空城计”、以美国为首的多国部队实施的“沙漠风暴”,研究人员建立了热能转换模型,进行了一系列模拟计算。因此,人们说第一次世界大战是化学战(火药),第二次世界大战是物理战(原子武器),而海湾战争是数学战,指的是这场战争在战前就已对战争的进程以及战争所涉及和影响的方方面面做出了科学预测。 制订经济计划的依据之一 提高经济效益的手段之一 提高管理水平的途径之一 1.2 预测的基本原则 1. 坚持正确的指导思想 2. 坚持系统性原则

预测者所研究的事物和自然界的其他事物一样,都有自己的过去、现在和将来,就是存在着一种纵的发展关系,因果关系,而这种因果关系要受某种规律的支配。将事物作为一个互相作用和反作用的动态整体来研究,而且要将事物本身与周围的环境组合成一个系统综合体来研究。 例如:1943年全世界估计有三亿疟疾病患者,每年有300万人死亡,4500万人死于瘟疫,1945年后使用了DDT,十年内疟疾病的死亡率降低了二分之一,瘟疫病患者每年仅死亡几千人。然而DDT除了杀死害虫外,还杀死了大量其他有益的鸟类、鱼类等动物及植物,而且外界环境不能使DDT毒性衰减,据估计现在存留在大气层,大地以及海洋中的DDT约有十亿磅以上。 3.坚持关联性原则 4.坚持动态性原则 1.3 预测的分类 1.按预测的范围或层次分类 (1) 宏观预测 是指针对国家或部门、地区的活动进行的各种预测。它以整个社会经济发展的总图景作为考察对象,研究经济发展中各项指标之间的联系和发展变化。如:社会商品总供给、总需求的规模、结构、发展速度和平衡关系的预测;社会物价总水平的变动;宏观经济预测是政府制定方针政策、编制和检查计划,调整经济结构的重要依据。 (2) 微观预测 是针对基层单位的各项活动进行的各种预测。它以企业或农户生产经营发展的前景作为考察对象,研究微观经济中各项指标间的联系和发展变化。具体商品的生产量、需求量和市场占有率的预测等。微观经济预测,是企业制定生产经营决策,编制和检查计划的依据。 宏观预测应以微观预测为参考;微观预测应以宏观预测为指导,二者相辅相成。 2. 按预测的时间长短来分类 (1) 长期预测 一般是指对5年以上发展前景的预测. (2) 中期预测 一般指1年以上5年以下发展前景的预测. (3) 短期预测 一般指对3个月以上1年以下发展前景的预测 (4) 近期预测 一般指对3个月以下企业生产经营状况的预测。 3. 按预测方法的性质分类 (1) 定性预测 指预测者通过调查研究,了解实际情况,凭自己的实践经验和理论、业务水平,对事物发展前景的性质、方向和程度做出判断进行预测的方法。 (2) 定量预测 是指根据准确、及时、系统、全面的调查资料和信息,运用软计算方法和数学模型,对事物未来发展的规模、水平、速度和比例关系的测定。常用的定量预测方法有回归分析

delphi7串口通信(spcomm控件)实例

Delphi7串口通信(spcomm控件)实例 最近在用delphi7做串口通信,网上找了很多例程,复制粘贴运行就没有能通过的,再次鄙视一下列位先行者,你们帮人倒是帮到底啊,没一个是拿过来能用的,太坑了,在N天的努力下(鄙人比较笨)终于通过串口接收到数据,希望给后来人予以帮助,程序如下: 功能简介 功能比较简单,只是从串口接收单片机发送的数据,给memo1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms,

Dialogs, SPComm, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Comm1: TComm; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word); procedure Comm1ModemStateChange(Sender: TObject; ModemEvent: Cardinal); private { Private declarations } public { Public declarations } end; var

delphi制作主菜单

Delphi制作主菜单 菜单包括大多数Windows应用程序的大部分内容。一些Windows应用程序没有菜单,但绝大多数都有。Delphi使用Menu Designer使得创建菜单变得容易。Menu Designer有如下特点: ?可以创建主菜单和弹出菜单(快捷菜单)。 ?为菜单项处理提供OnClick事件。 ?从模板或源文件插入菜单。 ?以模板形式保存客户菜单。 所有Menu Designer命令通过其快捷菜单或者使用Object Inspector来操作。如下图,显示了Menu Designer的快捷菜单: 从大部分情况下,这些快捷菜单项通过其名字就能知道它的用途,因此不在这里做进一步讨论。 下面我们通过使用菜单项来了解它们,首先为前面创建ScratchPad应用程序添加一个主菜单,然后添加一个快捷菜单。

一、创建主菜单Menu Designer能够很快建立任何菜单。主菜单的菜单结构由MainMenu组件构成,它由VCL类TMainMenu表示。菜单上每一项是TMenuItem 组件,封装在TMenuItem类中。不必太关心这些类如何协同工作的细节,因为Menu Designer使得建立菜单变得非常容易。TMainMenu和TMenuItem继承关系图如下: 1、添加主菜单到窗体 首先必须添加MainMenu组件到窗体。 Note 现在大家对Delphi已有了使用经验。从这时起,要缩略某些需要执行动作的步骤。例如,从现在开始说“把MainMenu组件放到窗体上”,而不是说“在组件面板上点击Standard 标签,点击MainMenu按钮,点击窗体放置MainMenu组件。”不要担心,在引入新操作前,会给出大量的细节。 (1)打开上一讲创建的ScratchPad工程。 (2)在窗体上放置MainMenu组件,显示为一个图标,如下图,改变其Name属性为MainMenu。注意MainMenu组件有很少几个属性且没有时间,所有菜单的工作由单个菜单项完成。

Delphi函数大全

Delphi函数大全 首部function Languages: TLanguages; $[ 功能返回系统语言对象 说明通过此函数可以得到系统的语言环境 参考type 例子 12a12c12a12c. 参考 例子:= IsValidIdent; ━━━━━━━━━━━━━━━━━━━━━ 首部function IntToStr(Value: Integer): string; overload; $[ 首部function IntToStr(Value: Int64): string; overload; $[ 功能返回整数Value转换成字符串 说明Format('%d', [Value]) 参考function 例子:= IntToStr; ━━━━━━━━━━━━━━━━━━━━━ 首部function IntToHex(V alue: Integer; Digits: Integer): string; overload; $[ 首部function IntToHex(V alue: Int64; Digits: Integer): string; overload; $[ 功能返回整数Value转换成十六进制表现结果;Format('%.*x', [Digits, Value]) 说明参数Digits指定字符最小宽度;最小宽度不足时将用0填充 参考function 例子:= IntToHex, ; ━━━━━━━━━━━━━━━━━━━━━ 首部function StrToInt(const S: string): Integer; $[ 功能返回字符串S转换成整数 说明字符串非整数表达时将引起异常 参考procedure 例子:= StrToInt; ━━━━━━━━━━━━━━━━━━━━━ 首部function StrToIntDef(const S: string; Default: Integer): Integer; $[ 功能返回字符串S转换成整数 说明字符串非整数表达时则返回默认值Default 参考procedure 例子:= StrToIntDef, 0); ━━━━━━━━━━━━━━━━━━━━━ 首部function TryStrToInt(const S: string; out Value: Integer): Boolean; $[ 功能返回字符串S转换成整数V alue是否成功 说明字符串非整数表达时返回False并且Value将输出为0 参考procedure 例子 ..);打开失败则返回负数 参考function

delphi_三层架构简单例子.

delphi 三层架构简单例子(经测试成功2009-01-22 下午 02:45所谓三层: (1 客户端 (2 服务器端 (3 数据库在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如果使用Scocket在系统使用时必须提供Scocket连接器,而Dcom 则不用。客户端和服务器的连接需要Broker来联系。环境为winxp sp2 + delphi 7 + db7.(MSSQL2000 创建过程: 1、请不要新建application.file-new-activex-activex library,file --new--other,选择"Multitier"--"Remote data module"。在跳出来的对话框里面输入名称(任意),例如:AppSqlConn。选择确定,进入remote data module窗口。 2、加入组件:adodataset,点击connectionstring属性,点击后面的…,进入 设定连接窗口。选择:use connection string--build,在提供程序中选择:"Microsoft ole db provider for sql server",在连接中:服务器名称输入sql server的ip地址,登录信息中输入用户名和密码(sql server),在选择数据库中选择自己想要使用的数据库。一般只要地址正确、用户名和密码无误,肯定可以连接通过。确定退出。 3、在commandtext中点击后面的…,进入sql 语句设定,根据自己的要求设定。 4、将active属性设置为true。只要前面的设定是正确的,这里应该顺利通过。 5、加入组件:datasetprovider。设定其dataset属性为上面的adodataset。 6、到此服务器端已经设置完成。请保存并且运行一次,从而使服务注册。 7、运行delphi的bin目录下面的scktsrvr,因为下面要使用socket连接。运行后任务栏中出现socket server的图标。 8、新建程序(application),然后file--new--data module,会创建客户端的data module。 9、加入组件:socketconnection,在address中输入sql server的ip地址,然后在servername中输入刚才创建的remote data module的服务程序。程序会自动在serverguid中加入id。然后选择connected属性为true。只要 此处不报告错误,此程序基本成功了。 10、加入组件:clientdataset,选择remoteserver属性为socketconnection,选择providename为服务器程序的datasetprovider。然后选择active属性为true。 11、到程序的form窗口状态,首先选择file--use unit,选择上面创建的data module,确定。然后加入组件datasource 和dbgrid。选择datasourece的dataset属性为data module的clientdataset,选择dbgrid的datasource为这里的datasource组件。现在应该可以看到dbgrid的窗口中

相关文档