以前、組んだプログラムに同じようなコードがありましたので参考までに。
ちなみに、私はHSPをはじめてまだ4ヶ月ぐらいのうえ、
以下のコードは2ヶ月目くらいのときに組んだので、
うまい方から見ると「おいおい」…というコードかもしれません。
私自身がわかり易いように書いていたので、コード内の変数名もそのままです。
ファイルパスとファイル名は適当に入力して試してみてください。
#define BUFFERSIZE 1048576;バッファサイズを1MBに指定
*onembcopy
exist FilePath : FileSize = strsize
if(FileSize < BUFFERSIZE){
sdim File,FileSize
bload FilePath,File,FileSize
bsave NewFilePath,File,FileSize
}else{
sdim File,BUFFERSIZE
sdim MstrSize,64
MstrSize = FileSize \ BUFFERSIZE
sdim count,64
count = (FileSize / BUFFERSIZE)
bsave NewFilePath,FileSize,0
repeat
if(cnt = count){
sdim File,MstrSize
bload FilePath,File,MstrSize,BUFFERSIZE*cnt
bsave NewFilePath,File,MstrSize,BUFFERSIZE*cnt
break
}else{
bload FilePath,File,BUFFERSIZE,BUFFERSIZE*cnt
bsave NewFilePath,File,BUFFERSIZE,BUFFERSIZE*cnt
}
title "コピー中・・・"+int(( BUFFERSIZE*cnt/FileSize )*100)+"%" ;たぶんこんな感じでいいのではないかと
wait 1
loop
}
return
このやり方のコピーは、
条件分けしないとコピー後のファイルサイズが変わってしまうことがあります。
例えば、条件分けしないと100.5MBのファイルをコピーした1MBずつコピーしたときに
出来たファイルが101MBになってしまったりします。
進捗状況をGUI等で表示したいなら、
Kpanさんのページに行ってプログレスバーの情報等を勉強すると早いです。
私もわからなくなると、よくKpanさんのページにお世話になりに行きます。