交换机VLAN

四、VLAN网络的配置实例

  为了给大家一个真实的配置实例学习机会,下面就以典型的中型局域网VLAN配置为例向各位介绍目前最常用的按端口划分VLAN的配置方法。

  某公司有100台计算机左右,主要使用网络的部门有:生产部(20)、财务部(15)、人事部(8)和信息中心(12)四大部分,如图1所示。

  网络基本结构为:整个网络中干部分采用3台Catalyst 1900网管型交换机(分别命名为:Switch1、Switch2和Switch3,各交换机根据需要下接若干个集线器,主要用于非VLAN用户,如行政文书、临时用户等)、一台Cisco 2514路由器,整个网络都通过路由器Cisco 2514与外部互联网进行连接。

  所连的用户主要分布于四个部分,即:生产部、财务部、信息中心和人事部。主要对这四个部分用户单独划分VLAN,以确保相应部门网络资源不被盗用或破坏。

  现为了公司相应部分网络资源的安全性需要,特别是对于像财务部、人事部这样的敏感部门,其网络上的信息不想让太多人可以随便进出,于是公司采用了VLAN的方法来解决以上问题。通过VLAN的划分,可以把公司主要网络划分为:生产部、财务部、人事部和信息中心四个主要部分,对应的VLAN组名为:Prod、Fina、Huma、Info,各VLAN组所对应的网段如下表所示。
  VLAN 号
  VLAN 名 端口号
  2 Prod Switch 1 2-21
  3 Fina Switch2 2-16
  4 Huma Switch3 2-9
  5 Info Switch3 10-21

  【注】之所以把交换机的VLAN号从"2"号开始,那是因为交换机有一个默认的VLAN,那就是"1"号VLAN,它包括所有连在该交换机上的用户。

  VLAN的配置过程其实非常简单,只需两步:(1)为各VLAN组命名;(2)把相应的VLAN对应到相应的交换机端口。
下面是具体的配置过程:

  第1步:设置好超级终端,连接上1900交换机,通过超级终端配置交换机的VLAN,连接成功后出现如下所示的主配置界面(交换机在此之前已完成了基本信息的配置):

  1 user(s) now active on Management Console.
  User Interface Menu
  [M] Menus
  [K] Command Line
  [I] IP Configuration
  Enter Selection:

  【注】超级终端是利用Windows系统自带的"超级终端"(Hypertrm)程序进行的,具体参见有关资料。

  第2步:单击"K"按键,选择主界面菜单中"[K] Command Line"选项 ,进入如下命令行配置界面:
  CLI session with the switch is open.
  To end the CLI session,enter [Exit ].
  >

  此时我们进入了交换机的普通用户模式,就象路由器一样,这种模式只能查看现在的配置,不能更改配置,并且能够使用的命令很有限。所以我们必须进入"特权模式"。

  第3步:在上一步">"提示符下输入进入特权模式命令"enable",进入特权模式,命令格式为">enable",此时就进入了交换机配置的特权模式提示符:

  #config t
  Enter configuration commands,one per line.End with CNTL/Z
  (config)#

  第4步:为了安全和方便起见,我们分别给这3个Catalyst 1900交换机起个名字,并且设置特权模式的登陆密码。下面仅以Switch1为例进行介绍。配置代码如下:

  (config)#hostname Switch1
  Switch1(config)# enable password level 15 XXXXXX
  Switch1(config)#

  【注】特权模式密码必须是4~8位字符这,要注意,这里所输入的密码是以明文形式直接显示的,要注意保密。交换机用 level 级别的大小来决定密码的权限。Level 1 是进入命令行界面的密码,也就是说,设置了 level 1 的密码后,你下次连上交换机,并输入 K 后,就会让你输入密码,这个密码就是 level 1 设置的密码。而 level 15 是你输入了"enable"命令后让你输入的特权模式密码。

风暴一族 2006-08-16 15:53
第5步:设置VLAN名称。因四个VLAN分属于不同的交换机,VLAN命名的命令为" vlan vlan号 name vlan名称 ,在Switch1、Switch2、Switch3、交换机上配置2、3、4、5号VLAN的代码为:

  Switch1 (config)#vlan 2 name Prod
  Switch2 (config)#vlan 3 name Fina
  Switch3 (config)#vlan 4 name Huma
  Switch3 (config)#vlan 5 name Info

  【注】以上配置是按表1规则进行的。

  第6步:上一步我们对各交换机配置了VLAN组,现在要把这些VLAN对应于表1所规定的交换机端口号。对应端口号的命令是"vlan-membership static/ dynamic VLAN号 "。在这个命令中"static"(静态)和"dynamic"(动态)分配方式两者必须选择一个,不过通常都是选择"static"(静态)方式。VLAN端口号应用配置如下:
  (1). 名为"Switch1"的交换机的VLAN端口号配置如下:

  Switch1(config)#int e0/2
  Switch1(config-if)#vlan-membership static 2
  Switch1(config-if)#int e0/3
  Switch1(config-if)#vlan-membership static 2
  Switch1(config-if)#int e0/4
  Switch1(config-if)#vlan-membership static 2
  ……
  Switch1(config-if)#int e0/20
  Switch(config-if)#vlan-membership static 2
  Switch1(config-if)#int e0/21
  Switch1(config-if)#vlan-membership static 2

  Switch1(config-if)#

  【注】"int"是"nterface"命令缩写,是接口的意思。"e0/3"是"ethernet 0/2"的缩写,代表交换机的0号模块2号端口。

  (2). 名为"Switch2"的交换机的VLAN端口号配置如下:

  Switch2(config)#int e0/2
  Switch2(config-if)#vlan-membership static 3
  Switch2(config-if)#int e0/3
  Switch2(config-if)#vlan-membership static 3
  Switch2(config-if)#int e0/4
  Switch2(config-if)#vlan-membership static 3
  ……
  Switch2(config-if)#int e0/15
  Switch2(config-if)#vlan-membership static 3
  Switch2(config-if)#int e0/16
  Switch2(config-if)#vlan-membership static 3
  Switch2(config-if)#

  (3). 名为"Switch3"的交换机的VLAN端口号配置如下(它包括两个VLAN组的配置),先看VLAN 4(Huma)的配置代码:

  Switch3(config)#int e0/2
  Switch3(config-if)#vlan-membership static 4
  Switch3(config-if)#int e0/3
  Switch3(config-if)#vlan-membership static 4
  Switch3(config-if)#int e0/4
  Switch3(config-if)#vlan-membership static 4
  ……
  Switch3(config-if)#int e0/8
  Switch3(config-if)#vlan-membership static 4
  Switch3(config-if)#int e0/9
  Switch3(config-if)#vlan-membership static 4
  Switch3(config-if)#
  下面是VLAN5(Info)的配置代码:
  Switch3(config)#int e0/10
  Switch3(config-if)#vlan-membership static 5
  Switch3(config-if)#int e0/11
  Switch3(config-if)#vlan-membership static 5
  Switch3(config-if)#int e0/12
  Switch3(config-if)#vlan-membership static 5
  ……
  Switch3(config-if)#int e0/20
  Switch3(config-if)#vlan-membership static 5
  Switch3(config-if)#int e0/21
  Switch3(config-if)#vlan-membership static 5
  Switch3(config-if)#

  好了,我们已经按表1要求把VLAN都定义到了相应交换机的端口上了。为了验证我们的配置,可以在特权模式使用"show vlan"命令显示出刚才所做的配置,检查一下是否正确。

  以上是就Cisco Catalyst 1900交换机的VLAN配置进行介绍了,其它交换机的VLAN配置方法基本类似,参照有关交换机说明书即可。

