函数返回参数可以是一个包含多个结果的集合吗(分不够再加)

xflin 2004-10-13 09:07:00
在DELPHI中可以像JAVA一样,在函数中返回类似于Vector一样的集合吗?我需要返回一个包含多个结果的集合,DEPHI中可以支持吗?我查了很多资料,好像在DELPHI中函数返回的参数只能一个。大家帮忙解决一下哈,分不够再加。
...全文
201 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
knife_s 2004-10-22
  • 打赏
  • 举报
回复
其实可以变通的,带传址参数就行了,把需要返回的值写在传址参数里就可以了
victor_yang 2004-10-22
  • 打赏
  • 举报
回复
var
vVector:Olevariant;
begin
vVector:=vararraycreate([0,n],varvariant);
vVector[0]:='abc';
vVector[1]:=123;
vVector[2]:=1.23;
.
.
.
YourFunction(vVector);
FreeAndNil(vVector);
end;

procedure YourFunction(aVector:OleVariant);
var
v1:String;
v2:Integer;
v3:real;
begin
v1:=aVector[0];
v2:=aVector[1];
v3:=aVector[2];
ShowMessage(format('1是''%s'',2是%d,3是%g',[v1,v2,v3]));
end;
不知道楼主是否满意?
xflin 2004-10-21
  • 打赏
  • 举报
回复
谢谢各位,我对于vector_yang的方案比较感兴趣,,由于我是初学,希望vector_yang能够写得更详细一点,谢谢各位了。
jinjazz 2004-10-20
  • 打赏
  • 举报
回复
type
Txxx = packed record
a : char;
b : char;

end;
goodloop 2004-10-20
  • 打赏
  • 举报
回复
可以啊..自定义一个类型就好了
victor_yang 2004-10-19
  • 打赏
  • 举报
回复
var
vVector:Olevariant;
begin
vVector:=vararraycreate([0,n],varvariant);
vVector[0]:='abc';
vVector[1]:=123;
vVector[2]:=1.23;
.
.
.
YourFunction(vVector);
end;
明白吗?
xflin 2004-10-18
  • 打赏
  • 举报
回复
怎么样自定义集合啊?
liuqifeiyu 2004-10-13
  • 打赏
  • 举报
回复
返回一个数组类型的不行吗?
hailang_zh 2004-10-13
  • 打赏
  • 举报
回复
自定义集合啊,什么都能返回的。
anbeel 2004-10-13
  • 打赏
  • 举报
回复
procedure TForm1.FormButton1Click(Sender: TObject);

type
PMyList = ^AList;
AList = record
I: Integer;
C: Char;
end;

var

MyList: TList;
ARecord: PMyList;
B: Byte;
Y: Word;
begin
MyList := TList.Create;
try
New(ARecord);
ARecord^.I := 100;
ARecord^.C := 'Z';
MyList.Add(ARecord); {Add integer 100 and character Z to list}
New(ARecord);
ARecord^.I := 200;
ARecord^.C := 'X';
MyList.Add(ARecord); {Add integer 200 and character X to list}

{ Now paint the items onto the paintbox}
Y := 10; {Variable used in TextOut function}

for B := 0 to (MyList.Count - 1) do
begin
ARecord := MyList.Items[B];
Canvas.TextOut(10, Y, IntToStr(ARecord^.I)); {Display I}
Y := Y + 30; {Increment Y Value again}
Canvas.TextOut(10, Y, ARecord^.C); {Display C}
Y := Y + 30; {Increment Y Value}
end;

{ Cleanup: must free the list items as well as the list }
for B := 0 to (MyList.Count - 1) do
begin

ARecord := MyList.Items[B];
Dispose(ARecord);
end;
finally
MyList.Free;
end;
end;
xflin 2004-10-13
  • 打赏
  • 举报
回复
能不能给出具体例子,搞定后,再50分并立即结分
anbeel 2004-10-13
  • 打赏
  • 举报
回复
看看TList例子
xflin 2004-10-13
  • 打赏
  • 举报
回复
我要求返回的参数是不定的,我现在要做的是,返回符合条件的窗口句柄和窗口上的一个控件句柄,而且是一,一对应的,也就是说要返回类似一张二维表的东西,由于我并不知道符合条件的窗口有多少,所以我要求有多少就返少,该怎么做啊?最好不要使用全局变量。
first_lover 2004-10-13
  • 打赏
  • 举报
