急急﹗﹗﹗參數傳遞﹗ (60分)

  • 主题发起人 主题发起人 databox
  • 开始时间 开始时间
D

databox

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TurnOrdToStyleSize(OrdSize,StySize:array of array of string);
我想傳這樣一個參數﹐里面是二維數組﹐卻不行﹐為什么﹖
function TurnOrdToStyleSize(OrdNo:string):array of array of string;
在函數中﹐我想將回傳值設為二維數組也不行。請問怎么解決呀。我急著要用呢。
為什么不能用二維數組呢﹖能告訴我原因嗎﹖
 
用Variant类型就可以了。
procedure TurnOrdToStyleSize(OrdSize,StySize:variant);
var
v:array of variant;
i:integer;
begin
if varisarray(ordsize) then
v:=ordsize;
for i=0 to high(v) do
if not varisarray(v) then
showmessage(string(v);
end;

用Variant可以传递n维数组,并且每维长度可以不相同

调用

TurnOrdToStyleSize(vararrayof([vararrayof([23,'wert',true,false]),vararrayof([vararrayof([......

很随意的
 
djdsz﹐用variant會不會降低效率呢﹖
 
djdsz的方法可以实现,可变类型的变量传递会会耗费大量内存,建议你最好利用二维数据
 
LanFairy﹐二維數據怎么當參數傳遞呢﹖我就是想這樣但通不過。
 
使用
Type
MyArr=Array of [0..10, 0..3] of Boolean;
这样或许能够进行参数的传递
 
运用Variant传递参数效率是要差些。但在行列式运算中,可不能使用Array of [0..10, 0..3] of float
这样来传递参数吧,因为不是固定的
 
使用
Type
MyArr=Array of [0..10, 0..3] of Boolean;
这样或许能够进行参数的传递
 
想不到我来晚了,既然楼上已经说了,我还用用说吗?如果不说我的Memo就白写了,
给你吧!
unit Unit1;

interface

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

type
myarray = Array[0..9,0..9] of string;

TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
myfile = record
name: string[8];
age: ShortInt;
sex: string[2];
end;
var
Form1: TForm1;

implementation

{$R *.DFM}

function findarray(a1: myarray
str: string): boolean;
var
i, j: Integer;
begin
result := False;
for i := 0 to 9 do
begin
for j := 0 to 9 do
begin
if str = a1[i,j] then
begin
Result := true;
exit;
end;
end;
end;

end;


procedure TForm1.Button1Click(Sender: TObject);
var
a1: myarray;
begin
a1[0,0] := 'a';
a1[0,1] := 'b';
if findarray(a1, 'b') then
showmessage('find');
end;

end.
 
他们说得都对!databox还不给加分,你不加我就加了!
 
gzpbx:
我来向你报个到。
 
最好用OleVariant,不但可以二维,n 维都可以
 
對不起﹐昨天沒有上來。
 
后退
顶部