如果是string的话可用function ...(var L:TStringList):...
解决方案 »
- DataSetProvider.ApplyUpdates 怎么取得更新出错的数据?
- 关于dbgrid字段排序问题
- 讨论:当前不同规模企业信息管理系统开发架构主要分为哪几种?
- 在DELPHI中怎样备份和恢复Access数据库
- 在ActiveForm 中 Project 菜单下的 Web Deployment Options...
- 如何做自动收缩的窗体(像QQ)?
- 请教报表中QRDBText的显示问题。
- 请问连接adoconnection的问题?
- 我打算在网络上发布一个程序, 但不知道怎样保护自己的程序,请问各位有什么更好的办法
- 请求解决:已动态创建了GroupBox,Memo,CheckBox如何将CheckBox名添加对应的Memo
- 怎样在 Delphi 中建立一个新的数据库
- 有无类似TRichEdit,但是其文字有多种颜色的控件?
Var
CDbRecordSet : _RecordSet;
dwRow, dwCol : integer;
begin
Result := NULL;
CDbRecordSet := CoRecordSet.Create; If CDbRecordSet <> Nil Then
Try
Try
CDbRecordSet.Open(strSQL, FConnection, adOpenStatic, adLockReadOnly, adCmdText);
Except on E : Exception do
SysLog(hLog, LOG_ERR, E.Message);
End; If CDbRecordSet.State = adStateOpen Then
Try
If (CDbRecordSet.RecordCount > 0) then
Begin
{建立可变数组}
Result := VarArrayCreate([0, CDbRecordSet.RecordCount - 1, 0,
CDbRecordSet.Fields.Count - 1], varVariant);
If VarIsArray(Result) Then
Begin
{*** 复制结果值 ***}
CDbRecordSet.MoveFirst;
For dwRow := 0 to CDbRecordSet.RecordCount - 1 do
Begin
For dwCol := 0 to CDbRecordSet.Fields.Count - 1 do
Result[dwRow, dwCol] := CDbRecordSet.Fields.Item[dwCol].Value;
CDbRecordSet.MoveNext;
End;
End;
End;
Finally
CDbRecordSet.Close;
End;
Finally
CDbRecordSet := Nil;
End;
end;
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TMyArray = array[1..10] of Integer;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function GetMyArray: TMyArray;
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
i: integer;
a: TAyyay;
begin
for i := 1 to 10 do
a[i] := i;
Result := a;
s: string;
b: TMyArray;
begin
b := GetMyArray;
s := '';
for i := 1 to 10 do
s := s + IntToStr(b[i]) + ',';
Caption := s;
end;function TForm1.GetMyArray: TMyArray;
var
i: integer;
a: TMyArray;
begin
for i := 1 to 10 do
a[i] := i;
Result := a;
end;end.
size : integer; //返回数组的长度
p : pointer //返回的动态数组
end; function getArray() : TrtArr;
var arrNo : array of integer;
i : integer;
rt : TrtArr;
begin
SetLength(arrNO, 10);//定义动态数组长度并赋值
for i:=0 to 9 do
arrNo[i] := i;
rt.p:=AllocMem(SizeOf(arrNo));
rt.size := SizeOf(arrNo));
rt.p := Copy(arrNo);//将数组内容拷贝到指针
result := rt; //返回
end;接收:
var arrNo : array of integer;
arr : TrtArr;
i,n : integer;
begin
arr := getArray();
arrNo := arr.buffer;
for i:=0 to arr.size-1 do //这里就可对接收到的数组读取了
n := arrNo[i];
end;其实动态数组就是一个指针。
如没问题给分吧,别浪费我打这么多字:)
楼上的朋友的程序在arrNo := arr.buffer出错 ,提示:[Error] Unit1.pas(52): Undeclared identifier: 'buffer'