procedure TFormMain.btnSaveToFileClick(Sender: TObject);
var
pIn,szBuffer:Pointer; MyStream:TMemoryStream; iLen: Integer;
Ret:Boolean;
begin
if self.OpenDialog1.Execute then
begin
MyStream:=TMemoryStream.Create; MyStream.LoadFromFile(Self.OpenDialog1.FileName); GetMem(pIn,MyStream.Size); try
MyStream.ReadBuffer(pIn,MyStream.size); //为什么这行会失败?? iLen:=CalcDecodedSize(pIn,mystream.size);
GetMem(szBuffer,iLen); //pIn:[email protected][1];
try
Base64Decode(pIn,mystream.size,szBuffer); MyStream.Free; try
MyStream.Create; MyStream.WriteBuffer(szBuffer,iLen); if self.SaveDialog1.Execute then
MyStream.SaveToFile(self.SaveDialog1.FileName);
finally
MyStream.Free;
end; finally
FreeMem(szBuffer);
end;
finally
FreeMem(pIn);
MyStream.Free;
end; end;
end;
var
pIn,szBuffer:Pointer; MyStream:TMemoryStream; iLen: Integer;
Ret:Boolean;
begin
if self.OpenDialog1.Execute then
begin
MyStream:=TMemoryStream.Create; MyStream.LoadFromFile(Self.OpenDialog1.FileName); GetMem(pIn,MyStream.Size); try
MyStream.ReadBuffer(pIn,MyStream.size); //为什么这行会失败?? iLen:=CalcDecodedSize(pIn,mystream.size);
GetMem(szBuffer,iLen); //pIn:[email protected][1];
try
Base64Decode(pIn,mystream.size,szBuffer); MyStream.Free; try
MyStream.Create; MyStream.WriteBuffer(szBuffer,iLen); if self.SaveDialog1.Execute then
MyStream.SaveToFile(self.SaveDialog1.FileName);
finally
MyStream.Free;
end; finally
FreeMem(szBuffer);
end;
finally
FreeMem(pIn);
MyStream.Free;
end; end;
end;
解决方案 »
- 高分相送解决复杂查询问题,高手看过来!(分不够可以再加)
- 如何实现以下的问题
- 郁闷:搞了一天了,无法解决提示‘invalid variant type conversion'
- 请问哪里有中文的delphi帮助
- listbox的最后一行不能取出的问题,怪!!!(内有代码)
- 高手请教呀(端口号的问题)
- 奇怪!帖子提前的连接怎么没有了?
- select * from datebase order by time,用query经过排序后的数据库没法修改,但我想取时间最早的那条记录进行修改,应该怎么做?
- 请问一个关于fastreport的问题,急~~~~~
- 各位,请一定帮忙
- DBGridt利用数据集操作的问题,急啊!回答了高分相赠!不够另外加!
- grid的问题,急!!!
var
iLen: Integer;
pIn,szBuffer:Pointer; MyStream:TMemoryStream;begin
if self.OpenDialog1.Execute then
begin
MyStream:=TMemoryStream.Create; MyStream.LoadFromFile(Self.OpenDialog1.FileName); GetMem(pIn,MyStream.Size); try
MyStream.ReadBuffer(pIn^,MyStream.size); / iLen:=CalcDecodedSize(pIn,mystream.size);
GetMem(szBuffer,iLen); //pIn:[email protected][1];
try
Base64Decode(pIn,mystream.size,szBuffer); //执行这行后,变量iLen由原来的89654变为10036252,导致后面ilen使用不正确,这是为何?? MyStream.Free; try
MyStream.Create; MyStream.WriteBuffer(szBuffer^,iLen); //这个iLen就不正确了。 if self.SaveDialog1.Execute then
MyStream.SaveToFile(self.SaveDialog1.FileName);
finally
MyStream.Free;
end; finally
FreeMem(szBuffer);
end;
finally
FreeMem(pIn);
MyStream.Free;
end; end;
end;