record操作问题 ( 积分: 200 )

  • 主题发起人 主题发起人 hxl126
  • 开始时间 开始时间
H

hxl126

Unregistered / Unconfirmed
GUEST, unregistred user!
有两个unit,test1中定义一个record,在test2中引用这个record,而test1中的record的定义可能会改变,请问test2中能不能有办法计算出record大小,以及record中定义的字段名和数据类型,以及字段数量。
 
不会吧 对你应该不难吧
 
多半是思路的问题,也许根本不需要这样,取大小倒是sizeof就可以了,其他的字段名类型什么的,别说是你的数据库设置想做数据字典吧[:D]
 
对了,是跟数据库表格字段相关联,楼上的厉害一眼就看出来,能否提供一些建议??
 
你想实现什么,说清楚了大家才好帮你

我倒有个变通的方法,可以考虑一下,
TFieldDataType = (fdtString, fdtDouble, fdtDateTime……);
TDataType = record;
FiledName: string;
Fieldtype : TFieldDataType;
end;
然后用一个列表来保存,
var
FieldList: TList;
DataType: TDAtaType;

unit Unit1;

interface

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

type
TFieldDataType = (fdtString, fdtDouble, fdtDateTime, fdtBoolean);
PDataType = ^TDataType;
TDataType = record
FiledName: string;
Fieldtype : TFieldDataType;
end;


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

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var

DataType: PDAtaType;
begin
FieldList := TList.Create;
GetMem(DataType,sizeof(TDataType));
DataType^.FiledName := 'Name';
DataType^.Fieldtype := fdtString;
FieldList.Add(DataType);

GetMem(DataType,sizeof(TDataType));
DataType^.FiledName := 'Sex';
DataType^.Fieldtype := fdtBoolean;
FieldList.Add(DataType);
end;

procedure TForm1.FormDestroy(Sender: TObject);
var
i : Integer;
DataType: PDAtaType;
begin
for i := FieldList.Count - 1 downto 0 do begin
DataType := PDataType(FieldList.Items);
FreeMem(DataType)
//, sizeof(Tdatatype));
end;
FieldList.Clear;
end;

end.

FieldList := TList.Create;
GetMem(DataType:
 
我的想法是:
把一个表格的所有字段,用一个record类型表示,然后定义一个类,负责对这个表格进行所有操作。操作需要的信息由这个record类型变量传入。如果表格需要增加字段,想使这个类不需要改动任何代码,就能够进行正常操作。
 
TField, TFieldDef这些类不正是完成这些工作吗?
 
后退
顶部