注册 登录
编程论坛 Delphi论坛

保存为.res文件

aaron52088 发布于 2007-04-12 11:55, 1888 次点击
要保存为.res文件,
当时老师给的笔记是:write compurmentresfile('xxx.res',form1);
为什么我写了提示这句错误,
麻烦大家帮我改改。
网络上找不到这句的类似句啊

谢谢拉
13 回复
#2
sgliuxiu2007-04-12 12:37
这个是系统本身有的,你要保存这个文件吗?一个工程就有一个这样的文件,同你的工程名一样.
只有本站会员才能查看附件,请 登录

#3
aaron520882007-04-12 14:21
谢谢先

我是要把这个语句写在一个button里面,单击就可以保存为.res的文件。
write语句没有写错吗?
#4
sgliuxiu2007-04-12 16:08
错是肯定错了,全世界都找不到这个.
不过怎么写,偶也不知道呢.
#5
nongen2007-04-13 09:45
找borland要代码吧。
#6
aaron520882007-04-13 10:13
呵呵,是错了。
应该是writecomponentresfile('**.res',form1);
问题解决了
谢谢大家
#7
aaron520882007-04-13 10:24

保存是可以了,不过在打开form的时候判断.res是否需要读入的时候出错了。
程序如下:
在formcrate中的:
if FileExists('carku.res') then
begin
for j:=self.ComponentCount-1 downto 0 do //152
self.Components[j].Free;
readcomponentresfile('carku.res',MainForm);
for j:=0 to MainForm.ComponentCount-1 do //155
if MainForm.Components[j] is TPan then
a[strtoint(TPan(MainForm.Components[j]).Caption)]:=TPan(MainForm.Components[j]);
end;
其中TPan是我自定义的一个panel,是用TPANEL做的。
错误提示是:
[Warning] Unit1.pas(152): For loop control variable must be simple local variable
[Warning] Unit1.pas(155): For loop control variable must be simple local variable

[upload]=bmpUploadFile/2007-4/200741310212010735.bmp[/upload]
大家再帮帮忙,谢谢

#8
nongen2007-04-13 21:04
for j:=self.ComponentCount-1 downto 0 do //152
self.Components[j].Free;
readcomponentresfile('carku.res',MainForm);
for j:=0 to MainForm.ComponentCount-1 do //155
if MainForm.Components[j] is TPan then
a[strtoint(TPan(MainForm.Components[j]).Caption)]:=TPan(MainForm.Components[j]);
在循环嵌套里,不能用同一个变量,
第一个用from j:=
那嵌进的那个就不能用form j:=
#9
aaron520882007-04-16 09:59

谢谢楼上的help.
运行是没有错误了,
但是当我保存了现有的MainForm为.res以后,再次运行程序的时候会出现

只有本站会员才能查看附件,请 登录

这个错误的,
其中TPan是我自定义的控件,TPanel改的.
再帮我看看问题吧.谢谢
#10
nongen2007-04-16 20:16

具体情况。。。

#11
aaron520882007-04-17 15:30

谢谢帮忙先。
楼上说的具体情况是……?
我把程序具体贴出来吧,先是在退出的button中:

procedure TMainForm.Button1Click(Sender: TObject);
begin
writecomponentresfile('carku.res',MainForm);
close;
end;

然后再formcrate中:

procedure TMainForm.FormCreate(Sender: TObject);
var j,k:integer;
begin
//判断是否已存在设置的车库.res文件
if FileExists('carku.res') then
begin
for j:=self.ComponentCount-1 downto 0 do begin self.Components[j].Free; end;
readcomponentresfile('carku.res',MainForm);
for k:=0 to MainForm.ComponentCount-1 do begin
if MainForm.Components[k] is TPan then a[strtoint(TPan(MainForm.Components[k]).Caption)]:=TPan(MainForm.Components[k]);
end;

end;
end;

还有在panelmousedown中:
procedure TMainForm.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if t=true then
begin
i:=i+1;
a[i]:=tPan.Create(self);
a[i].Parent:=self;
a[i].Enabled:=true;
a[i].Visible:=true;
a[i].Left:=x+450;
a[i].Top :=y;
a[i].Width:=25;
a[i].Color:=clGreen;
a[i].Caption:=inttostr(i);
a[i].OnMouseDown:= PanelMouseDown;
a[i].OnMouseMove:= PanelMouseMove;
a[i].OnMouseUp:= PanelMouseUp;
label1.Caption:=inttostr(i);
edit1.Text:=inttostr(i);
end;
end;

只有本站会员才能查看附件,请 登录

如图中大的PANEL是原本DELPHI自带的TPANEL,小的绿色的PANEL是我自定义的TPAN。
保存那段保存,就是希望可以把这些TPAN位置什么的都保存下来,下次重新启动应用程序的时候可以出现上次设置时候的布局。

#12
nongen2007-04-18 08:56
你在哪行出错?
#13
aaron520882007-04-21 20:11
问题解决了,程序都没有出错。
错误是由于我运行时,FORM中并没有TPAN这个PAN模块,
它是通过单击产生的。
只要拖一个TPAN到FORM中然后再设置为不可见的,就不会出现这个问题了。
谢谢大家,如果大家以后也遇到相应的错误就可以照做试试看咯
#14
sgliuxiu2007-04-21 21:51
谢谢楼主将自己的经验拿出来分享
1