回复
先定义一个记录
TDemo = record
astr1 : string;
astr2 : string;
end;
然后代码如下:
function TForm1.setValue(var aDemo : TDemo) : Boolean;
begin
result := true;
try
aDemo.astr1 := 'astr1';
aDemo.astr2 := 'astr2';
except
result := false;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
aDemo : TDemo;
begin
try
if setValue(aDemo) then
begin
Memo1.Lines.Add(aDemo.astr1);
Memo1.Lines.Add(aDemo.astr2);
end;
except
Memo1.Lines.Add('wrong');
end;

end;

也就是将多个返回结果放在一个记录中,作为一个变量返回。
wycg_cnh20 2004-10-13
  • 打赏
  • 举报
回复
例子:
TYourTest=('12','123','3213');
TAssembly =Set of TYourTest;
function YourFunction :TAssemBly;
begin
..........................
end;
1_ 2004-10-13
  • 打赏
  • 举报
回复
可以通過全局變量實現。
beyondtkl 2004-10-13
  • 打赏
  • 举报
回复
那你就定义返回 record 或者

aaa(var return1...var returnN..) 做为【in/out】参数返回
wycg_cnh20 2004-10-13
  • 打赏
  • 举报
回复
当时你可以自己定义一个你自己想要的集合类型出来作为返回参数
wycg_cnh20 2004-10-13
  • 打赏
  • 举报
回复
是的,只能支持一个
xflin 2004-10-13
  • 打赏
  • 举报
回复
给全行吗?把代码给全行吗?
加载更多回复(3)
代码转载自:https://pan.quark.cn/s/a4b39357ea24 基于LSTM三类的文本情感析 背景介绍 文本情感析作为NLP的常见任务,具有很高的实际应用价值。 本文将采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种情感的类器。 本文的目的是快速熟悉LSTM做情感析任务,所以本文提到的只是一个baseline,并在最后析了其优劣。 对于真正的文本情感析,在本文提到的模型之上,还可以做很多工作,以后有空的话,笔者可以再做优化。 理论介绍 RNN应用场景 RNN相对于传统的神经网络,它允许我们对向量序列进行操作:输入序列、输出序列、或大部的输入输出序列。 如下图所示,每一个矩形是一个向量,箭头则表示函数(比如矩阵相乘)。 输入向量用红色标出,输出向量用蓝色标出,绿色的矩形是RNN的状态(下面会详细介绍)。 从做到右:(1)没有使用RNN的Vanilla模型,从固定大小的输入得到固定大小输出(比如图像类)。 (2)序列输出(比如图片字幕,输入一张图片输出一段文字序列)。 (3)序列输入(比如情感析,输入一段文字然后将它类成积极或者消极情感)。 (4)序列输入和序列输出(比如机器翻译:一个RNN读取一条英文语句然后将它以法语形式输出)。 (5)同步序列输入输出(比如视频类,对视频中每一帧打标签)。 我们注意到在每一个案例中,都没有对序列长度进行预先特定约束,因为递归变换(绿色部)是固定的,而且我们可以多次使用。 word2vec 算法 建模环节中最重要的一步是特征提取,在自然语言处理中也不例外。 在自然语言处理中,最核心的一个问题是,如何把一个句子用数字的形式有效地表达出来? 如果能够完成这一步,句子...
内容概要:本文提出了一种计及N-k安全约束的含光热电站电力系统优化调度模型,旨在提升电力系统在极端故障条件下的安全性和稳定性。模型充考虑了光热电站的出力特性及其在能量调度中的灵活性,结合N-k安全准则对系统可能发生的多重故障进行校验,确保调度方案在各种潜在故障场景下仍能满足安全运行要求。研究基于IEEE14节点和IEEE118节点标准系统进行仿真验证,利用Matlab编程实现了优化调度算法,评估了模型在不同系统规模下的有效性与适用性。该模型对于促进可再生能源高比例接入背景下的电力系统安全经济运行具有重要意义。; 适合人群:具备电力系统析、优化调度基础知识的科研人员及工程技术人员,尤其适合从事新能源并网、电力系统安全析、智能优化算法应用等相关领域研究的研究生与高校教师。; 使用场景及目标:①用于研究含高比例可再生能源的电力系统在多重故障(N-k)场景下的安全约束调度问题;②为光热电站等具备储能能力的新能源电站参与系统调度提供建模参考;③支撑电力系统安全评估与预防控制策略的设计与仿真验证。; 阅读建议:建议读者结合Matlab代码深入理解模型构建过程,重点关注N-k安全约束的数学表达与求解技巧,并可通过调整系统参数或引入其他不确定性因素(如风电、光伏波动性)进一步拓展模型应用场景。

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