如下代码运行时用stream老出错!请各位大虾帮忙查查看看(100分)

  • 主题发起人 主题发起人 xchen.d
  • 开始时间 开始时间
X

xchen.d

Unregistered / Unconfirmed
GUEST, unregistred user!
bmp := TBitmap.Create;
SourceJpg := TJPEGImage.Create;
jpg := TJPEGImage.Create;
SourceJpg.LoadFromFile(xfsource);
bmp.Assign(SourceJpg);
jpg.Assign(bmp);
Jpg.CompressionQuality := 80;
jpg.Compress;
//Jpg.SaveToFile(ExtractFilePath(ParamStr(0)) + 'temps.jpg');
jpg.SaveToStream(xstream);<--------------------------------就在这里
xstream.Position := 0;
sizeoffile := xstream.Size;
SourceJpg.Free;
bmp.Free;
jpg.Free;
出现错是:
Project xxx.exe raised exception class EAccessViolation with message 'Access
violation at address 004b6234 in module 'xxx.exe'.read of address 0000000'
这个难道跟操作系统有关?我用的是win2003
 
首先:xstream:TMemoryStream;
其次将语句:jpg.SaveToStream(xstream);改为:
xstream:=TMemoryStream.Create;
jpg.SaveToStream(xstream);
 
xstream沒有create啊
 
xstream:=tmemorystream.create
 
要创建的……
 
二楼给了解决办法
 
我改为TmemoryStream一切问题解决,同时也解决了jpg.compress的问题,
jpg.compress的问题是:
当jpg.compress时,对流的size根本没有改变,一样大。也就是压缩前和压缩后tfilestream.size永远一致。呵呵
 
接受答案了.
 
后退
顶部