posted @ 2006-11-15 12:08 青蛙學堂 阅读(343) | 评论 (1)编辑 收藏

bde

您可以在INSTALL SHIELD 的安装程序组里将您要添加的数据库文件
添加进去,或新建一个组,里面放置数据文件
主要操作是:
1. BDE的安装,
如果您想安装的是PARADOX数据库程序,那么
BDE安装组件的最小配置是下列文件
IDPDX32.DLL
IDAPI32.DLL
BLW32.DLL
IDSQL32.DLL
IDAPIINST.DLL
IDBAT32.DLL
IDR20009.DLL
IDAPI32.CFG
BANTAM.DLL
USA.BTL
FAREAST.DLL
CHARSET.CVB
IDAPI.CNF
如果你需要做的是SQL SERVER之类的安装盘的话
根据我的实验,似乎BDE在这方面有些问题
如果不选全部安装BDE,应用程序即使安装了也不能运行
所以要选全部安装BDE才可以
在BDE安装时,你可以添加进去ALIAS,在BDE安装选项里有一个SETTING
找到ADD ALIAS后,用NEW添加一个
然后可以在 ALIAS的参数列表里输入一些需要提前设置的参数设置
下面是我做的一个安装MS SQL SERVER的参数设置的例子
DATABASE NAME=haitian
SQLPASSTHRU MODE=SHARED NOAUTOCOMMIT
SERVER NAME=bm
USER NAME=sa
一般的PARADOX数据库安装,我不会用在安装程序里直接设置ALIAS的路径
因为程序安装路径受用户控制,所以指定安装路径后,程序在搜寻BDE 别名
的数据库路径时可能会出错误
应该是在程序运行后,由程序自己得到自己当前的路径,然后使用
dbiAddAlias 函数创建数据库别名
2. 在主选单里选择 specify components and files里
然后选择GROUPS,您可以用添加组 (Add Group) 添加一个安装组
添加组操作时可以设定这个组的安装路径,默认是
假设你要添加的组为DATA,你可以把改变安装路径为 install dir/data
比如添加的组为DATA,然后用 lanuch Explorer 启动资源管理器后
在资源管理器里选择你要添加的文件,拖到你要放置这些文件的组里
即可。
3.主选单里的specifys folders and icons 可以设定你安装的文件安装的
默认路径是那里(Advanced--> Working),
安装后的图标是什么(Advanced -->Icon)
还可以指定安装后程序的运行参数(General-->Run Command),
和安装文件出现在WINDOWS 主菜单上的说明词(General-->Description)
及安装后的运行文件的快捷键是那个(Advance-->Short Cut Key)
个人意见:BDE除了打包文件,还要修改注册表,修改的和DELPHI安装差不多。

posted @ 2006-11-09 14:10 青蛙學堂 阅读(622) | 评论 (1)编辑 收藏

Reporting Services 部署指南

     摘要: 作者:John H. Miller, Microsoft Corporation 摘要:SQL Server Reporting Services 通过提供基于服务器的综合性报表平台,扩展了 Microsoft Business Intelligence (BI) 的应用前景。Reporting Services 将集中式管理报表的速度、伸缩性和易管理性与桌面和 ...  阅读全文

posted @ 2006-09-29 15:02 青蛙學堂 阅读(8106) | 评论 (0)编辑 收藏

SQL 取相等部分

ORACLE   :

        SELECT  T1.C1 , T2.C2    FROM  T1 , T2
       WHERE   T1.C3 (+) = T2.C3

posted @ 2006-09-13 16:37 青蛙學堂 阅读(223) | 评论 (0)编辑 收藏

delphi的文件操作

1、Delphi中拷贝文件的几种方法
广告
{方法一:用File stream }
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
S, T: TFileStream;
Begin
S := TFileStream.Create( sourcefilename, fmOpenRead );
try
T := TFileStream.Create( targetfilename,fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size ) ;
finally
T.Free;
end;
finally
S.Free;
end;
End;
{ 方法二:使用内存块进行读写 }
procedure FileCopy(const FromFile, ToFile: string);
var
FromF, ToF: file;
NumRead, NumWritten: Word;
Buf: array[1..2048] of Char;
begin
AssignFile(FromF, FromFile);
Reset(FromF, 1);
AssignFile(ToF, ToFile);
Rewrite(ToF, 1);
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;
2、控制INI文件
要利用.INI文件做程序有关数据的存储工作,就需要能读和写.INI文件,所以列了如下
方法给大家参考:
{方法一:用 Windows API 函数}
① 从.INI文件中获取字符串
var
strResult:array[0..30] of Char;
begin
GetPrivateProfileString(' desktop ', 'wallpaper',
'c:\windows\newwall.bmp' , strResult, 100, 'c:\windows\win.ini' );
edit1.text:=strResult; //显示取得字符串 end;
② 从.INI文件中获取整数
var
nResult: integer; begin
nResult := GetPrivateProfileString(' desktop ', ' tilewallpaper',
0 , 'c:\windows\win.ini' );
edit1.text:=intostr(nResult); //显示取得整数 end;
③ 向.INI文件写入字符串
WritePrivateProfileString('desktop', 'wallpaper',
strWrite ,'c:\windows\win.ini');
{ 方法二:使用TiniFile进行读写 }
① 从.INI文件中读字符串
var MyIni: TIniFile;
begin
MyIni := TIniFile.Create('c:\windows\win.ini');
edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');
end;
② 向.INI文件中写入字符串
var MyIni: TIniFile;
begin
MyIni := TIniFile.Create('c:\windows\win.ini');
MyIni.WriteString('desktop', 'wallpaper', 'c:\a.bmp');
end;
3、用Delphi实现将纯文本资料转入数据库
在我们日常工作中,常会碰到这样一个难题:一大堆收集好的纯文本格式,比较规整的
资料怎样才能将它们分离,转到自己已经建好的数据库中进行管理呢?例如,有一段人
事档案资料document.txt,内容如下:
张强,25,助理工程师,
王宏,30,工程师,
李远,45,高级工程师,
要将它转入数据库中,document.db结构如下:
姓名,年龄,职称
怎么办呢?现在通过使用delphi编程,很好地解决了这个难题。Delphi提供了许多功能
强大,丰富的字符处理函数和过程,常用的有:
① function Length(S:String):Integer  //返回串的长度
② function Copy(S:String; Index,Count: Integer):String
//给出一个字符串中串的拷贝
③ function Pos(Substr:String; S:String); Integer  
//查找子串在字符串中的位置
④ Procedure Delete(Var S:String; Index,Count: Integer);
//从一个字符串中去除子串
利用Delphi提供的已有函数和过程基础上编制自己的三个函数,实现了纯文本格式资料
转入数据库功能。只要Delphi支持的数据库都可以支持。
Document.txt中每行数据为一个字符串,字符串中每个被分割的数据为一个字段,分割
每个字段的字符为分割符,这里是逗号,也可以是、;#等符号。具体思想是:先将字符
串进行调整,然后把串中每个字符同分割符比较,将不是分割符的字符追加到MyStr串中
,最后得到一个字段的内容。通过一个循环,就可以将一个字符串分成几个字段。
Function GetSubStr(var aString:string; SepChar:String): String;
//得到字符串中一个子串
因要改变参数aString的值,所以将它用var定义。
Function GetSubStrNum(aString, SepChar: String): Integer;
//计算一个字符串要被分割成几个字段。
参数:aString是所需分割的一个字符串,
SepChar是分割符。
Function GetSubStrNum(aString:String;SepChar:String):integer;
var
i:Integer;
StrLen:Integer;
Num:Integer;
begin
StrLen:=Length(aString);
Num:=0;
For i:=1 to StrLen do
If Copy(aString,i,1) = SepChar then
Num:=Num+1;
result:=Num;
end;
Function GetSubStr(var aString:String;SepChar:String):String;
var
Mystr:String;
StrLen:Integer;
SepCharPos:Integer;
begin
StrLen:=Length(aString);
SepCharPos:=Pos(SepChar,aString); //计算分割符在子串中的位置
MyStr:=Copy(aString,1,SepCharPos-1); //将分割符前所有字符放到mystr串中
Delete(aString,1,SepCharPos); //除去分割符和分割符前的子串
GetSubStr:=MyStr; //返回一个字段
end;
有了上面三个函数,现在介绍一下具体的应用:
① 首先建立一个窗体Forml,加入一个RichEditl(或Menol),一个按钮Buttonl和一个
Tablel,设置Tablel的属性:
Tablell.DataBaseName:= 'c:\test';
Tablell.TableName:= 'document.db';
② 分别加入以下程序:
const
SepChar=',' ;
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Lines.LoadFromFile('c:\test\test.txt');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,num:Integer;
MyLine:String;
item:array[1..3] of string;
begin
For i:=0 to RichEdit1.Lines.Count-1 do
begin
MyLine:=Richedit1.Lines[i];
num:=GetSubStrNum(myline,SepChar);
for j:=1 to num do
item[j]:=GetSubStr(myline,SepChar);
table1.open;
with table1 do
begin
table1.insert;
table1name.Asstring:=item[1];
table1age.Asinteger:=strtoint(item[2]);
table1title.Asstring:=item[3];
table1.post;
end;
table1.close;
end;
end;

