我有一個項目和兩個單位和主程序 第一單元在這裏它的主要問題是這個類的構造函數:這段代碼中的構造函數不好。有人可以幫助我管理這些代碼嗎?
unit dl_tPA_MailJournal;
interface
uses
Windows,
Generics.Collections,
SysUtils,
uInterfaces;
type
TtPA_MailJournal = class(TInterfacedObject ,ITable)
public
function GetanQId: integer;
procedure SetanQId(const Value: integer);
function GetadDate: TDateTime;
procedure SetadDate(const Value: TDateTime);
function toList: TList<string>;
constructor Create(aId : Integer; aDate : TDateTime);
private
property anQId : integer read GetanQId write SetanQId;
property adDate : TDateTime read GetadDate write SetadDate;
end;
implementation
{ TtPA_MailJournal }
constructor TtPA_MailJournal.Create(aId : Integer; aDate : TDateTime);
begin
SetanQId(aId);
SetadDate(aDate);
end;
function TtPA_MailJournal.GetadDate: TDateTime;
begin
Result := adDate;
end;
function TtPA_MailJournal.GetanQId: integer;
begin
Result := anQId ;
end;
procedure TtPA_MailJournal.SetadDate(const Value: TDateTime);
begin
adDate := Value;
end;
procedure TtPA_MailJournal.SetanQId(const Value: integer);
begin
anQId := Value;
end;
function TtPA_MailJournal.toList: TList<string>;
var aListTable: TList<TtPA_MailJournal>;
var aTable: TtPA_MailJournal;
var aListString: TList<String>;
begin
aTable.Create(1,now);
aListTable.Add(aTable);
aTable.Create(2,now);
aListTable.Add(aTable);
aListString.Add(aListTable.ToString);
Result := aListString;
end;
end.
第二單元是沒有多少在這裏看到
接口unit uInterfaces;
interface
uses Generics.Collections;
type
ITable = Interface
['{6CED8DCE-9CC7-491F-8D93-996BE8E4D388}']
function toList: TList<String>;
End;
implementation
end.
的主類,在這裏我想StringList的仿製藥,並放入格:
unit MainUnit;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
dl_tPA_MailJournal,uInterfaces, Vcl.StdCtrls,
Generics.Collections, Vcl.Grids;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var MyTable: TtPA_MailJournal;
MyList: TList<String>;
AStringList: TStrings;
StrDate : string;
Fmt: TFormatSettings;
begin
//fmt.ShortDateFormat:='dd/mm/yyyy';
// fmt.DateSeparator :='/';
// StrDate:='23/02/2011' ;
MyTable := TtPA_MailJournal.Create(1,now); //strtodate(strdate,fmt)
MyList := MyTable.toList;
AStringList := TStringList.Create;
AStringList.Add(MyList.ToString);
StringGrid1.Cols[1].Add(MyList.ToString);
FreeAndNil(MyTable);
end;
end.
當我點擊程序崩潰的按鈕。當我評論這兩個 行的構造函數SetanQId(aId);和SetadDate(aDate);這是好的 我做錯了什麼可以告訴我如何管理這個代碼,以顯示在網格請。
您設定自己的二傳手屬性值依次調用一遍傳,等我 – TLama
其更改爲援助:所以你的構造應進行編碼=援助; aDate:= aDate;現在我得到訪問衝突錯誤 – ververicka
編程不是試錯過程。你嘗試過的改變基本上是一樣的。它會爲該屬性設置一個值,該屬性將調用setter方法,在該方法中,您將爲將調用setter的屬性設置一個值...等等。你已經結束了無限循環。我不知道這些屬性的目的是什麼,但是根據你的getter和setter做的事情,我會說你想要[將讀寫私人字段的屬性](http://pastebin.com/Rjve1Knp)。 – TLama