13.10.2012, 09:41
|
Прохожий
|
|
Регистрация: 13.10.2012
Сообщения: 3
Репутация: 10
|
|
Согласованное описание системы классов
Попытался построить систему классов. Классы TFieldSpec и TTableSpec перекрестно ссылаются друг на друга через объектные свойства.
Код:
unit Objects;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
type
TDataTypeID = (DataTypeId_String, DataTypeId_SmallInt, DataTypeId_Integer,
DataTypeId_Word, DataTypeId_Boolean, DataTypeId_Float, DataTypeId_Currency,
DataTypeId_BCD, DataTypeId_FMTBCD, DataTypeId_Date, DataTypeId_Time,
DataTypeId_DateTime, DataTypeId_Timestamp, DataTypeId_Bytes, DataTypeId_Varbytes,
DataTypeId_Blob, DataTypeId_Memo, DataTypeId_Graphic, DataTypeId_FMTMemo,
DataTypeId_FixedChar, DataTypeId_WideString, DataTypeId_LargeInt, DataTypeId_Array,
DataTypeId_FixedWideChar, DataTypeId_WideMemo);
type
TAlignSpec=(AlignSpec_Left, AlignSpec_Right, AlignSpec_Center);
TDomainSpec = class(Tobject)
private
FName : String;
FDescription : String;
FDataTypeId : TDataTypeId;
FLength : Cardinal;
FCharLength : Cardinal;
FPrecision : Cardinal;
FScale : Cardinal;
FWidth : Word;
FAlignSpec : TAlignSpec;
FShowNull : Boolean;
FShowLeadNulls : Boolean;
FThousandsSeparator : Boolean;
public
property Name: String read FName;
property Description: String read FDescription;
property DataTypeId: TDataTypeId read FDataTypeId;
property Length: Cardinal read FLength;
property CharLength: Cardinal read FCharLength;
property Precision: Cardinal read FPrecision;
property Scale: Cardinal read FScale;
property Width: Word read FWidth;
property Align: TAlignSpec read FAlignSpec;
property ShowNull: Boolean read FShowNull;
property ShowLeadNulls: Boolean read FShowLeadNulls;
property ThousandsSeparator: Boolean read FThousandsSeparator;
end;
TFieldSpec=class(Tobject)
private
FPosition : integer;
FName : string;
FDescription : string;
FCan_input : Boolean;
FCan_edit : Boolean;
FShow_in_grid : Boolean;
FShow_in_details : Boolean;
FIs_mean : Boolean;
FAutocalculated : Boolean;
FRequired : Boolean;
FTableSpec : TTableSpec;
FDomainSpec : TDomainSpec;
public
property Position : integer read FPosition;
property Name: String read FName;
property Description: String read FDescription;
property Can_input : Boolean read FCan_input;
property Can_edit : Boolean read FCan_edit;
property Show_in_grid : Boolean read FShow_in_grid;
property Show_in_details : Boolean read FShow_in_details;
property Is_mean : Boolean read FIs_mean;
property Autocalculated : Boolean read FAutocalculated;
property Required : Boolean read FRequired;
property TableSpec : TTableSpec read FTableSpec;
property DomainSpec : TDomainSpec read FDomainSpec;
end;
TTableSpec=class(Tobject)
private
FName : string;
FDescription : string;
FCan_add : Boolean;
FCan_edit : Boolean;
FCan_delete : Boolean;
FFields : array[1..100] of TFieldSpec;
public
property Name: String read FName;
property Description: String read FDescription;
property Can_add : Boolean read FCan_add;
property Can_edit : Boolean read FCan_edit;
property Can_delete : Boolean read FCan_delete;
property Fields : array read FFields;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
При компиляции получил ошибку
Код:
[Error] Objects.pas(66): Undeclared identifier: 'TTableSpec'
[Error] Objects.pas(82): Identifier redeclared: 'TTableSpec'
[Error] Objects.pas(96): Identifier expected but 'ARRAY' found
[Error] Objects.pas(96): READ or WRITE clause expected, but identifier 'FFields' found
[Error] Objects.pas(97): Type expected but 'END' found
[Hint] Objects.pas(89): Private symbol 'FFields' declared but never used
[Fatal Error] FirstTask.dpr(5): Could not compile used unit 'Objects.pas'
Как описать систему классов желательно в одном модуле?
|