posted @ 2006-09-11 10:16 青蛙學堂 阅读(786) | 评论 (0)编辑 收藏

delphi与word的融合

Delphi与Word之间的融合技术
(yzhshi@263.net)
一、VBA代码含义
Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是
一个字处
理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。

Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现一些文
档处理的
自动化,如实现文档的自动备份、存盘等,可扩展Word文档的功能,因此,能够充分利
用Word的
特性,甚至使Word成为自己软件的一部分。
Word的宏既有有利的一部分,因为它能够帮助我们实现文档的自动化,但是Word的宏也
不是纯粹
的有利,有时它可能危害我们的文档、计算机系统甚至网络,从最开始的Taiwan NO1宏
病毒到现
在的Melissa宏病毒,从最开始的简单的提示,耗尽系统资源到现在的乱发电子邮件,将
个人的
信息发送到网络上,甚至向硬盘的Autoexec.bat(自动批处理文件)中添加Deltree C: -
y,破坏
整个Windows系统。
二、Word中内嵌的Com技术
可以说Word是对Com技术支持最好的软件,这样说似乎是太极端了一点,但是Word提供的
强大的编
程接口技术却能够是我们通过程序控制Word的任何一部分。无论是文件的打开、存盘、
打印还是文
档中表格的自动绘制。
通过编程软件,可以灵活的操纵word,这里只以Borland Delphi为例,进行详细描述:

1、    在Delphi中调用Word软件/文件的方法
在Word中调用Word软件,归纳起来有三种方法:
。通过Delphi的控件TOleContainer 将Word嵌入
a.使用Delphi提供的Servers控件调用Word,使用Word的属性
b.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi
中,
利用Com技术编程
c.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。
2、    对几种方法的难易程度的判别
a.通过Delphi的控件TOleContainer 将Word嵌入
这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可
以将Word文
档直接启动。且这样启动的Word文档与Delphi程序是一个整体(从界面上看),但是它
存在不可克
服的缺点,即不能通过Delphi控制Word文档,也就不能实现将灵活操纵Word的目的。
b.使用Delphi提供的Servers控件调用Word,使用Word的属性
使用Delphi的Servers控件来操纵Word,在编程时Delphi能够实现代码提示,总体上看能
够较好的实
现Delphi对Word的控制,但是还有一些Word的功能不能在Delphi中调用(比如自己编写
的VBA宏代码)。
且实现功能时本来在VBA代码中可选则参数在Delphi调用的时候必须添加,否则,连编译
都不能通过。
本方式启动的Word与Delphi程序分属两个窗体。
此办法仅能作为一个参考。
c.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi
中,
利用Com技术编程
利用真正的Com技术,将MsWord9.OLD文件类库导入,然后利用Com技术进行使用。
整体上类似使用Delphi的Servers控件,稍微比Servers控件麻烦,优缺点与Servers控件
相同。
d.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。
本办法是使用以CreateOleObjects方式调用Word,实际上还是Ole,但是这种方式能够真
正做到完全
控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。
与Servers控件和com技术相比,本方法能够真正地使用Word的各种属性,和在VBA中编写
自己的代码
基本一样,可以缺省的代码也不需要使用。
本方式启动的Word与Delphi程序分属两个窗体。
缺点是使用本方法没有Delphi代码提示,所有异常处理均需要自己编写,可能编写时探
索性知识比较多。
三、Word宏编辑器
Word能够真正地进行VBA代码的编辑,可以编写窗体、函数。
进入Word宏编辑器的方法:工具->宏->Visual Basic编辑器,可进入Visual Basic编辑
器界面。
Word的Visual Basic编辑器界面和真正的Visual Basic编辑器基本相同,在此不再向详
述。
在VBA代码中,可以添加用户窗体、模块、类模块。用户窗体、模块、类模块的概念和V
isual Basic
完全相同。注释也与Visual Basic完全相同。
可以将光标停留在窗体、模块的任何一个子程序上,直接按“F5”运行当前子程序。
四、Word的宏的概述
Word充分地将文档编辑和VB结合起来,真正地实现文档的自动化。使用Word编程,类似
于使用
Visual Basic,所不同的是,在Word中,能够直接运行某一个子程序,直接看见结果,
Word的宏,
只能解释运行,而Visual Basic,现在已经能够编写成真正的机器码,从代码的保护上
来说,应该尽
可能地减少Word的VBA代码数量,尤其是关键的代码。
VBA宏,可分成四种:
1、    和命令名相同的宏
如FileSave,FileOpen,如果在VBA代码中包含与Word同名的函数,则直接执行这些VBA
代码,忽略Word
本身的命令。
2、    Word内特定的宏
这些宏包含AutoExec(启动 Word 或加载全局模板)、AutoNew(每次新建文档时)、A
utoOpen(每次打
开已有文档时)、AutoClose(每次关闭文档时),AutoExit(退出 Word 或卸载全局模
板时)。
如果VBA代码中含有这些名称的函数,则满足相应的条件,相应代码就自动执行。
3、    相应事件的VBA宏
这些宏是由事件触发的宏,如Document_Close在文档关闭的时候触发事件,Document_N
ew在新建文档的时
候触发,Document_Open在打开文档的时候触发。
4、    独立的宏
自己编写的VBA代码,即不属于上面几种情况的VBA代码,可以被其他VBA代码调用,更重
要的是,可以被
其他程序调用。
这样,我们就可以屏弃Word自动执行的宏,通过Delphi直接调用相应宏来达到目的。
五、Word命令宏的详细描述
Word本身的命令函数包含很多,但是无论是word联机帮助还是MSDN帮助,都没有这方面
的介绍,因此只能
凭自己的实验取探索,初步探测的函数如下:
宏名    解释    注释
FileNew 新建   
FileNewDefault  新建空白文档   
FileSaveAs      另存为 
FileOpen        打开   
FileClose       关闭   
FilePrint       打印   
FilePrintPreview        打印预览       
ToolsCustomize  工具栏里面的自定义     
ToolsOptions    工具选项       
ToolsRevisions  突出显示修订   
ToolsReviewRevisions    接受或拒绝修订 
ToolsRevisionMarksAccept        接受修订       
ToolsRevisionMarksReject        拒绝修订       
ToolsRevisionMarksToggle        修订   
ToolsMacro      宏     
ToolsRecordMacroToggle  录制新宏       
ViewSecurity    安全性 
ViewVBCode      查看VB编辑器环境       
FileTemplates   模板和可加载项 
ToolsProtectUnprotectDocument   解除对文档的保护       
InsertHyperlink 插入超级链接   
EditHyperlink   编辑超级链接   
DeleteHyperlink 删除超级链接   
EditLinks       查看、删除链接 
EditPasteAsHyperlink    粘贴超级链接   
FormatStyle     样式   
EditBookMark    书签
--

