投稿日 | : 2005/08/24(Wed) 10:20 |
投稿者 | : 叶 |
Eメール | : |
URL | : |
タイトル | : Re^7: Inetを利用したDIRについて |
ご助言、ありがとうございます。
提示して頂いたソースを試した所、一回目のCDで移動するタイミングで
GetChunk部分にて"最後の要求が実行中です"エラーが発生しました。
おそらくcase分の条件にicResponseReceivedが含まれているからだと思います。
(icResponseCompletedが戻るまで、次の処理要求は実行できない為)
>StateChangedイベントで、どういうコードを書いているか見えないんですが、
現在の状況はこのような感じです。
Private Sub Command1_Click()
Dim strData As String
With Inet1
.URL = "ftp://test"
.AccessType = icFTP
End With
Inet1.Execute , "CD webTEST"
'待機処理
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Execute , "PUT C:\TEST\test.tif test.tif"
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Execute , " CLOSE"
Inet1.Execute , " QUIT"
With Inet1
.URL = "ftp://test"
.AccessType = icFTP
End With
'とりあえず両方はあきらめて、サイズだけでも取得しようとしています。
Inet1.Execute , " SIZE test.tif"
Do While Inet1.StillExecuting = True
DoEvents
Loop
End Sub
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData As Variant ' データを入れる変数。
Dim strData As String: strData = ""
Dim bDone As Boolean: bDone = False
Select Case State
Case icResponseCompleted
' 最初のチャンクを取得します。
vtData = Inet1.GetChunk(1024, icString)
DoEvents
Do While Not bDone
DoEvents
strData = strData & vtData
DoEvents
' 次のチャンクを取得します。
vtData = Inet1.GetChunk(1024, icString)
If Len(vtData) = 0 Then
bDone = True
End If
Loop
'ここで値取得してログに出力
Case icError
'エラー処理
End Select
End Sub
現在、少し進展(?)して、サイズが取得できる事が
"可能な時も"発生するようになりました^−^;
上記コマンドボタンを実行すると、もちろんサイズは取得出来ないのですが
続けてもう一度実行すると正常に取得できます。
つまり実行する事に、取れたり取れなかったりといった具合です。
最初はアップロードしたファイルだから、認識できないのかと疑いましたが
既存のファイルをSIZEで取得した場合も同様の現象が発生することから
アップロードファイル事態に問題があるわけではなさそうです。
ためしに、ファイルサイズに値が戻ってくるまでループしてみましたが
予想通りというかなんというか無限ループに陥りましたorz
引き続き調査を行いますので、
何かお気づきの点などございましたら、
ご助言の程、よろしくお願い致します。