下面源代码编译出错,应如何修改。
谁解决的分数全送。谢谢!unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
THtmlType=(BCEdit,BCPassEdit,BCListBox);
TMemberField=class(TPersistent)
public
CnName:string;
EnName:string;
JapName:string;
HtmlType:THtmlType; procedure Assign(Source: TPersistent);override;
constructor Create();
destructor Destroy();override;
end; TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemberList=class(TPersistent)
private
FMember:array of TMemberField;
function GetMember(index: integer): TMemberField;
function GetMemberCount: integer;
procedure SetMember(index: integer; const Value: TMemberField); public property Member[index:integer]:TMemberField read GetMember write SetMember;
property MemberCount:integer read GetMemberCount;
procedure WriteMember();
procedure AddMemer(const AMember:TMemberField);
constructor Create();
destructor Destroy();override;
end;
var
Form1: TForm1;
MemberList:TMemberList;implementation{$R *.dfm}procedure TMemberField.Assign(Source: TPersistent);
begin
if (Source is TMemberField) then
begin
CnName:=(Source as TMemberField).CnName;
EnName:=(Source as TMemberField).EnName;
JapName:=(Source as TMemberField).JapName;
HtmlType:=(Source as TMemberField).HtmlType; end;
end;constructor TMemberField.Create();
begin
inherited Create;
CnName:='';
EnName:='';
JapName:='';
end;
destructor TMemberField.Destroy();
begin
inherited Destroy;
end;
function TMemberList.GetMember(index: integer): TMemberField;
begin
if (Index>-1) and (Index<MemberCount) then
Result:=FMember[Index];
end;function TMemberList.GetMemberCount: integer;
begin
Result:=Length(FMember);
end;procedure TMemberList.SetMember(index: integer; const Value: TMemberField);
begin
if (Index>-1) and (Index<MemberCount) then
FMember[Index]:=Value;
end;constructor TMemberList.Create();
begin
inherited Create;
SetLength(FMember,0);end;destructor TMemberList.Destroy();
var
i:integer;
begin
for i:=0 to MemberCount-1 do
Member[i].Free;
SetLength(FMember,0);
inherited Destroy;
end;procedure TMemberList.WriteMember();
var
i:integer;
LstItem:TListItem;
begin
with Form1 do
begin
For i:=0 to Membercount-1 do
begin
LstItem:=ListView1.Items.Add;
LstItem.Caption :=Member[i].CnName;
LstItem.SubItems.Add(MemBer[i].EnName);
LstItem.SubItems.Add(Member[i].JapName);
Case Member[i].HtmlType of
BcEdit:LstItem.SubItems.Add('单行文本框 (EDIT)');
BCPASSEdit:LstItem.SubItems.Add('密码框 (PASSEDIT)');
BCListBox:LstItem.SubItems.Add('列表框 (LISTBOX)');
end;
end;
end;
end;procedure TMemberList.AddMemer(const AMember:TMemberField);
begin
SetLength(FMember,Membercount+1);
Member[Membercount-1]:=TMemberField.Create;
Member[membercount-1].Assign(AMember);
end;procedure TForm1.FormShow(Sender: TObject);
begin
MemberList.WriteMember();
end;procedure TForm1.Button1Click(Sender: TObject);
var
AMemberField:TMemberField;
begin
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
end;end.
谁解决的分数全送。谢谢!unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
THtmlType=(BCEdit,BCPassEdit,BCListBox);
TMemberField=class(TPersistent)
public
CnName:string;
EnName:string;
JapName:string;
HtmlType:THtmlType; procedure Assign(Source: TPersistent);override;
constructor Create();
destructor Destroy();override;
end; TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemberList=class(TPersistent)
private
FMember:array of TMemberField;
function GetMember(index: integer): TMemberField;
function GetMemberCount: integer;
procedure SetMember(index: integer; const Value: TMemberField); public property Member[index:integer]:TMemberField read GetMember write SetMember;
property MemberCount:integer read GetMemberCount;
procedure WriteMember();
procedure AddMemer(const AMember:TMemberField);
constructor Create();
destructor Destroy();override;
end;
var
Form1: TForm1;
MemberList:TMemberList;implementation{$R *.dfm}procedure TMemberField.Assign(Source: TPersistent);
begin
if (Source is TMemberField) then
begin
CnName:=(Source as TMemberField).CnName;
EnName:=(Source as TMemberField).EnName;
JapName:=(Source as TMemberField).JapName;
HtmlType:=(Source as TMemberField).HtmlType; end;
end;constructor TMemberField.Create();
begin
inherited Create;
CnName:='';
EnName:='';
JapName:='';
end;
destructor TMemberField.Destroy();
begin
inherited Destroy;
end;
function TMemberList.GetMember(index: integer): TMemberField;
begin
if (Index>-1) and (Index<MemberCount) then
Result:=FMember[Index];
end;function TMemberList.GetMemberCount: integer;
begin
Result:=Length(FMember);
end;procedure TMemberList.SetMember(index: integer; const Value: TMemberField);
begin
if (Index>-1) and (Index<MemberCount) then
FMember[Index]:=Value;
end;constructor TMemberList.Create();
begin
inherited Create;
SetLength(FMember,0);end;destructor TMemberList.Destroy();
var
i:integer;
begin
for i:=0 to MemberCount-1 do
Member[i].Free;
SetLength(FMember,0);
inherited Destroy;
end;procedure TMemberList.WriteMember();
var
i:integer;
LstItem:TListItem;
begin
with Form1 do
begin
For i:=0 to Membercount-1 do
begin
LstItem:=ListView1.Items.Add;
LstItem.Caption :=Member[i].CnName;
LstItem.SubItems.Add(MemBer[i].EnName);
LstItem.SubItems.Add(Member[i].JapName);
Case Member[i].HtmlType of
BcEdit:LstItem.SubItems.Add('单行文本框 (EDIT)');
BCPASSEdit:LstItem.SubItems.Add('密码框 (PASSEDIT)');
BCListBox:LstItem.SubItems.Add('列表框 (LISTBOX)');
end;
end;
end;
end;procedure TMemberList.AddMemer(const AMember:TMemberField);
begin
SetLength(FMember,Membercount+1);
Member[Membercount-1]:=TMemberField.Create;
Member[membercount-1].Assign(AMember);
end;procedure TForm1.FormShow(Sender: TObject);
begin
MemberList.WriteMember();
end;procedure TForm1.Button1Click(Sender: TObject);
var
AMemberField:TMemberField;
begin
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
end;end.
var
AMemberField:TMemberField;
begin
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
AddMember(AMemberField);
end;在线等待
AMemberField:TMemberField;
这里,你定义了一个AMemberField:TMemberField;对象,但是没有创建它就还是引用了begin
AMemberField:=TMemberField.create(self);//加上这句就可以了
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
出错信息为 Access violation at address 0045CB48 in module"project1.exe".Read of address 00000004.
谢谢各位指教。
出错信息为 Access violation at address 0045CB48 in module"project1.exe".Read of address 00000004.
快帮忙啊
procedure TForm1.FormShow(Sender: TObject);
begin
//MemberList := TMemberList.Create;
MemberList.WriteMember();
end;2.AMemberField未创建就引用它的属性
procedure TForm1.Button1Click(Sender: TObject);
var
AMemberField:TMemberField;
begin
//AMemberField := TMemberField.Create;
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
end;3. MemberList和AMemberField都没有释放例程
还是出错。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
THtmlType=(BCEdit,BCPassEdit,BCListBox);
TMemberField=class(TPersistent)
public
CnName:string;
EnName:string;
JapName:string;
HtmlType:THtmlType; procedure Assign(Source: TPersistent);override;
constructor Create();
destructor Destroy();override;
end; TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemberList=class(TPersistent)
private
FMember:array of TMemberField;
function GetMember(index: integer): TMemberField;
function GetMemberCount: integer;
procedure SetMember(index: integer; const Value: TMemberField); public property Member[index:integer]:TMemberField read GetMember write SetMember;
property MemberCount:integer read GetMemberCount;
procedure WriteMember();
procedure AddMemer(const AMember:TMemberField);
constructor Create();
destructor Destroy();override;
end;
var
Form1: TForm1;
MemberList:TMemberList;implementation{$R *.dfm}procedure TMemberField.Assign(Source: TPersistent);
begin
if (Source is TMemberField) then
begin
CnName:=(Source as TMemberField).CnName;
EnName:=(Source as TMemberField).EnName;
JapName:=(Source as TMemberField).JapName;
HtmlType:=(Source as TMemberField).HtmlType; end;
end;constructor TMemberField.Create();
begin
inherited Create;
CnName:='';
EnName:='';
JapName:='';
end;
destructor TMemberField.Destroy();
begin
inherited Destroy;
end;
function TMemberList.GetMember(index: integer): TMemberField;
begin
if (Index>-1) and (Index<MemberCount) then
Result:=FMember[Index];
end;function TMemberList.GetMemberCount: integer;
begin
Result:=Length(FMember);
end;procedure TMemberList.SetMember(index: integer; const Value: TMemberField);
begin
if (Index>-1) and (Index<MemberCount) then
FMember[Index]:=Value;
end;constructor TMemberList.Create();
begin
inherited Create;
SetLength(FMember,0);
MemberList:=TMemberList.Create ;end;destructor TMemberList.Destroy();
var
i:integer;
begin
for i:=0 to MemberCount-1 do
Member[i].Free;
SetLength(FMember,0);
MemberList.Destroy;
inherited Destroy;
end;procedure TMemberList.WriteMember();
var
i:integer;
LstItem:TListItem;
begin
if MemberCount<1 then Exit;
with Form1 do
begin
For i:=0 to Membercount-1 do
begin
LstItem:=ListView1.Items.Add;
LstItem.Caption :=Member[i].CnName;
LstItem.SubItems.Add(MemBer[i].EnName);
LstItem.SubItems.Add(Member[i].JapName);
Case Member[i].HtmlType of
BcEdit:LstItem.SubItems.Add('单行文本框 (EDIT)');
BCPASSEdit:LstItem.SubItems.Add('密码框 (PASSEDIT)');
BCListBox:LstItem.SubItems.Add('列表框 (LISTBOX)');
end;
end;
end;
end;procedure TMemberList.AddMemer(const AMember:TMemberField);
begin
SetLength(FMember,Membercount+1);
Member[Membercount-1]:=TMemberField.Create;
Member[membercount-1].Assign(AMember);
end;procedure TForm1.FormShow(Sender: TObject);
begin
MemberList.WriteMember();
end;procedure TForm1.Button1Click(Sender: TObject);
var
AMemberField:TMemberField;
begin
AMemberField:=TMemberField.Create ;
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
MemberList.AddMemer(AMemberField);
AMemberField.Destroy;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
THtmlType=(BCEdit,BCPassEdit,BCListBox);//HTML编辑框类型
TMemberField=class(TPersistent)//字段类型
public
CnName:string;
EnName:string;
JapName:string;
HtmlType:THtmlType; procedure Assign(Source: TPersistent);override;
constructor Create();
destructor Destroy();override;
end; TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemberList=class(TPersistent)
private
FMember:array of TMemberField;
function GetMember(index: integer): TMemberField;
function GetMemberCount: integer;
procedure SetMember(index: integer; const Value: TMemberField); public property Member[index:integer]:TMemberField read GetMember write SetMember;
property MemberCount:integer read GetMemberCount; procedure WriteMember();
procedure AddMemer(const AMember:TMemberField); constructor Create();
destructor Destroy();override;
end;
var
Form1: TForm1;
MemberList:TMemberList;implementation{$R *.dfm}procedure TMemberField.Assign(Source: TPersistent);
begin
if (Source is TMemberField) then
begin
CnName:=(Source as TMemberField).CnName;
EnName:=(Source as TMemberField).EnName;
JapName:=(Source as TMemberField).JapName;
HtmlType:=(Source as TMemberField).HtmlType; end;
end;constructor TMemberField.Create();
begin
inherited Create;
CnName:='';
EnName:='';
JapName:='';
end;
destructor TMemberField.Destroy();
begin
inherited Destroy;
end;
function TMemberList.GetMember(index: integer): TMemberField;
begin
if (Index>-1) and (Index<MemberCount) then
Result:=FMember[Index];
end;function TMemberList.GetMemberCount: integer;
begin
Result:=Length(FMember);
end;procedure TMemberList.SetMember(index: integer; const Value: TMemberField);
begin
if (Index>-1) and (Index<MemberCount) then
FMember[Index]:=Value;
end;constructor TMemberList.Create();
begin
inherited Create;
SetLength(FMember,0);
MemberList:=TMemberList.Create ;end;destructor TMemberList.Destroy();
var
i:integer;
begin
for i:=0 to MemberCount-1 do
Member[i].Free;
SetLength(FMember,0);
MemberList.Destroy;
inherited Destroy;
end;procedure TMemberList.WriteMember();
var
i:integer;
LstItem:TListItem;
begin
if MemberCount<1 then Exit;
with Form1 do
begin
For i:=0 to Membercount-1 do
begin
LstItem:=ListView1.Items.Add;
LstItem.Caption :=Member[i].CnName;
LstItem.SubItems.Add(MemBer[i].EnName);
LstItem.SubItems.Add(Member[i].JapName);
Case Member[i].HtmlType of
BcEdit:LstItem.SubItems.Add('单行文本框 (EDIT)');
BCPASSEdit:LstItem.SubItems.Add('密码框 (PASSEDIT)');
BCListBox:LstItem.SubItems.Add('列表框 (LISTBOX)');
end;
end;
end;
end;procedure TMemberList.AddMemer(const AMember:TMemberField);
begin
SetLength(FMember,Membercount+1);
Member[Membercount-1]:=TMemberField.Create;
Member[membercount-1].Assign(AMember);
end;procedure TForm1.FormShow(Sender: TObject);
begin
MemberList.WriteMember();
end;procedure TForm1.Button1Click(Sender: TObject);
var
AMemberField:TMemberField;
begin
AMemberField:=TMemberField.Create ;
AMemberField.CnName:=Edit1.Text;
AMemberField.EnName:=Edit2.Text;
AMemberField.JapName:=Edit3.Text;
MemberList.AddMemer(AMemberField);
AMemberField.Destroy;
end;end.大家快来帮帮忙啊。