掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ディレクトリ内の指定した画像の次の画像ファイルの読み込み (ID:47071)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
皆様 素早い回答ありがとうございました。 igy様 ファイルの数を減らしたいのは山々なんですが、元々決まってるところを変えるのは難しくて断念しました。 通りすがり様 >FileListBoxが遅いのは、ListBoxとしての表示内容をWindowsの管理下においているから、ということがあります。 やはりそうなんですね。なんとなくそんな気はしてました。 deldel様 今回配列にディレクトリ全部を入れて 回すほうが早かったのでそのようにしました。 一応できたプログラムが以下です。 もっといいやりようはあるのかもしれませんが。。 問題なく動作しているようなのでこれで行こうかと思います。 XE3でしたので、こちらを参考にしました http://www.gesource.jp/weblog/?p=5959 uses System.IOUtils, System.Types; function Show_Next_Image(strFilePath:string):boolean; var intCnt:integer; strFileDir:string; strFileName:string; strSearchPattern: string; Option:TSearchOption; arrFileNames:TStringDynArray; begin result:=false; //ファイルのディレクトリを取り出す strFileDir:=IncludeTrailingPathDelimiter(ExtractFilePath(strFilePath)); //ファイル名に一致する検索パターン strSearchPattern := '*.jpg'; //ディレクトリの列挙モード Option := TSearchOption.soTopDirectoryOnly; // トップレベル列挙モード //指定のディレクトリ内のファイルのリスト arrFileNames := TDirectory.GetFiles(strFileDir,strSearchPattern, Option); //指定カウント用 intCnt:=0; //配列ループ for strFileName in arrFileNames do begin //現在表示中の画像が最後かどうか if strFilePath = arrFileNames[High(arrFileNames)] then begin MessageDlg('次の画像が存在しません。', mtInformation,[mbOk], 0); exit; end; //現在開いているファイル名までループ try if strFileName = strFilePath then Image.Picture.LoadFromFile(arrFileNames[Succ(IntCnt)]) except on e:Exception do begin MessageDlg('画像表示中に不具合が発生しました。'+#13#10 + '[Err] ' +e.Message, mtError,[mbOk], 0); exit; end; end; Inc(IntCnt); end; result:=true; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.