thanks you (300分)

  • 主题发起人 主题发起人 匪匪
  • 开始时间 开始时间
那就谢了
不要再发了
 
意思是?你是打算TKS谁啊?
 
thanks for who?
 
多人接受答案了。
 
谢一个好人.呵呵.
 
好恶心
也不说清楚
 
匪匪没说清楚,不要攻击人家啊
是因为我给出了下面这段程序的原因
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edt_Values: TEdit;
LB_Values: TListBox;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
PSz=^Sz;
//这个地方定义一个指针数组型类型
Sz=array of integer;
//本来不需要,但你说那个dll是这样定义的,那我也就定义一个吧
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure GetValue(const inputdata:string;
var SzValue:PSz;const symbol:char='|');
//注意这个var
//因为你需要在过程中分配空间所以这是必需的
//如果你的dll中未这样分配的话,可以去掉var
//但你必须在调用这个过程前New出空间

var temp :string;
a_Stringlist :TStrings;
i,j,m:integer;
begin
temp:=inputdata;
if temp[length(temp)]<>symbol then
temp:=temp+symbol;
//给串尾加一分隔标记
a_Stringlist:=TStringList.Create;
try
i:=pos(symbol, temp);
while i<>0do
begin
a_StringList.add(copy(temp, 1, i - 1));
temp := copy(temp, i + 1, length(temp) - i);
i:=pos(symbol, temp);
end;
New(SzValue);
//注意这个地方要为PSz型的参数分配一块内存,虽然大小未知
j:=a_stringlist.Count;
setlength(SzValue^,j);
//重新规划数组空间的大小
for m:=low(SzValue^) to high(SzValue^)do
begin
(SzValue)^[m]:=StrToInt(a_stringlist.Strings[m]);
//为数组赋值
end;
finally
a_stringlist.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
a_StringList:TStrings;
OutSz:PSz;
i:integer;
begin
GetValue(Edt_Values.Text,OutSz);
a_StringList:=TStringList.Create;
Try
if VarIsArray(OutSz^) then
//此处判断是不是数组类型
begin
for i:=Low(OutSz^) to High(OutSz^)do
a_StringList.Add(IntToStr(OutSz^));
LB_Values.Items.Assign(a_StringList);
end;
finally
a_StringList.Free;
end;
end;

end.
 
52free
你怎么什么都会
 
后退
顶部