posted @ 2006-09-11 10:13 青蛙學堂 阅读(833) | 评论 (0)编辑 收藏

發送可認證郵件

delphi6下编写需要认证的发送邮件程序(比如263)
最近在delphi5下编写一个数据库的程序,其中有一个功能就是能够自己发送email,本
来我想偷懒让sql server自己发送,看了半天联机帮助不知所以然,于是发狠上网去找
控件乐,(delphi5自带的不支持认证)找到一套叫做indy的控件,可以发送需要SMTP认
证的邮件,我把控件导入delphi5,就去喝可乐乐,呵呵,回来迷茫的看着机器,突然发
现,这几个控件好面熟,噢,呵呵,原来是delphi6里面的东东哦,(台下观众开始毫不
留情的扔石头了)
现在我就贴出来,大家看看,嘻嘻
首先 在indy clients 页上 摘取一个TidSMTP控件(就是那个蓝颜色的柜子啦)
然后 在indy misc  页上 摘取一个TIdMessage控件(象一个信笺的东东)
呵呵,我们给他们取名为SMTP和IdMsgSend
然后开始自己的如下代码
procedure Tform1.SendAlarmEmail;
begin
if SMTPAuthority then  //SMTPAuthority 是 表示这个SMTP服务器是否需要认证的bo
olean
      SMTP.AuthenticationType := atLogin
        else  SMTP.AuthenticationType := atNone;
SMTP.UserID := myzerg@263.net;//帐户
SMTP.Password := **********;//密码
{General setup}
SMTP.Host := SMTP.263.net;
SMTP.Port := 25;
  try
   SMTP.Connect;
   except
    Showmessage('连接SMTP服务器失败!');
    Exit;
    end;
try
   with IdMsgSend do
    begin
     body.Clear;
     Body.Add('hello world');//内容
     From.Text := 'myzerg@263.net';
     Recipients.EMailAddresses :='zyx_chz@263.net'//收件人
     Subject:='老友,哈喽'//主题
   end;
  SMTP.Send(IdMsgSend);
  finally
  SMTP.Disconnect;
  end;
end;
因为是从代码里面改来的,(因为源码里面还有别的功能),原理就是这样了
其他的功能( 附件,转交,信件的格式mime等等都可以设置的)

posted @ 2006-09-11 10:12 青蛙學堂 阅读(305) | 评论 (0)编辑 收藏

代码创建形式规范

Delphi代码创建形式规范 1.0
Bear, 2000-5-1
本规范的目的:给自己的代码一个统一而标准的外观,增强
              可读性,可理解性,可维护性
本规范的原则:名称反映含义,形式反映结构
1、单元风格
2、各区风格
3、语句风格
4、命名规则
参考:Borland官方Object Pascal风格指南
      Delphi5程序员指南编码标准
        1、单元风格
 
{*******************************************************}
{ }
{ 项目名称 }
{ }
{ 版权所有 (C) 2000,2001 公司名称 }
{ }
{*******************************************************}
unit UnitName;
{*******************************************************
项目:
模块:
描述:
版本:
日期:
作者:
更新:
TODO:
*******************************************************}
interface
uses
   ----,----,----,----,----,----,----,----,----,----,----,
   ----,----, ----,----,----,----;
const
   --------------------;
   --------------------;
   --------------------;
    type
   --------------------;
   --------------------;
   --------------------;
    --------------------;
   --------------------;
   --------------------;
var
   --------------------;
   --------------------;
   --------------------;
implementation
uses
   ----,----,----,----;
{$R *.RES}
{$R *.DFM}
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
--------------------------------;
end.
返回
      2、各区风格
0、注释与空白
   用{ } 不用 //
   主题注释,函数过程目的说明,语句注释
   空行 :版权块,类之间,方法之间--(两行) 方法内部块(一行)
   空格 :用以增强清晰度
   缩进 :两个空格
1、常量区
基本:
Const
  ----- = ----;
  ----- = ----;
  ----- = ----;
  ----- = ----;
扩展
前缀: 少则C_---;多则可以每个主题有一个前缀
Const
  { 主题1 }
  C_--- = ----; { 含义 }
  C_--- = ----; { 含义 }
  C_--- = ----; { 含义 }
  C_--- = ----; { 含义 }
  { 主题2 }
  ----- = ----;
  ----- = ----;
  ----- = ----;
  ----- = ----;
资源字符串,放在变量区后面
resourcestring
const
  S_--- = '----';
  S_--- = '----';
  S_--- = '----';
例子:
   CM_BASE = $B000;
   CM_ACTIVATE = CM_BASE + 0;
   CM_DEACTIVATE = CM_BASE + 1;
   CM_GOTFOCUS = CM_BASE + 2;
   CM_LOSTFOCUS = CM_BASE + 3;
    NumPaletteEntries = 20;
    BoxPoints : array[0..5, 0..2] of GLfloat =
              ( (-1, 0, 0),
                  ( 0, 1, 0),
                  ( 1, 0, 0),
                  ( 0, -1, 0),
                  ( 0, 0, 1),
                  ( 0, 0, -1) );
   { Variant type codes (wtypes.h) }
    varEmpty = $0000; { vt_empty }
    varNull = $0001; { vt_null }
    varSmallint = $0002; { vt_i2 }
   GIFVersions : array[gv87a..gv89a] of TGIFVersionRec = ('87a', '89a');
      2、类型区
   数据类型-->不提供服务的数据类型
   T---- = ---------
   对象类型-->有状态并提供服务的实体
   T---- = class(----)
   private
     --------
     --------
   protected
     --------
     --------
   public
       --------
       --------
   published
       --------
      --------
   end;
         按字母排序
