掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBのCallByNameみたいな関数ないですか? (ID:1029)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
CallByNameに、ぴったり対応するものはありません。 C言語やDelphiに比べて、VBのほうが遠回しなやり方になっていますから。 FindComponentは、文字列型のNameプロパティを探すものであって、関数名を探すCallByNameとは全く別のものですね。 Delphiでは、関数はconstな変数のようなものです。 usesで指定したUnitの関数は全て使えます。 # 一部、privateな関数は除く Delphiに、文字列として名前を指定する方法がないのでなく、VBに文字列で指定する必要があった、のだと思います。 どういうコーディングで困っているかわかりませんが、次のような場合でしょうか。 [VB] Public Funcion Func1(Param As String) As String Public Funcion Func2(Param As String) As String Public Funcion Func3(Param As String) As String を、"Func" + CStr(i)で指定したい。 Delphiでやるときは、配列に一度入れます。 こんな感じです。 unit MainFrm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TNFunc = function(Param:string):string; TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} function Func0(Param: String): String; begin ShowMessage('0:' + Param); Result := '0'; end; function Func1(Param: String): String; begin ShowMessage('1:' + Param); Result := '1'; end; function Func2(Param: String): String; begin ShowMessage('2:' + Param); Result := '2'; end; function FuncN(N: integer; Param: String): String; var Funcs: array[0..2] of TNFunc; begin Funcs[0] := Func0; Funcs[1] := Func1; Funcs[2] := Func2; Result := Funcs[N](Param); end; procedure TForm1.Button1Click(Sender: TObject); begin FuncN(StrToIntDef(Edit1.Text, 0), 'TEST'); end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.