Delphi自定义函数声明及调用问题!

2024-05-09

1. Delphi自定义函数声明及调用问题!

很幸运能帮到你。自定义函数声明可以放在窗体内,也可以放在窗体外的单元文件内。两种都可以。
一、按一般的情况,公共函数放到窗体外的单元文件Pas文件内声明。如下代码正确:
var
  frm_main: Tfrm_main;
  Function Get_item_list(tbname, fdname: String; alist: TStrings): Boolean;//在这里声明不出错,但函数功能实现不了!
然后实现代码也没错。
最后调用时分两种情况:
    1,在别的单元文件内的其他窗体内调用。需要在其他单元文件内implementation关键字后加上引用该单元文件:uses uni_main;然后在使用的地方直接Get_item_list('tb资料设置_客户', '所属省份',quprovince.Items );并不需要加uni_main.因为他在窗体对象之外声明,是公共函数。引用了该单元文件后,这个调用能够找到该函数声明和实现。
       2,在本单元文件内调用。这样简单。只需要一步。直接Get_item_list('tb资料设置_客户', '所属省份',quprovince.Items );并不需要加uni_main.这个引用。因为这个自定义函数不属于窗体对象。

二、按特殊情况,这个自定义函数要放到窗体内部。那么,声明用:
public
    { Public declarations }
    pubEmpNo,pubEmpName:string;
    procedure CopyDbDataToExcel(Target: TDbgrid);
    Function Get_item_list(tbname, fdname: String; alist: TStrings): Boolean; // 在这里声明的话出错!



  end;

这个也没错。但是函数体的实现部分应该是加上uni_main.这个引用。注意下列代码的函数头部分加上该引用(其他地方不变):
函数如下:
Function uni_main.Get_item_list(tbname, fdname: String; alist: TStrings): Boolean;
Begin
  alist.BeginUpdate;
  alist.Clear;
  Try
    Try
      With TADOQuery.Create(Nil) Do
      Begin
        Try
          Close;
          LockType := ltReadOnly;
          Connection := DM.AdoConn;
          Sql.Clear;
          //SQL.Add(Format('select %s from  %s where %s is not null', [fdname, tbname, fdname]));
          SQL.Add(Format('select %s from  %s', [fdname, tbname]));
          Open;
          While Not Eof Do
          Begin
            alist.Add(FieldByName(fdname).AsString);
            Next;
          End;
          Close;
        Finally
          Free;
        End;
      End;
    Except On E: Exception Do
      Begin
        Application.MessageBox(PChar(E.Message), 'msg', 64);
      End;
    End;
  Finally
    alist.EndUpdate;
  End;
End;

如果在另一个单元文件调用的时候,注意在另一个单元文件的implementation关键字后同样uses uni_main;然后调用时候也要加上(uni_main包含窗体名字).Get_item_list(参数1,。。。。);这样你编译就会通过了。

Delphi自定义函数声明及调用问题!

2. delphi怎样写自定义函数?写在那个部分?

TForm1 = class(TForm)
    Button1: TButton;
    function Button1Click(Sender: TObject);
  private
    { Private declarations }
      function a(b:string):string;//一般写在这就行了,然后ctrl+c, 在下面写代码
   //如果你要点按钮执行,则直接在按钮的事件里写 a('你好'); 这样
  protected
  public
    { Public declarations }
  end;

function TForm1.a(b:string):string;
begin
  form1.caption:=b;
end;

function TForm1.Button1Click(Sender: TObject);
begin
   a('你好'); 
end;

3. Delphi 高手 自定义公式

e是表示什么?看你的示例里的公式,如果刚好能在delphi中实现。
你直接取出公式x,传到一个函数function f(x:string):string,函数里stringreplace(x,'a','%0:d',[rfreplaceall]),依次用%1:d取代b2取代c3取代d。
返回的一个字符串就是类似%0:d div %1:d +%2:d
到时候要用,就format(f(x),[a,b,c,d])

如果你写的公式是随便写的,比如除法是用% ,多取代一次,用div替换就好。哦注意div是整型相除,如果是浮点数相除要用/
刚刚没注意这个,抱歉
你还是全部用浮点型的,然后先替换div成/,再替换d  %3:f

Delphi 高手 自定义公式

4. delphi7自定义函数的问题

不知道你的unit1里是怎么写的,但是如果function area(r:real):real;是公共函数,倒是建议你单独建一个专门存放公共函数的unit 文件比如:
---------------------------------------------------------------

unit FunctionsUnit;

interface

//uses其他文件或模块

uses

//自定义公共函数声明

function area(r:real):real;


implementation

//函数实现

function area(r:real):real;
begin   
result:=pi*r*r;
end;

end.

-------------------------------------------------------------------------------------------

你在需要调用的这个函数文件里只要先uses了这个文件,就可以直接用函数方法了

5. delphi中怎样自定义函数

......
interface

uses
  ......
function aaa(abc: string): Boolean;  // 这一句是函数声明,告诉编译器说你声明了名叫aaa的函数


im....

function aaa(abc: string): Boolean;
begin
  if abc = '' then Result := True
  else Result := False;
end; 
// 是不是很简单呢?

delphi中怎样自定义函数

6. DelPhi编程中怎样自定义一个函数

TComponet中的FOwner是用于在组件创建时指定“属主”用的,属主的作用是在于当属主Free的时候自动Free掉其下的所有组件。例:
var
  lbl: TLabel;//此处TLabel继承自TComponent
begin
  lbl ;= TLabel.Create(Form1);
  ...
  lbl.Free;//通常我们会加上这句,但这里加上就错了
           //Delphi会在Form1销毁的时候自动将lbl销
           //毁掉
end;
这里TLabel就相当于TComponent,而Form1是TForm类的对象,TForm也是继承自TComponent,既然是这样实现,那在类的定义里楼主所说的情况应该不难理解了吧~~

ICompare = interface  //声明一个接口ICompare
['{DDFE0840-E8FB-11D2-9085-0040F6741DE2}'] //全局唯一的ID,用于识别不同的接口

function CompareWith(ACompare: ICompare; ASortBy: Integer): Integer; //此接口所拥有的“动作”,接口本身不实现,由实现接口的类实现此“动作”

7. delphi 自定义一个有四个输入参数,有两个相同类型的返回结果的函数,如何定义

比如你想写个函数func,按照你的说法,在delphi中应该定义为procedure而非function,具体写法如下:
procedure func(EDate,SDate:TDatetime;
                         i, k:Integer;
                         var  BSDate,BEDate:TDatetime);

delphi 自定义一个有四个输入参数,有两个相同类型的返回结果的函数,如何定义

8. delphi自定义函数写在那里?

在private或USES内声明
然后在implementation的地方写实现代码 ;再或单独放在一个unit单元文件里,在uses引用,然后直接引用即可。