Private
   1、所有数据放在Private 区,以F打头
   2、所有事件属性对应的方法指针放在Private 区,以F打头
   3、属性的Get与Set方法放在Private 区-->不准备被继承
   4、响应消息的方法放在Private 区
protected
   1、被子类调用的但不能被外界调用的方法与属性
   2、供子类重载的方法 virsual; virsual; abstract
public
   1、构建析构方法
   2、供外界调用的方法
   3、供外界调用的属性
published
   1、出现在Object Inspector里供设计时用的属性
   2、出现在Object Inspector里供设计时用的事件响应
例子:
  TGIFVersion = (gvUnknown, gv87a, gv89a);
  TGIFVersionRec = array[0..2] of char;
  PInterfaceTable = ^TInterfaceTable;
  TInterfaceTable = packed record
  EntryCount: Integer;
  Entries: array[0..9999] of TInterfaceEntry;
  { forword declairation }
TGIFImage = class;
  TGIFSubImage = class;
  {---------------------------
           TGIFItem
   ---------------------------}
  TGIFItem = class(TPersistent)
  private
    FGIFImage: TGIFImage;
  .............
  end;
3、变量区
定义全局变量
注意不要有缺省的类对象变量,在调用者中声明!
var
-----------: -------;
-----------: -------;
例子:
GIFDelayExp: integer = 10; { Delay multiplier in mS.}
GIFDelayExp: integer = 12;
4、实现区
{---------------------------------------------------------
                        主题
----------------------------------------------------------}
{ 方法的目的 }
procedure ----------------------------
begin
  --------;
  --------;
end;
{ 方法的目的 }
function -----------------------------
begin
  --------;
  --------;
end;
5、过程与函数
   命名
   格式
  返回
3、语句风格
1、简单语句
   -------;
2、复合语句
   begin
     -----;
     -----;
   end;
3、赋值语句
   -- := -------;
   -- := (-- + --)* (-- / --);
4、局部变量
var
  ---: ---;
  ---: ---;
对于逻辑上并列的变量组:
var
  ---,
  ---,
  ---: ---;
5、数组声明
  --- = array [*..*] of ---;
6、if 语句
  if (--------) then
    -------------;
  if (--------) then
  begin
    -------------;
    -------------;
    -------------;
  end;
  if (--------) then
    -------------;
  else
    -------------;
  if (--------) then
  begin
    -------------;
    -------------;
    -------------;
  end else
    -------------;
   if (--------) then
  begin
    -------------;
    -------------;
    -------------;
  end else
  begin
    -------------;
    -------------;
    -------------;
  end;
  if (--------) then
    -------------
  else if (--------) then
    -------------;
7、for 循环
   for I := -------- to -------- do
     -------------;
   for I := -------- to -------- do
  begin
      -------------;
      -------------;
     -------------;
   end;
   for I := -------- to -------- do
      if (--------) then
      begin
         -------------;
         -------------;
         -------------;
       end;
   for I := -------- to -------- do
     with -------- then
     begin
        -------------;
       -------------;
       -------------;
     end;
8、while 循环
  while ------ do
  begin
    -------------;
    -------------;
    -------------;
  end;
9、repeat 循环
  repeat
    -------------;
    -------------;
    -------------;
  until ------;
10、case 语句
   case -------- of
     -------- : -------------;
     -------- : -------------;
     -------- : -------------;
           else -------------;
   end;
   case -------- of
      -------- :
        -----------------------------------------------------------------;
      -------- :
        -----------------------------------------------------------------;
      -------- :
        -----------------------------------------------------------------;
           else
        -----------------------------------------------------------------;
    end;
  case -------- of
     -------- : begin
                        --------------------------;
                        --------------------------;
                        --------------------------;
                    end;
     -------- : begin
                        --------------------------;
                        --------------------------;
                        --------------------------;
                     end;
     -------- : begin
                       --------------------------;
                       --------------------------;
                       --------------------------;
                    end
           else begin
                       -------------;
                       -------------;
                       -------------;
                    end;
  end;
11、with 语句
   with -------- do
      -------------;
   with -------- do
   begin
      -------------;
      -------------;
      -------------;
   end;
12、try 语句
     try
       -------------;
       -------------;
       -------------;
     finally
       -------------;
       -------------;
       -------------;
     end;
     try
       try
         -------------;
         -------------;
         -------------;
       except
          -------------;
           -------------;
       end;
     finally
       -------------;
       -------------;
       -------------;
     end;
13、其它
     运算:运算符前后要有空格
     w1[n] := ((i + 1) * v0[n] + j * v1[n] + (k - 1) * v2[n]) / depth;
     -- = --
     -- >= --
     -- <= --
     -- > --
     -- < --
     -- <> --
     -- := --; 赋值
     --: ----; 类型
     同一类型且含义逻辑上不并列的变量 20个字符长的变量名
     private
       ------- : -------;
       ------- : -------;
       ------- : -------;
       ------- : -------;
       ------- : -------;
     var
       ------- : -------;
       ------- : -------;
       ------- : -------;
       ------- : -------;
       ------- : -------;
     function ---------------------(--: ----; --: ----; --: ----): ----;
     同一类型且含义逻辑上并列的变量 如 Error0,Error1,Error2 ; R,G,B
     private
       ------- ,
       ------- ,
       ------- ,
       ------- ,
       ------- : -------
     var
       ------- ,
       ------- ,
       ------- ,
       ------- ,
       ------- : -------
     function ---------------------(--, --, --: ----; var --, --, --: ----):
----;
     T------- = class(-------)
     private
       F-------: -------;
       F-------: -------;
       F-------: -------;
       function --------------: -------;
       procedure --------------;
     protected
       function --------------: -------;
       procedure --------------;
       function --------------: -------; virtual; abstract;
     public
       constructor Create(-------: -------); override; {if need to do someth
ing after Create}
       destructor Destroy; override; {if need to do something before Destroy
}
       function --------------: -------;
       procedure --------------;
       property -------: ------- read F-------;
     published
     end;
14、形式反映结构
  例子:
  TetIndex : array[0..3] of TInteger3v =
             ( (0, 1, 3),
                (2, 1, 0),
                (3, 2, 0),
                (1, 2, 3) );
  Cursors: array[0..4] of TIdentMapEntry = (
    (Value: crDefault; Name: 'crDefault'),
    (Value: crArrow; Name: 'crArrow'),
    (Value: crCross; Name: 'crCross'),
    (Value: crIBeam; Name: 'crIBeam') );
  if (dwFlags and PFD_DRAW_TO_WINDOW) = 0)
      or( (dwFlags and PFD_SUPPORT_OPENGL) = 0)
           or( (dwFlags and PFD_DOUBLEBUFFER) = 0)
              or (iPixelType <> PFD_TYPE_RGBA)
              or (cColorBits < 16)
              )
         ) then
  raise Exception.Create('Inappropriate Pixel Format chosen.');
  glBegin(shadeType);
  glNormal3fv(@n0);
  glVertex3fv(@dodec[a, 0]);
  glVertex3fv(@dodec[b, 0]);
  glVertex3fv(@dodec[c, 0]);
  glVertex3fv(@dodec[d, 0]);
  glVertex3fv(@dodec[e, 0]);
  glEnd();
  dodec[0, 0] := -alpha; dodec[0, 1] := 0; dodec[0, 2] := beta;
  dodec[1, 0] := alpha; dodec[1, 1] := 0; dodec[1, 2] := beta;
  dodec[2, 0] := -1; dodec[2, 1] := -1; dodec[2, 2] := -1;
