J
Jelly0228
Unregistered / Unconfirmed
GUEST, unregistred user!
近來在編寫一個類似TurboNote的局域網通訊軟件﹐用Socket實現。在寫多線程發送文件部分時﹐出現了一個怪怪的問題(把一個流的內容Copy到另外一個流中)一直沒有解決好﹐請大蝦幫忙看看~~
下面是出問題的代碼:
with Form1.OpenDialog1 do
begin
Execute;
if FileName<>'' then
begin
FN:=FileName;
FF:=ExtractFileName(FN);
Form1.ClientSocket1.Host:='172.17.8.205';
Form1.ClientSocket1.Active:=True;
S:=TWinSocketStream.Create(Form1.ClientSocket1.Socket,60000);
// F:=TFileStream.Create(FN,fmOpenRead or fmShareDenyNone);
F:=TFileStream.Create(FN,fmShareDenyWrite);
try
S.CopyFrom(F,0); //問題語句在這兒
finally
S.Free;
F.Free;
Form1.ClientSocket1.Active:=False;
end; //End Try
end; //End if FileName<>'' then
end; //End with Form1.OpenDialog1 do
當我選擇一個小于60KB的文件時﹐這段代碼沒有問題﹔但當我選擇一個大于60KB的文件時﹐就會發生"write stream error"的錯誤﹔值得一提的是﹐如果先選擇了一個小于60KB的文件﹐在不關閉窗口的前提下﹐再繼續選擇一個大于60KB的文件﹐就沒有問題。
不知哪位遇過類似的問題?如何解決??
下面是出問題的代碼:
with Form1.OpenDialog1 do
begin
Execute;
if FileName<>'' then
begin
FN:=FileName;
FF:=ExtractFileName(FN);
Form1.ClientSocket1.Host:='172.17.8.205';
Form1.ClientSocket1.Active:=True;
S:=TWinSocketStream.Create(Form1.ClientSocket1.Socket,60000);
// F:=TFileStream.Create(FN,fmOpenRead or fmShareDenyNone);
F:=TFileStream.Create(FN,fmShareDenyWrite);
try
S.CopyFrom(F,0); //問題語句在這兒
finally
S.Free;
F.Free;
Form1.ClientSocket1.Active:=False;
end; //End Try
end; //End if FileName<>'' then
end; //End with Form1.OpenDialog1 do
當我選擇一個小于60KB的文件時﹐這段代碼沒有問題﹔但當我選擇一個大于60KB的文件時﹐就會發生"write stream error"的錯誤﹔值得一提的是﹐如果先選擇了一個小于60KB的文件﹐在不關閉窗口的前提下﹐再繼續選擇一個大于60KB的文件﹐就沒有問題。
不知哪位遇過類似的問題?如何解決??