過去の桐井戸端BBS (桐ver.9)
20338 ファイル複写が間に合わないため処理を遅延させるためにはどうしたらよいのでしょうか 今村 誠 2003/05/14-19:11
こんにちは、9行目のところに確認を入れないと
ファイル複写が間に合わないのですが、
1秒くらいの遅延で間に合うと思うのですがいい方法はないでしょうか。

手続き定義開始 t写真1::ソース値更新()
  var Str{&SysPath="C:\ONLIN\縮小\",&PictPath,&縮小}
 &STR=[写真1],\
 &縮小=#ファイル名(&STR,5)+"Resized\"+#ファイル名(&STR,3),\
 &PictPath=#データパス名+"画像\"+#S(#S(&STR,":","ξ"),"\","ζ")
 Object @cサムネイル作成.機能パラメータリスト2 =\
  """" + &SysPath + "ShukuSen.exe"",""""""" + &STR + """""
 メソッド呼び出し @cサムネイル作成.実行()
 繰り返し (#FSIZE(&縮小)<1)
 確認 "サムネイル作成中です"
 繰り返し終了
 ファイル複写 &縮小,&PictPath,終了状態=&実行リターン
 &縮小=#文字列反転(#sstr(#文字列反転(#ファイル名(&縮小,5)),2)),\
 &STR=#ファイル名(&STR,5)
 フォルダ削除 &縮小,*,終了状態=&実行リターン
 メソッド呼び出し @Pプレビュー.再描画( 0 )
 メソッド呼び出し @フォーム.描画更新()
手続き定義終了
20340 Re:遅延はどうしたらいいの 悲しげ 2003/05/14-20:10
記事番号20338へのコメント
どもっ、今村さん
過去ログを「遅延」で検索したら、↓を初め色々と出てきます。
http://www.fuku3.com/~habata/kbbs/kakov8/13115.htm

最近は、私は

proc ウェイト(数値 &待) /*←短過ぎるので画面表示時間稼ぎの単なるウェイト(^^;)*/
 &Etime=#時間加算(#日時値,&待,3)
 while(#日時値=<&Etime)
 end
end

の手続きを、次のように任意の秒を指定して呼び出すような使い方をしています。

 call ウェイト(1.5)
 call ウェイト(0.8)

20341 Re:遅延はどうしたらいいの 悲しげ 2003/05/14-20:20
記事番号20340へのコメント
繰り返しループがCPUを100%使い切ること。
このことが「ファイル複写」に影響するかどうかは判りませんが、
念のために、遅延用の「見えないフォーム」を呼び出すのもよいかもしれません。(cf.前掲過去ログ)
20343 Re:ありがとうございました 今村 誠 2003/05/14-20:52
記事番号20341へのコメント
素早いお返事ありがとうございました。
ファームを作りたくなかったので早速そのまんま使わせていただきました。(^。^)

手続き定義開始 t写真1::ソース値更新()
  var Str{&SysPath="C:\ONLIN\縮小\",&PictPath,&縮小}
 &STR=[写真1],&縮小=#ファイル名(&STR,5)+"Resized\"+#ファイル名
(&STR,3),\
 &PictPath=#データパス名+"画像\"+#S(#S(&STR,":","ξ"),"\","ζ")
 if (&前ファイル<>&STR .and #FSIZE(&STR)>0)
  Object @cサムネイル作成.機能パラメータリスト2 =\
   """" + &SysPath + "ShukuSen.exe"",""""""" + &STR + """""
  メソッド呼び出し @cサムネイル作成.実行()
   繰り返し (#FSIZE(&縮小)<1)
     call ウェイト(1.5)
   繰り返し終了
  ファイル複写 &縮小,&PictPath,終了状態=&実行リターン
  &縮小=#文字列反転(#sstr(#文字列反転(#ファイル名(&縮小,5)),2))
  フォルダ削除 &縮小,*,終了状態=&実行リターン
  メソッド呼び出し @Pプレビュー.再描画( 0 )
  メソッド呼び出し @フォーム.描画更新()
 end
手続き定義終了
proc ウェイト(数値 &待) /*←短過ぎるので画面表示時間稼ぎの単なるウェイト(^^;)*/
 var 日時{&Etime}
 &Etime=#時間加算(#日時値,&待,3)
 while(#日時値=<&Etime)
 end
end

戻る