delphi中编写参数个数可变的函数  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi中编写参数个数可变的函数


这是从Delphi帮助中摘出的一个例子,稍做改动。

Program Test;
{$APPTYPE CONSOLE}

uses Windows, System, SysUtils;

function MakeStr(const Args: array of const): string;
var
  I: Integer;
begin
  Result := '';
  for I := 0 to High(Args) do
    with Args[I] do
      case VType of
        vtInteger:
          begin
            writeln('vtInteger');
            Result := Result + IntToStr(VInteger) + ' ';
          end;
        vtBoolean:
          begin
            writeln('vtBoolean');
            Result := Result + BoolToStr(VBoolean) + ' ';
          end;
        vtChar:
          begin
            writeln('vtChar');
            Result := Result + VChar + ' ';
          end;
        vtExtended:
          begin
            writeln('vtExtended');
            Result := Result + FloatToStr(VExtended^) + ' ';
          end;
        vtString:
          begin
            writeln('vtString');
            Result := Result + VString^ + ' ';
          end;
        vtPChar:
          begin
            writeln('vtPChar');
            Result := Result + VPChar + ' ';
          end;
        vtObject:
          begin
            writeln('vtObject');
            Result := Result + VObject.ClassName + ' ';
          end;
        vtClass:
          begin
            writeln('vtClass');
            Result := Result + VClass.ClassName + ' ';
          end;
        vtAnsiString:
          begin
            writeln('vtAnsiString');
            Result := Result + string(VAnsiString) + ' ';
          end;
        vtCurrency:
          begin
            writeln('vtCurrency');
            Result := Result + CurrToStr(VCurrency^) + ' ';
          end;
        vtVariant:
          begin
            writeln('vtVariant');
            Result := Result + string(VVariant^) + ' ';
          end;
        vtInt64:
          begin
            writeln('vtInt64');
            Result := Result + IntToStr(VInt64^) + ' ';
          end;
    end;
end;

begin
  writeln(MakeStr(['abc', 123, 12.34, Now]));
end.


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.045444011688232 seconds