我就这么点money,帮帮小弟把.(100分)

  • 主题发起人 主题发起人 风云再起
  • 开始时间 开始时间

风云再起

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.DirChange(Dir: string);
var
Sr: TSearchRec;
Found: Integer;
Attr: Integer;
ExtFileName: string;
begin
S.Clear;
Attr := faAnyFile;
Found := FindFirst(Dir + '/*.*', Attr, Sr);
while Found = 0 do
begin
ExtFileName := LowerCase(ExtractFileExt(Sr.Name));
if (ExtFileName = '.bmp') or (ExtFileName = '.jpg') or ((ExtFileName = '.jpeg')) then
S.Add(Dir + '/' + Sr.Name);
Found := FindNext(Sr);
end;
FindClose(Sr);
ScrollBar1.Max := 120 * S.Count + 20;
//我们假设图片数多于5幅
Image1.Picture.LoadFromFile(S.Strings[5]);
Image2.Picture.LoadFromFile(S.Strings[1]);
Image3.Picture.LoadFromFile(S.Strings[2]);
Image4.Picture.LoadFromFile(S.Strings[3]);
Image5.Picture.LoadFromFile(S.Strings[4]);
end;

procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
DirChange(DirectoryListBox1.Directory);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
S := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(S);
end;
编译器先是出现list index out of bounds
再点击有图片的文件夹又会出现unknow picture file extension(.jpg)
为什么?
 
1. S.Strings[0] - S.Strings[4]
2. uses JPEG;
 
S中的字符串没有那么多
你的代码可以如下简写,和你的写法是等效的:

Image2.Picture.LoadFromFile(S[1]);
Image3.Picture.LoadFromFile(S[2]);
Image4.Picture.LoadFromFile(S[3]);
Image5.Picture.LoadFromFile(S[4]);
 
把下面的这句改了
while Found = 0 do//改成while found do
你的S中的字符串数量没有那么多,所以会list index out of bounds
有图片的没有存起来,所以会unknow picture file extension(.jpg)
个人认为,你看改以后对不对
 
谢谢各位,具本上已经解决了
第一个问题的原因是:如果他里面没有图片,image1.picture.loadfromfile就会出错
所以list index out of bounds[0]。
第二个就是没有加jpeg。
 
后退
顶部