procedure glutWireTorus(
                        innerRadius : GLdouble; //---------
                        outerRadius : GLdouble; //---------
                        nsides : GLint; //---------
                        rings : GLint ); //---------
    case FRunDirection of
      rdRightToLeft : begin
                              StY:=CnY;
                                   StX:=Width - CurrentStep;
                              end;
      rdLeftToRight : begin
                                 StY:=CnY;
                                 StX:=-CurrentStep;
                              end;
      rdBottomToTop : begin
                                     StX:=CnX;
                                     StY:=Height - CurrentStep;
                                 end;
      rdTopToBottom : begin
                                     StX:=CnX;
                                     StY:=CurrentStep - RTHeight;
                                  end;
                           else begin
                                     StX:=CnX;
                                      StY:=CnY;
                                  end;
      end;
     case (DitherMode) of
        dmNearest:
          Ditherer := TDitherEngine.Create(Bitmap.Width, ColorLookup);
        dmFloydSteinberg:
          Ditherer := TFloydSteinbergDitherer.Create(Bitmap.Width, ColorLook
up);
        dmStucki:
          Ditherer := TStuckiDitherer.Create(Bitmap.Width, ColorLookup);
        dmSierra:
          Ditherer := TSierraDitherer.Create(Bitmap.Width, ColorLookup);
        dmJaJuNI:
          Ditherer := TJaJuNIDitherer.Create(Bitmap.Width, ColorLookup);
        dmSteveArche:
          Ditherer := TSteveArcheDitherer.Create(Bitmap.Width, ColorLookup);

        dmBurkes:
          Ditherer := TBurkesDitherer.Create(Bitmap.Width, ColorLookup);
      else
        exit;
end;
返回
4、命名规则
  1、文件名称: u模块名称;见名知意
  2、控件名称: 功能_控件缩写;见名知意
  3、变量 : 尽量不用缩写,尽量用名词;见名知意
  4、方法与过程:尽量不用缩写,尽量用动宾词组;见名知意
5、常见的惯例
            类名以T打头 (Type之意)
            类的私有数据域以F打头(Field之意)
            对数据的存取操作分别以Set,Get打头
            事件属性以On打头


--End--

posted @ 2006-09-11 10:08 青蛙學堂 阅读(301) | 评论 (0)编辑 收藏

保存程序狀態方法

Delphi应用程序中保存状态信息的两种方法
成都市电子科技大学96
---- 许多For Windows的应用程序在一次运行结束时会自动保存此次运行的状态信息,

样做的好处是用户只要修改一次程序的运行状态,在下次启动此程序时,该程序会以上

运行的状态出现,用户可以按照自己的习惯来调整应用程序。
---- 在Delphi中有两种方法可以实现这种功能:使用INI文件或使用注册表。下面将详

阐述这两种方法。
---- 一、 使用INI文件保存状态信息
---- Delphi中提供了TIniFile类,TIniFile类能够在INI文件中存取应用程序专用信息
,我
们可以用它来处理INI文件。注意使用时将IniFiles单元加入uses列表中。
---- 使用INI文件存取应用程序专用信息是Windows 3.x中的标准方法。INI文件中的信

储存是分段的,每个段由一个括在方括号中的名称说明,比如WIN.INI中就包括[Deskt
op]
等段。每个段中又由一些键值组成,这些键值的格式是:< keyname >=< value >,共有

种类型:字符串、整型和布尔型,每种类型有两种方法可以读写:ReadBool,WriteBoo
l,
ReadInteger,WriteInteger,ReadString,WriteString。下面就一个例子来说明它们
的用法:
---- 1.建立INI文件
  procedure  TForm1.FormCreate(Sender:Tobject);
   {如INI文件不存在,建立INI文件;
   否则,从INI文件中读取数据}
   var
  status:integer;
     inifile:TIniFile;
     filename:String;
   begin
     filename:=extractfilepath
     (application.exename)+'iniexample.ini';
     inifiel:=Tinifile.create(filename);
     status:=inifile.readinteger
     ('MainForm','Status',0);
     if status< >0 then
     //INI文件存在,读状态信息
       case status of
       1: begin
         top:=inifiel.readinteger
         ('MainForm','Top',top);
          …………
         end;
       2: begin
         top:=100;
         left:=100;
         end;
      3: windowstate:=wsmaximized;
       end;
   end;
2.保存状态
   procedure  TForm1.FormDestroy
   (Sender:Tobject);
   var
     status:integer;
   begin
     case windowstate of
       wsnormal: begin
              inifile.writeinteger
              ('MainForm', 'Top',top);
              …………
              //保存状态信息
          end;
       wsminimized: status:=2;
       wsmaximized: status:=3;
     end;
     inifile.writeinteger('MainForm',
    'Status',status);
     inifile.destroy;
   end;
上述程序运行之后,生成的iniexample.ini文件格式如下:
  [MainForm]
    Top=60
    Left=100
    ………
    Status=1
---- 二、 使用注册表保存状态信息
---- INI文件只是为了兼容以前的应用程序而存在,Windows 95/NT使用系统注册表来代

INI文件,所有For Windows 95/NT的应用软件都应该使用注册表来保存状态,这也是
MicroSoft推荐的作法。Delphi提供了两个类来处理注册表。Tregistry类封装了系统注
册表。
而TRegIniFile类不但封装了注册表,还提供了一条简单的途径使现有的Windows 3.1应

软件升级到Windows 95/NT。TRegIniFile类提供了TIniFile类的接口,但没有使用文件

而是将数据保存在注册表中。文件名作为一个主键,默认建立在HKEY_CURRENT_USER
下。相应的,INI文件中的段名作为一个键建立,段中的各项数据就变为这个键下边的各

项数值。仍以上面的例子为例,如果使用TRegIniFile类,只需改动三处:
---- 1.在uses列表中用registry单元代替IniFiles单元
---- 2.用TRegIniFile类代替TIniFile类
---- 3.将inifiel:=Tinifile.create(filename);改为Inifile:=TRegIniFile.Creat
e(Filename);

posted @ 2006-09-11 10:03 青蛙學堂 阅读(451) | 评论 (0)编辑 收藏

delphi 函數

