有两个窗体,分别为一个串口接收的界面,但是就在我设置INI文件来控制传输的协议的参数时,却是怎么的也编译不过去:请问怎样的处理这样两个窗体时数据取值和建值时的冲突问题,同时还有一个是当我在程序运行时,设置窗体中值变时,在FORM1的DCB数据也能同时变,不知怎样的实现,现在我的程序只能重新启动,运行Form1oncreat()后DCB数据才能变。Form1(主窗体)INI部份代码如下:procedure TForm1.FormCreate(Sender: TObject);
var
dcb:tdcb;
error:boolean;
commname:string;
filename:string;
begin
form2.edit1.Text:=inttostr(myinifile.ReadInteger('DCBDATa','baudrate',0));//在这里就产生了冲突,可能为为窗体建立时不能同时查找数据
form2.combobox1.Text:=inttostr(myinifile.ReadInteger('DCBDATa','data',0));
form2.combobox2.Text:=inttostr(myinifile.ReadInteger('DCBDATa','stopbit',0));
form2.combobox3.Text:=inttostr(myinifile.ReadInteger('DCBDATa','psrity',0));
hrecv:=createfile(pchar('com2'),generic_read,0,nil,open_existing,file_flag_overlapped,0);
if hrecv=invalid_handle_value then
raise exception.Create('打开COM2错误');
error:=setcommmask(hrecv,ev_rxchar);
if (not error) then
raise exception.Create('setmmmask错误');
setupcomm(hrecv,1024,1024);
getcommstate(hrecv,dcb);
dcb.BaudRate:=strtoint(form2.edit1.text);
dcb.ByteSize:=strtoint(form2.combobox1.text);
dcb.StopBits:=strtoint(form2.combobox2.text);
dcb.Parity:=strtoint(form2.combobox3.text);
error:=setcommstate(hrecv,dcb);
if (not error) then
raise exception.Create('设置COM2错误');
statusbar1.Panels[0].Text:='COM2已打开';
end;Form2(设置窗体)INI部份代码如下:procedure TForm2.Button1Click(Sender: TObject);
begin
myinifile:=tinifile.Create(extractfilepath(paramstr(0))+'dkongsort.ini');
myinifile.WriteInteger('DCBDATa','baudrate',strtoint(edit1.Text));
myinifile.WriteInteger('DCBDATa','data',strtoint(combobox1.Text));
myinifile.WriteInteger('DCBDATa','stopbit',strtoint(combobox2.Text));
myinifile.WriteInteger('DCBDATa','parity',strtoint(combobox3.Text));
myinifile.Free;
close;
end;
var
dcb:tdcb;
error:boolean;
commname:string;
filename:string;
begin
form2.edit1.Text:=inttostr(myinifile.ReadInteger('DCBDATa','baudrate',0));//在这里就产生了冲突,可能为为窗体建立时不能同时查找数据
form2.combobox1.Text:=inttostr(myinifile.ReadInteger('DCBDATa','data',0));
form2.combobox2.Text:=inttostr(myinifile.ReadInteger('DCBDATa','stopbit',0));
form2.combobox3.Text:=inttostr(myinifile.ReadInteger('DCBDATa','psrity',0));
hrecv:=createfile(pchar('com2'),generic_read,0,nil,open_existing,file_flag_overlapped,0);
if hrecv=invalid_handle_value then
raise exception.Create('打开COM2错误');
error:=setcommmask(hrecv,ev_rxchar);
if (not error) then
raise exception.Create('setmmmask错误');
setupcomm(hrecv,1024,1024);
getcommstate(hrecv,dcb);
dcb.BaudRate:=strtoint(form2.edit1.text);
dcb.ByteSize:=strtoint(form2.combobox1.text);
dcb.StopBits:=strtoint(form2.combobox2.text);
dcb.Parity:=strtoint(form2.combobox3.text);
error:=setcommstate(hrecv,dcb);
if (not error) then
raise exception.Create('设置COM2错误');
statusbar1.Panels[0].Text:='COM2已打开';
end;Form2(设置窗体)INI部份代码如下:procedure TForm2.Button1Click(Sender: TObject);
begin
myinifile:=tinifile.Create(extractfilepath(paramstr(0))+'dkongsort.ini');
myinifile.WriteInteger('DCBDATa','baudrate',strtoint(edit1.Text));
myinifile.WriteInteger('DCBDATa','data',strtoint(combobox1.Text));
myinifile.WriteInteger('DCBDATa','stopbit',strtoint(combobox2.Text));
myinifile.WriteInteger('DCBDATa','parity',strtoint(combobox3.Text));
myinifile.Free;
close;
end;
implementation
var
appna,rate:string;
myinifile:tinifile;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
filename:string;
begin
filename:=extractfilepath(application.ExeName) + 'testini.ini';
if not fileexists(filename) then
raise exception.Create('testini文件不存在');
myinifile:=tinifile.Create(filename);
edit1.Text :=myinifile.ReadString('参数配置一','appname','');
spinedit1.Text :=inttostr(myinifile.ReadInteger('参数配置一','appyear',0));
checkbox1.Checked :=myinifile.ReadBool('参数配置一','appbeta',false);
edit2.Text:=inttostr(myinifile.ReadInteger('参数配置一','rate',0));
rate:=myinifile.ReadString('参数配置一','rate','');
appna:=myinifile.ReadString('参数配置一','appname','');
label1.Caption:=rate;
label6.Caption:=appna;
end;
procedure tform1.formdestroy(sender:tobject);
begin
myinifile.Free ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
myinifile.WriteString('参数配置一','appname',edit1.Text);
myinifile.WriteInteger('参数配置一','appyear',strtoint(spinedit1.Text));
myinifile.WriteBool('参数配置一','appbeta',checkbox1.Checked );
myinifile.WriteInteger('参数配置一','rate',strtoint(edit2.Text));
self.FormCreate(nil);
end;