起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 208|回复: 12

[结贴]平台上怎么使用CopyMemory?帮忙移植这几行代码[请求]

[复制链接]
发表于 2007-10-21 21:47:07 | 显示全部楼层 |阅读模式
这段是Delphi的代码,主要是把二进制形式的4个字节转成Float型,用到了CopyMemory,现在怎么移植到平台上去,还请各位老大帮个忙,谢谢了
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  doubleVar : Single;
  bytesVar: array[0..3] of Byte;
  lString : String ;
  i, j : Integer ;
begin
  S := TMemoryStream.Create;
  j := 0 ;
  if OpenDialog1.Execute then
    S.LoadFromFile(OpenDialog1.FileName);
  SetLength(lString,s.size);
  S.Read(lString[1],s.size);
  for i := 1 to length(lString) do
    begin
      bytesVar[j] := ord(lString) ;
      j := j + 1 ;
      if j = 4 then
        begin
          j := 0 ;
          CopyMemory(@doubleVar,@bytesVar, 4);
          ListBox1.Items.Add(floattostr(doubleVar));
        end;
    end;
end;
回复

使用道具 举报

 楼主| 发表于 2007-10-22 10:42:52 | 显示全部楼层
目的是转换这份文件,把纯二进制的字符每4个字节转换成一个浮点数

数据比较.rar

1.93 KB, 下载次数: 56

回复 支持 反对

使用道具 举报

发表于 2007-10-22 11:03:43 | 显示全部楼层
平台不支持指针操作。不能确定在平台能否实现相应的功能。
建议楼主在delphi中编译成dll或控件,导入平台使用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 11:14:00 | 显示全部楼层
晕,这部分内容还没有去研究,时间来不及了哦,对了 平台上面也有CopyMemory的东西,怎么用啊
回复 支持 反对

使用道具 举报

发表于 2007-10-22 11:27:19 | 显示全部楼层
平台里面的不能用,因为平台不支持指针。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 11:44:45 | 显示全部楼层
那又没有什么其他的代码能够实现这个方法,能帮忙写一个吗,主要取数据库中的一个Image型的字段,然后我 TBlobField(DSB.DataSet.FieldByName('MinVal')).SaveToStream(AFileName); 存放在TmemoryStream里面了,怎么对它操作才能得到我想要的结果
回复 支持 反对

使用道具 举报

发表于 2007-10-22 11:46:09 | 显示全部楼层
类似的函数都用到了指针,所以最好还是封装一下比较好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 12:09:38 | 显示全部楼层
怎么封装,没有研究过呀,现在时间来不及,能帮忙搞一个吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 12:11:09 | 显示全部楼层
还有 怎么把TMemoryStream的内容存到一个String里面去,平台也有Read方法,可是总是提示错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-22 16:59:31 | 显示全部楼层
平台上Read(var Bufferbject;Count:Integer)这个Buffer : object是什么样的参数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-29 02:49 , Processed in 0.049385 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表