abort 函数 引起放弃的意外处理
abs 函数 绝对值函数
addexitproc 函数 将一过程添加到运行时库的结束过程表中
addr 函数 返回指定对象的地址
adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列
align 属性 使控件位于窗口某部分
alignment 属性 控件标签的文字位置
allocmem 函数 在堆栈上分配给定大小的块
allowgrayed 属性 允许一个灰度选择
ansicomparestr 函数 比较字符串(区分大小写)
ansicomparetext 函数 比较字符串(不区分大小写)
ansilowercase 函数 将字符转换为小写
ansiuppercase 函数 将字符转换为大写
append 函数 以附加的方式打开已有的文件
arctan 函数 余切函数
assignfile 函数 给文件变量赋一外部文件名
assigned 函数 测试函数或过程变量是否为空
autosize 属性 自动控制标签的大小
backgrounddi2001.jpg 属性 背景色
beginthread 函数 以适当的方式建立用于内存管理的线程
bevelinner 属性 控件方框的内框方式
bevelouter 属性 控件方框的外框方式
bevelwidth 属性 控件方框的外框宽度
blockread 函数 读一个或多个记录到变量中
blockwrite 函数 从变量中写一个或多个记录
borderstyle 属性 边界类型
borderwidth 属性 边界宽度
break 命令 终止for、while、repeat循环语句
brush 属性 画刷
caption 属性 标签文字的内容
changefileext 函数 改变文件的后缀
chdir 函数 改变当前目录
checked 属性 确定复选框选中状态
chr 函数 返回指定序数的字符
closefile 命令 关闭打开的文件
color 属性 标签的颜色
columns 属性 显示的列数
comparestr 函数 比较字符串(区分大小写)
concat 函数 合并字符串
continue 命令 继续for、while、repeat的下一个循环
copy 函数 返回一字符串的子串
cos 函数 余弦函数
ctl3d 属性 是否具有3d效果
cursor 属性 鼠标指针移入后的形状
date 函数 返回当前的日期
datetimetofiledate 函数 将delphi的日期格式转换为dos的日期格式
datetimetostr 函数 将日期时间格式转换为字符串
datetimetostring 函数 将日期时间格式转换为字符串
datetostr 函数 将日期格式转换为字符串
dayofweek 函数 返回星期的数值
dec 函数 递减变量值
decodedate 函数 将日期格式分解为年月日
decodetime 函数 将时间格式分解为时、分、秒、毫秒
delete 函数 从字符串中删除子串
deletefile 命令 删除文件
diskfree 函数 返回剩余磁盘空间的大小
disksize 函数 返回指定磁盘的容量
dispose 函数 释放动态变量所占的空间
disposestr 函数 释放字符串在堆栈中的内存空间
ditherbackgrounddi2001.jpg?使背景色的色彩加重或减少50%
dragcursor 属性 当鼠标按下时光标的形状
dragmode 属性 按动的作用方式
dropdowncount 属性 容许的显示数据项的数目
editmask 属性 编辑模式
enabled 属性 是否使标签呈现打开状态
encodedate 函数 将年月日合成为日期格式
encodetime 函数 将时、分、秒、毫秒合成为时间格式
endmargin 属性 末尾边缘
eof 函数 对有类型或无类型文件测试是否到文件尾
eoln 函数 返回文本文件的行结束状态
erase 命令 删除外部文件
exceptaddr 函数 返回引起当前意外的地址
exclude 函数 从集合中删除一些元素
exceptobject 函数 返回当前意外的索引
exit 命令 立即从当前的语句块中退出
exp 函数 指数函数
expandfilename 函数 返回包含绝对路径的字符串
extendedselect 属性 是否允许存在选择模式,true时,multiselect才有意义
extractfiledir 函数 返回驱动器和路径
extractfileext 函数 返回文件的后缀
extractfilename 函数 返回文件名
extractfilepath 函数 返回指定文件的路径
fileage 函数 返回文件已存在的时间
fileclose 命令 关闭指定的文件
filecreate 命令 用指定的文件名建立新文件
filedatetodatetime 函数 将dos的日期格式转换为delphi的日期格式
fileexists 函数 检查文件是否存在
filegatattr 函数 返回文件的属性
filegetdate 函数 返回文件的dos日期时间标记
fileopen 命令 用指定的存取模式打开指定的文件
filepos 函数 返回文件的当前指针位置
fileread 命令 从指定的文件读取
filesearch 命令 在目录中搜索指定的文件
fileseek 函数 改变文件的指针
filesetattr 函数 设置文件属性
filesetdate 函数 设置文件的dos日期时间标记
filesize 函数 返回当前文件的大小
filewrite 函数 对指定的文件做写操作
fillchar 函数 用指定的值填充连续字节的数
findclose 命令 终止findfirst/findnext序列
findfirst 命令 对指定的文件名及属性搜索目录
findnext 命令 返回与文件名及属性匹配的下一入口
floattodecimal 函数 将浮点数转换为十进制数
floattostrf 函数 将浮点数转换为字符串
floattostr 函数 将浮点数转换为字符串
floattotext 函数 将给定的浮点数转换为十进制数
floattotextfmt 函数 将给定的浮点数转换为十进制数
flush 函数 将缓冲区的内容刷新到输出的文本文件中
fmtloadstr 函数 从程序的资源字符串表中装载字符串
fmtstr 函数 格式化一系列的参数,其结果以参数result返回
font 属性 设置字体
format 函数 格式化一系列的参数并返回pascal字符串
formatbuf 函数 格式化一系列的参数
formatdatetime 函数 用指定的格式来格式化日期和时间
formatfloat 函数 指定浮点数格式
frac 函数 返回参数的小数部分
freemem 函数 按给定大小释放动态变量所占的空间
getdir 返回指定驱动器的当前目录
getheapstatus 返回内存管理器的当前状态
getmem 建立一指定大小的动态变量,并将指针指向该处
getmemorymanager 返回内存管理器的入口点
glyph 函数 按钮上的图象
halt 停止程序的执行并返回到操作系统
hi 返回参数的高地址位
high 返回参数的上限值
hint 属性 提示信息
int 返回参数的整数部分
include 添加元素到集合中
insert 在字符串中插入子串
inttohex 将整型数转换为十六进制数
inttostr 将整型数转换为字符串
ioresult 返回最新的i/o操作完成状态
isvalidident 测试字符串是否为有效的标识符
items 属性 默认显示的节点
kind 属性 摆放样式
largechange 属性 最大改变值
layout 属性 图象布局
length 函数 返回字符串的ざ?
lines 属性 缺省显示内容
ln 函数 自然对数函数
lo 函数 返回参数的低地址位
loadstr 函数 从应用程序的可执行文件中装载字符资源
lowercase 函数 将给定的字符串变为小写
low 函数 返回参数的下限值
max 属性 最大值
maxlength 属性 最大长度
min 属性 最小值
mkdir 命令 建立一子目录
move 函数 从源到目标复制字节
multiselect 属性 允许同时选择几个数据项
name 属性 控件的名字
new 函数 建立新的动态变量并设置一指针变量指向他
newstr 函数 在堆栈上分配新的字符串
now 函数 返回当前的日期和时间
odd 测试参数是否为奇数
onactivate 事件 焦点移到窗体上时触发
onclick 事件 单击窗体空白区域触发
ondblclick 事件 双击窗体空白区域触发
onclosequery 事件 使用者试图关闭窗体触发
onclose 事件 窗体关闭后才触发
oncreate 事件 窗体第一次创建时触发
ondeactivate 事件 用户切换到另一应用程序触发
ondragdrop 事件 鼠标拖放操作结束时触发
ondragover 事件 有其他控件从他上面移过触发
onmousedown 事件 按下鼠标键时触发
onmouseup 事件 释放鼠标键时触发
onmousemove 事件 移动鼠标时触发
onhide 事件 隐藏窗体时触发
onkeydown 事件 按下键盘某键时触发
onkeypress 事件 按下键盘上的单个字符键时触发
onkeyup 事件 释放键盘上的某键时触发
onpaint 事件 窗体上有新部分暴露出来触发
onresize 事件 重新调整窗体大小触发
onshow 事件 在窗体实际显示之前瞬间触发
ord 返回序数类的序数
outlinestyle 属性 类型
outofmemoryerror 引起outofmemory意外
pageindex 属性 页索引
pages 属性 页
paramcount 函数 返回在命令行上传递给程序的参数数量
paramstr 函数 返回指定的命令行参数
pen 属性 画刷设置
pi 函数 返回圆周率pi
picture 属性 显示图象
pictureclosed 属性 设置closed位图
pictureleaf 属性 设置leaf位图
pictureminus 属性 设置minus位图
pictureopen 属性 设置open位图
pictureplus 属性 设置plus位图
pos 函数 在字符串中搜索子串
pred 函数 返回先前的参数
random 函数 返回一随机函数
randomize 函数 用一随机数初始化内置的随机数生成器
read 函数 对有格式的文件,读一文件组件到变量中;
对文本文件,读一个或多个值到一个或多个变量中
readln 函数 执行read过程,然后跳到文件下一行
readonly 属性 只读属性
reallocmem 函数 分配一动态变量
rename 函数 重命名外部文件
renamefile 函数 对文件重命名
reset 函数 打开已有的文件
rewrite 函数 建立并打开一新的文件
rmdir 函数 删除空的子目录
round 函数 将实数值舍入为整型值
runerror 函数 停止程序的执行
scrollbars 属性 滚动条状态
seek 函数 将文件的鼻爸刚胍贫街付ǖ淖榧?
seekeof 函数 返回文件的文件结束状态
seekeoln 函数 返回文件的行结束状态
selectedcolor 属性 选中颜色
setmemorymanager 函数 设置内存管理器的入口点
settextbuf 函数 给文本文件指定i/o缓冲区
shape 属性 显示的形状
showexception 函数 显示意外消息与地址
sin 函数 正弦函数
sizeof 函数 返回参数所占的字节数
smallchange 属性 最小改变值
sorted 属性 是否允许排序
sqr 函数 平方函数
sqrt 函数 平方根函数
startmargin 属性 开始边缘
state 属性 控件当前状态
str 函数 将数值转换为字符串
stralloc 函数 给以null结束的字符串分配最大长度-1的缓冲区
strbufsize 函数 返回存储在由stralloc分配的字符缓冲区的最大字符数
strcat 函数 将一字符串附加到另一字符串尾并返回合并的字符串
strcomp 函数 比较两个字符串
strcopy 函数 将一个字符串复制到另一个字符串中
strdispose 函数 释放堆栈上的字符串
strecopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针
strend 函数 返回指向字符串尾部的指针
stretch 属性 自动适应控件的大小
strfmt 函数 格式化一系列的参数
stricomp 函数 比较两个字符串(不区分大小写)
stringtowidechar 函数 将ansi字符串转换为unicode字符串
strlcat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串
strlcomp 函数 以最大长度比较两个字符串
strlcopy 函数 将一个字符串中的字符复制到另一个字符串中
strlen 函数 返回字符串中的字符数
strlfmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针
strlicomp 函数 以最大长度比较两个字符串(不区分大小写)
strlower 函数 将字符串中的字符转换为小写
strmove 函数 将一个字符串中的字符复制到另一个字符串中
strnew 函数 在堆栈上分配一个字符串
strpas 函数 将以null结束的字符串转换为pascal类的字符串
strpcopy 函数 将pascal类的字符串复制为以null结束的字符串
strplcopy 函数 从pascal类的最大长度字符串复制为以null结束的字符串
strpos 函数 返回一个字符串在另一个字符串中首次出现指针
strrscan 函数 返回字符串中最后出现字符的指针
strscan 函数 返回字符串中出现首字符的指针
strtodate 函数 将字符串转换为日期格式
strtodatetime 函数 将字符串转换为日期/时间格式
strtofloat 函数 将给定的字符串转换为浮点数
strtoint 函数 将字符串转换为整型
strtointdef 函数 将字符串转换为整型或默认值
strtotime 函数 将字符串转换为时间格式
strupper 函数 将字符串中的字符转换为大写
style 属性 类型选择
suce 函数 返回后继牟问?
swap 函数 交换参数的高低地址位
tabs 属性 标记每一项的内容
tabindex 属性 标记索引
text 属性 显示的文本
texttofloat 函数 将字符串(以null结束的格式)转换为浮点数
time 函数 返回当前的时间
timetostr 函数 将时间格式转换为字符串
trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符
trimleft 函数 从给定的字符串中删除首部的空格及控制字符
trimright 函数 从给定的字符串中删除尾部的空格及控制字符
trunc 函数 将实型值截取为整型值
truncate 函数 截去当前文件位置后的内容
unselectedcolor 属性 未选中颜色
upcase 将字符转换为大写
uppercase 将给定的字符串变为大写
val 函数 将字符串转换为整型值
vararraycreate 函数 以给定的界限和维数建立变体数组
vararraydimcount 函数 返回给定变体的维数
vararrayhighbound 函数 返回给定变体数组维数的上界
vararraylock 函数 锁定给定的变体数组
vararraylowbound 函数 返回给定变体数组维数的下界
vararrayof 函数 返回指定变体的数组元素
vararrayredim 函数 通过改变上限来调整变体的大小
vararrayunlock 函数 解锁指定的变体数组
varastype 函数 将变体转换为指定的类型
varcase 函数 将变体转换为指定的类型并保存他
varclear 函数 清除指定的变体
varcopy 函数 将指定的变体复制为指定的变体
varformdatetime 函数 返回包含日期时间的变体
varisarray 函数 测试变体是否为数组
varisempty 函数 测试变体是否为unassigned
varisnull 函数 测试变体是否为null
vartodatetime 函数 将给定的变体转换为日期时间
vartype 函数 将变体转换为指定的类型并保存他
visible 属性 控件的可见性
wantreturns 属性 为true时,按回车键产生一个回车符;
为false时,按下ctrl+enter才产生回车符
write 命令 对有格式的文件,写一变量到文件组件中;
对文本文件,写一个或多个值到文件中
writeln 命令 执行write过程,然后输出一行结束标志
widecharlentostring 函数 将ansi字符串转换为unicode字符串
widecharlentostrwar 函数 将unicode字符串转换为ansi字符串变量
widechartostring 函数 将unicode字符串转换为ansi字符串
widechartostrvar 函数 将unicode字符串转换为ansi字符串变量

posted @ 2006-09-11 10:00 青蛙學堂 阅读(300) | 评论 (0)编辑 收藏

仅列出标题
共43页: First 23 24 25 26 27 28 29 30 31 Last 
<2025年2月>
2627282930311
2345678
9101112131415
16171819202122
2324252627281
2345678

导航

统计

常用链接

留言簿(8)

随笔分类

随笔档案

收藏夹

青蛙学堂

最新评论

阅读排行榜

评论排行榜