一个exe文件,他在c:/swdt/目录下,在软件中有一个listbox,listbox中有一系列的文件列表比如:
d:/bg/2008.jpg
e:/dvd/i.avi
c:/pro/music/aimo.mp3
双击listbox中这3行中的任意一行,listbox.Items.Strings[integer(listbox.ItemIndex)]取得当前行中的字符创,使用FileExists(listbox.Items.Strings[integer(listbox.ItemIndex)])判断该文件是否存在(这里列表的3个文件都存在),出现如下问题:
双击listbox中第一行判断文件是否存在返回 True,从第二行开始均返回false,原因是从第二行开始判断的路径发生了变化,这里第二行为e:/dvd/i.avi,在使用FileExists(listbox.Items.Strings[integer(listbox.ItemIndex)])判断的时候,他获取的是d:/bg/e:/dvd/i.avi这样一个路径,请问如何改变这种情况,怎么路径自己改变了呢?使用setCurrentDir设置当前工作目录也不行,盼望赐教,不慎感谢!
d:/bg/2008.jpg
e:/dvd/i.avi
c:/pro/music/aimo.mp3
双击listbox中这3行中的任意一行,listbox.Items.Strings[integer(listbox.ItemIndex)]取得当前行中的字符创,使用FileExists(listbox.Items.Strings[integer(listbox.ItemIndex)])判断该文件是否存在(这里列表的3个文件都存在),出现如下问题:
双击listbox中第一行判断文件是否存在返回 True,从第二行开始均返回false,原因是从第二行开始判断的路径发生了变化,这里第二行为e:/dvd/i.avi,在使用FileExists(listbox.Items.Strings[integer(listbox.ItemIndex)])判断的时候,他获取的是d:/bg/e:/dvd/i.avi这样一个路径,请问如何改变这种情况,怎么路径自己改变了呢?使用setCurrentDir设置当前工作目录也不行,盼望赐教,不慎感谢!
解决方案 »
- delphi如何物理删除DBF数据
- 备份Firebird数据库时遇到的问题
- 有没有什么办法或是控件可以像IE8一样可以对整个表单进行放大,其它控件或是字体也同时进行缩放。
- DateTimePicker的显示格式问题
- 我有两个listbox控件,我现在想把listbox1的内容逐条或全部,或选中的部分搬到listbox2中,请问怎么做啊
- 请问影响数据库执行速度的函数有哪些?
- 怎样得到毫秒级甚至更精确的系统时间?
- delphi的IndyUDPClient控件怎么指定本地的端口。
- 如何去掉窗口的caption栏显示?我就是不想要上面的蓝条!!!!还有delphi打开project时显示找不到其res文件,是怎么回事?
- 如何让TTS 5.4生成WAV类型的TSpMemoryStream流后用DSPK组件从内存中读出语音
- 一个很难的问题!不知道如何解决
- 如何实现带有汉字的Url编码
d:/bg/2008.jpg
e:/dvd/i.avi
c:/pro/music/aimo.mp3那么, listbox.Items.Strings[listbox.ItemIndex])是不会返回'd:/bg/e:/dvd/i.avi'这样一个字符串的, 检查其他代码吧。
e:/dvd/i.avi
d:/bg/2008.jpg
c:/pro/music/aimo.mp3
这样双击第二行的时候使用image控件打开的时候会提示e:/dvd/d:/bg/2008.jpg目录、卷标语法错误
应该是你的代码写错了。如FileName初始化等问题
在listbox窗口中:
procedure TdackFrm.ListBoxDblClick(Sender: TObject);
var dir:string;
begin
yxFrm.filename:=listBox.Items.Strings[integer(listbox.ItemIndex)];
yxFrm.Show;
end;
yxFrm中image加载代码:
procedure TyxFrm.FormShow(Sender: TObject);
begin
image1.Visible:=true;
yxfrm.Width:=582;
yxfrm.Height:=496;
showmessage(filename);//这里正确显示filename
image1.Picture.LoadFromFile(filename);//加载的时候filename就变成从当前目录下了
end;
private
procedure SetImage(value:string);
property Image:string write SetImage;procedure SetImage(value:string);
begin
if FileExists(value) then
Image1.Picture.LoadFromFile(value);
end;
--调用
yxfrm.Image:=listBox.Items.Strings[listbox.ItemIndex];
yxfrm.show;
private
procedure SetImage(value:string);
public
property Image:string write SetImage;procedure SetImage(value:string);
begin
if FileExists(value) then
Image1.Picture.LoadFromFile(value);
end;
--调用
yxfrm.Image:=listBox.Items.Strings[listbox.ItemIndex];
yxfrm.show;
我想在yxFrm显示的时候加载图片,不能:
procedure TyxFrm.FormShow(Sender: TObject);
begin
yxFrm.SetImage(image);
end;
提示[Error] yxplay.pas(40): Cannot read a write-only property
请问月亮,如何在窗口打开的时候加载图片呢?
{ Private declarations }
procedure SetImage(value:string); public
{ Public declarations }
filename:string;
property Image:string write SetImage;
end;var
yxFrm: TyxFrm;implementation{$R *.dfm}
procedure TyxFrm.SetImage(value:string);
begin
if FileExists(value) then
Image1.Picture.LoadFromFile(value);
end;
procedure TyxFrm.FormShow(Sender: TObject);
begin
//怎么在窗口显示的时候image加载图片呢
end;
begin
if FileExists(value) then
Image1.Picture.LoadFromFile(value);
end;
这部分代码在你对属性赋值得时候Image1已经加载图片了
{ Private declarations }
procedure SetImage(value:string); public
{ Public declarations }
filename:string;
property Image:string write SetImage;
end;var
yxFrm: TyxFrm;implementation{$R *.dfm}
procedure TyxFrm.SetImage(value:string);
begin
showmessage(value);//这里弹出的路径都是正确的
//if FileExists(value) then
Image1.Picture.LoadFromFile(value)//加载的时候就变了// else
// Application.MessageBox('图片不存在!','提醒');
end;
form1.caption := ListBox1.Items.Strings[0];form1.caption := ListBox1.Items.Strings[1];form1.caption := ListBox1.Items.Strings[2];分别看看取出来的是什么?