delphi中的函数传参如何传枚举参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中的函数传参如何传枚举参数?相关的知识,希望对你有一定的参考价值。

例如: 一个窗体 声明一个枚举 type zType=(eLeading=1,rTrailing=2); 然后想用写一个函数  function getnum(sss:zType):integer;这个函数的传递的参数想用枚举类型、但是编译不过去、不识别zTypedelphi里面如何处理这样的问题?   

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
Private declarations
public
Public declarations
end;
var
Form1: TForm1;
implementation
type
MyFont=(st,xt,ht); //定义枚举类型
var
ft:MyFont; //定义枚举类型变量
$R *.dfm
Function ffont(fft:MyFont):String;//自定义函数
begin
case fft of
st:ffont:='宋体';
xt:ffont:='楷体_GB2312';
ht:ffont:='黑体';
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Caption='宋体' then
begin
ft:=st;
Edit1.Font.Name:=ffont(ft); //调用函数,使文本变为宋体
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Button2.Caption='楷体' then
begin
ft:=xt;
Edit1.Font.Name:=ffont(ft);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Button3.Caption='黑体' then
begin
ft:=ht;
Edit1.Font.Name:=ffont(ft);
end;
end;
end.

你看上面的代码枚举可以作为函数的参数的

继续追问:
delphi如何把枚举类型转换为String类型输出?

_GetZeroType('C:\test.txt'); 其中我的_GetZeroType是一个函数 返回的是一个枚举类型。
我想打印出来测试一下是否正确、但是如何转换为String类型的打出来?

定义的枚举type ZeroType=(eLeading=1,rTrailing=2);
函数实现的功能、
function _GetZeroType(_tmpDRLFileName:string):ZeroType;
var
intLocal:Integer;
saveEdit:TStringList;
strBuffer:String;
begin
If Not FileExists(_tmpDRLFileName) Then exit;
Try
saveEdit:=TStringList.Create;
saveEdit.LoadFromFile(_tmpDRLFileName);
strBuffer:=saveEdit.CommaText;
intLocal:=Pos(strBuffer,'X0');
if intLocal=0 then
begin
intLocal:=Pos(strBuffer,'Y0');
if intLocal=0 then
Result:=eLeading
else
Result:=rTrailing;
end
else
begin
Result:=eLeading;
end;
Finally
saveEdit.Free;
end;
end;
参考技术A unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type

zType=(eLeading=1,rTrailing=2);

TForm1 = class(TForm)
btn1: TButton;
OpenDialog1: TOpenDialog;
Edit1: TEdit;
procedure btn1Click(Sender: TObject);
private
procedure test(a:zType);
Private declarations
public
Public declarations
end;

var
Form1: TForm1;

implementation

$R *.dfm

procedure TForm1.btn1Click(Sender: TObject);
var
a:zType;
begin
a:=zType(2);
test(a);
end;

procedure TForm1.test(a: zType);
begin
case a of
eLeading:ShowMessage('eLeading');
rTrailing:ShowMessage('rTrailing');
end;
end;

end.

函数传参

函数传参

1、(*args) : *可变参数,多个参数时可写*名字,可以不传 ,可以传多个参数

2、(name="None")  可以不传,默认值参数

3、(**kwargs) 字典格式 key:values格式 关键字参数 (**info): kwargs可以随意起名字

4、(word) 位置参数,必传参数

 

注意:使用顺序为:必填参数、默认值参数、可变参数、关键字参数

eg:def t1(word,name="None",*args,**kwargs)

以上是关于delphi中的函数传参如何传枚举参数?的主要内容,如果未能解决你的问题,请参考以下文章

回调函数如何传参?

函数中传值跟传参的区别?

函数传参

Extjs使用Ext.function.bind, 给句柄函数传参

C++(笔记)容器(vector)作为函数参数如何传参

js函数传参