关于用FileWrite与MemoryStream保存数据的问题 |
答題得分者是:malanlk
|
lonmener
一般會員 發表:16 回覆:32 積分:9 註冊:2005-08-20 發送簡訊給我 |
上次发的贴子可能因为代码太长一天都没有人回复,所以把问题分开; 在不改变文件大小的情况下改写文件数据,我试着用FileWrite来写可以实现,但问题又来了,怎么样才能和IdHTTP关联起来?我想用MemoryStream来关联起来,但不知为什么写入的数据一直不正确,请帮忙指正,代码如下: procedure TForm1.Button1Click(Sender: TObject);
var
Mydown:TIdHTTP;
Ms:TMemoryStream;
aH,abuf:THandle; //FileOpen句柄
aURL:string; //网址
aSize:int64; //远程文件大小
begin
aURL:='http://210.51.190.26:8000/1.rar'; //下载网址
Mydown:=TIdHTTP.Create(nil);
Ms:=TMemoryStream.Create;
Mydown.Head(aURL);
aSize:=Mydown.Response.ContentLength; //取得文件大小
Mydown.Response.ContentRangeStart:=0; //从远程文件0位置开始
Mydown.Response.ContentRangeEnd:=aSize; //到远程文件尾结束
aH:=FileOpen('1.rar',fmOpenWrite or fmShareDenyNone); //打开已存在的1.rar文件 try
abuf:=Mydown.Get(aURL,Ms);
FileWrite(aH,abuf,aSize); //将下载文件内容写入文件(问题应该就在这里)
finally
Mydown.Free; //释放IDHTTP
Ms.Free; //释放MEMORYSTREAM
FileClose(aH) //释放FILEOPEN
end;
end; 發表人 - lonmener 於 2005/09/06 17:11:44
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
//Ms:TMemoryStream; //aH,abuf:THandle; fs: TFileStream; ... Mydown:=TIdHTTP.Create(nil); //Ms:=TMemoryStream.Create; fs := TFileStream.Create('1.rar',fmOpenWrite or fmShareDenyNone); //aH:=FileOpen('1.rar',fmOpenWrite or fmShareDenyNone); try Mydown.Get(aURL,fs); //FileWrite(aH,abuf,aSize); finally Mydown.Free; fs.Free; //Ms.Free; //FileClose(aH); end;Mydown.Get(aURL) 傳回的是 String 不是 Handle.... 如上改法試試看... |
lonmener
一般會員 發表:16 回覆:32 積分:9 註冊:2005-08-20 發送簡訊給我 |
|
malanlk
尊榮會員 發表:20 回覆:694 積分:577 註冊:2004-04-19 發送簡訊給我 |
|
lonmener
一般會員 發表:16 回覆:32 積分:9 註冊:2005-08-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |