我做了一个类,但运行时出现了错误,不知道为什么会这样,大家看一下
type
TValue = class (TObject)
private
FCount: Integer;
FCurrIndex: Integer;
FMemberName: TStringList;
FNumBeginValue: TStringList;
FNumEndValue: TStringList;
FStrValue: TStringList;
FTableName: string;
FValueType: array of TFieldType;
public
constructor Create(TN: String; Cnt: integer; FieldNames :TStringList;
FieldTypes: array of TFieldType);
destructor Destroy; override;
procedure SetValue(Value: String); overload;
procedure SetValue(BeginValue, EndValue: Variant); overload;
property Count: Integer read FCount write FCount;
property CurrIndex: Integer read FCurrIndex write FCurrIndex;
property MemberName: TStringList read FMemberName write FMemberName;
property NumBeginValue: TStringList read FNumBeginValue write
FNumBeginValue;
property NumEndValue: TStringList read FNumEndValue write FNumEndValue;
property StrValue: TStringList read FStrValue write FStrValue;
property TableName: string read FTableName write FTableName;
property ValueType: array of TFieldType read FValueType write FValueType;{第33行}
{[Error] Unit2.pas(33): Identifier expected but 'ARRAY' found}{错误的位置在array后}
{[Error] Unit2.pas(33): Incompatible types: 'dynamic array' and 'TFieldType'}{错误的位置在write后}
{[Error] Unit2.pas(33): Incompatible types: 'dynamic array' and 'TFieldType'}{错误的位置在write后}
end;
implementation{
************************************ TValue ************************************
}
constructor TValue.Create(TN: String; Cnt: integer; FieldNames :TStringList;
FieldTypes: array of TFieldType);
var
I: Integer;
begin
StrValue := TStringList.Create;
NumBeginValue := TStringList.Create;
NumEndValue := TStringList.Create;
MemberName := TStringList.Create;
FTableName := TN;
FCount := Cnt;
SetLength(FValueType, FCount);
for i := 0 to FCount - 1 do
begin
FMemberName.Add(FieldNames.Strings[i]);
FValueType[i] := FieldTypes[i];
FNumBeginValue.Add('');
FNumEndValue.Add('');
FStrValue.Add('');
end;
end;destructor TValue.Destroy;
begin
MemberName.Free;
ValueType := nil;{第67行}
{[Error] Unit2.pas(67): Incompatible types: 'TFieldType' and 'Pointer'}
NumEndValue.Free;
NumBeginValue.Free;
StrValue.Free;
end;procedure TValue.SetValue(Value: String);
begin
FNumBeginValue.Strings[FCurrIndex] := '';
FNumEndValue.Strings[FCurrIndex] := '';
FStrValue.Strings[FCurrIndex] := Value;
end;procedure TValue.SetValue(BeginValue, EndValue: Variant);
begin
FNumBeginValue.Strings[FCurrIndex] := BeginValue;
FNumEndValue.Strings[FCurrIndex] := EndValue;
FStrValue.Strings[FCurrIndex] := '';
end;
不知道为什么会出现这种错误,难道在类中不可以使用动态数组吗?请高人指点一下
type
TValue = class (TObject)
private
FCount: Integer;
FCurrIndex: Integer;
FMemberName: TStringList;
FNumBeginValue: TStringList;
FNumEndValue: TStringList;
FStrValue: TStringList;
FTableName: string;
FValueType: array of TFieldType;
public
constructor Create(TN: String; Cnt: integer; FieldNames :TStringList;
FieldTypes: array of TFieldType);
destructor Destroy; override;
procedure SetValue(Value: String); overload;
procedure SetValue(BeginValue, EndValue: Variant); overload;
property Count: Integer read FCount write FCount;
property CurrIndex: Integer read FCurrIndex write FCurrIndex;
property MemberName: TStringList read FMemberName write FMemberName;
property NumBeginValue: TStringList read FNumBeginValue write
FNumBeginValue;
property NumEndValue: TStringList read FNumEndValue write FNumEndValue;
property StrValue: TStringList read FStrValue write FStrValue;
property TableName: string read FTableName write FTableName;
property ValueType: array of TFieldType read FValueType write FValueType;{第33行}
{[Error] Unit2.pas(33): Identifier expected but 'ARRAY' found}{错误的位置在array后}
{[Error] Unit2.pas(33): Incompatible types: 'dynamic array' and 'TFieldType'}{错误的位置在write后}
{[Error] Unit2.pas(33): Incompatible types: 'dynamic array' and 'TFieldType'}{错误的位置在write后}
end;
implementation{
************************************ TValue ************************************
}
constructor TValue.Create(TN: String; Cnt: integer; FieldNames :TStringList;
FieldTypes: array of TFieldType);
var
I: Integer;
begin
StrValue := TStringList.Create;
NumBeginValue := TStringList.Create;
NumEndValue := TStringList.Create;
MemberName := TStringList.Create;
FTableName := TN;
FCount := Cnt;
SetLength(FValueType, FCount);
for i := 0 to FCount - 1 do
begin
FMemberName.Add(FieldNames.Strings[i]);
FValueType[i] := FieldTypes[i];
FNumBeginValue.Add('');
FNumEndValue.Add('');
FStrValue.Add('');
end;
end;destructor TValue.Destroy;
begin
MemberName.Free;
ValueType := nil;{第67行}
{[Error] Unit2.pas(67): Incompatible types: 'TFieldType' and 'Pointer'}
NumEndValue.Free;
NumBeginValue.Free;
StrValue.Free;
end;procedure TValue.SetValue(Value: String);
begin
FNumBeginValue.Strings[FCurrIndex] := '';
FNumEndValue.Strings[FCurrIndex] := '';
FStrValue.Strings[FCurrIndex] := Value;
end;procedure TValue.SetValue(BeginValue, EndValue: Variant);
begin
FNumBeginValue.Strings[FCurrIndex] := BeginValue;
FNumEndValue.Strings[FCurrIndex] := EndValue;
FStrValue.Strings[FCurrIndex] := '';
end;
不知道为什么会出现这种错误,难道在类中不可以使用动态数组吗?请高人指点一下
应改为SetLength(ValueType,0)