怎样把OleVariant变量保存到二进制文件中?(100分)

  • 主题发起人 主题发起人 Vinson
  • 开始时间 开始时间
V

Vinson

Unregistered / Unconfirmed
GUEST, unregistred user!
OleVariant变量中含有一张图片,怎样将其保存成图片文件。[?]
 
能不能这样写到内存流里?
ms.write(v,SizeOf(OleVariant));
 
先试试![:D]
 
请问MS是什么东东?
 
就是Tmeorystream呀
任何变量都可以写到流里的.
也许你说得更清楚些会对回答你的问题有帮助.
 
我是用变量来传输图像的,图像来自数码相机,只要发个命令过去,它就返回一个OleVariant类型的数据包,里面含有图像数据。
 
这个东东怎么用呀?文件名在哪里写?
 
哦,知道了,试试![:D]
 
不行呀,产生的图片文件才16个字节
下面是我的程序段:
procedure TForm1.MochaX1TransferEvent(ASender: TObject; camNo,
objectHandle, headerSize, imageSize, formatCode, result: Integer);
var
pBuf:OleVariant;
FileName:String;
ms:TMemoryStream;
begin
If CamNo = 0 Then begin
lblTransTip.Visible := True;
StatusBar1.Panels[4].Text := IntToStr(imageSize);
MochaX1.GetImage(CamNo,objectHandle,pBuf,imageSize,0);
FileName := StringReplace(DateTimeToStr(Now()),':', '-',[rfReplaceAll]) + '.JPG';
ms:=TMemoryStream.Create;
ms.Write(pBuf,sizeof(pBuf));
ms.SaveToFile(FileName);
ms.Free;
MochaX1.Capture(camNo,PRM_PRESS_OFF);
Image1.Picture.LoadFromFile(FileName);
lblTransTip.Visible :=False;
end;
end;
 
MochaX1.GetImage函数是ActiveX的方法。
其原型如下:
GetImage(camNo:Integer;objectHandle:Integer;pBuf:OleVariant;BufSize:Integer;offset:Integer):Integer;
 
调试程序时,pbuf显示unassigned!是什么意思,怎么解决?[:(]
 
在VB中可以这样写:
Private Sub mocha_TransferEvent(ByVal camNo As Long, ByVal objectHandle As Long, ByVal headerSize As Long, ByVal imageSize As Long, ByVal formatCode As Long, ByVal result As Long)
Dim pBuf() As Byte
If camNo = 0 Then
Label5.Visible = True
ProgressBar1.Visible = True
Text2.Text = Str(imageSize)
ReDim pBuf(imageSize)
mocha.GetImage camNo, objectHandle, pBuf, imageSize, 0
FileName = Replace(Now(), ":", "-") + ".JPG"
Open FileName For Binary Access Write As #1
Put #1, , pBuf
Close #1
mocha.Capture 0, PRM_PRESS_OFF
Command2_Click
Label5.Visible = False
ProgressBar1.Visible = False
Command1.Enabled = True
Else
MsgBox ("没有找到相机")
End If
End Sub
 
在线等待...........
 
Vinson,你是做相机拍摄的吗?
可以留下你的QQ吗?你用的是什么相机.
 
我用的是奥林巴斯E330相机。
 
你用的开发包是VB的吗?
是他们官方网站的吗?
 
可以留下QQ吗?或者是MSN吗?
 
他们提供Sample是VC写的,VB例子是别人写的,我要把VB程序转成Delphi的程序。
 
后退
顶部