function FileToVariant(FileName: String): OleVariant; 
var 
  AStream: TFileStream; 
  MyBuffer: Pointer; 
begin 
  AStream:=TFileStream.create(FileName,fmOpenRead); 
  try 
    aStream.Seek(0, soFromBeginning); 
    Result:=VarArraycreate([0, AStream.size-1], VarByte); 
    MyBuffer:=VarArrayLock(Result); 
    AStream.ReadBuffer(MyBuffer^, AStream.Size); 
    VarArrayUnlock(Result); 
  finally 
    AStream.Free; 
  end; 
end;

procedure VariantToFile(FileName: String; var AVariant: OleVariant); 
var 
  AStream: TFileStream; 
  MyBuffer: Pointer; 
  Size: Integer; 
begin 
  AStream:=TFileStream.create(FileName,fmCreate); 
  try 
    aStream.Seek(0, soFromBeginning); 
    Size:=VarArrayHighBound(AVariant,1)+VarArrayLowBound(AVariant,1)+1; 
    MyBuffer:=VarArrayLock(AVariant); 
    AStream.WriteBuffer(MyBuffer^, Size); 
    VarArrayUnlock(AVariant); 
  finally 
    AStream.Free; 
  end; 
end;

文件和Variant的转换的更多相关文章

  1. Linux 下查看文件字符编码和转换编码

    Linux 下查看文件字符编码和转换编码 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linu ...

  2. dd---复制文件并对原文件的内容进行转换和格式化处理

    dd命令用于复制文件并对原文件的内容进行转换和格式化处理.dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果.用的比较多的还是用dd来备份裸设备.但是不推荐,如果需要 ...

  3. 透过现象看webpack处理css文件中图片路径转换的具体过程

    webpack是目前使用比较流行的一个前端模块打包器,前端的任何资源都被当成一个模块来处理,如图片.css文件等等.在基于webpack构建的前端项目中,一般都会配置有关css文件处理的规则,这其中也 ...

  4. [PE结构分析] 7.相对虚拟地址(RVA)和文件偏移间的转换

    RVA是相对虚拟地址(Relative Virtual Address)的缩写.RVA是当PE 文件被装载到内存中后,某个数据位置相对于文件头的偏移量. 例如:导入表的位置和大小可以从PE文件头中IM ...

  5. [linux]查看文件编码和编码转换

    方法一:file filename 方法二:在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. 如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码 ...

  6. GPS文件中的C1--->P1转换

    美国的NOAA的Jim Ray开发了一个小工具,专门用来将互相关技术实现的观测量(C1,P2‘)转换成与Y-codeless观测量(P1,P2)相适应的观测量,方便将多个站的观测资料进行整合,校正了C ...

  7. vim 将文件从dos格式转换到unix格式

    dos格式文件传输到unix系统时,会在每行的结尾多一个^M(/r),当然也有可能看不到.但是在vim的时候,会在下面显示此文件的格式,比如 "dos.txt" [dos] 120 ...

  8. 【详解】Linux的文件描述符fd与文件指针FILE*互相转换

    使用系统调用的时候用文件描述符(file descriptor,简称fd)的时候比较多,但是操作比较原始.C库函数在I/O上提供了一些方便的包装(比如格式化I/O.重定向),但是对细节的控制不够. 如 ...

  9. 如何解决GBK的编码的文件中的中文转换成为UTF-8编码的文件而且不乱码

    首先我们必须明确一点,为什么正常转换会乱码? 因为我们的数据写入是GBK写入的,然后展示的话是按照文件保存形势展示的,前面保存形势是GBK,一致,所以不乱码,而后面将保存形势变成了UTF-8,但是写入 ...

随机推荐

  1. IONIC 页面之间传递参数

    HomePage 定义goToMyPage方法,传递id和name MyPage接收参数

  2. Angular 4 路由守卫

    路由守卫 只有当用户已经登录并拥有某些权限时才能进入某些路由 一个有多个表单组成的向导,如注册流程,用户只有在当前组件的组件中填写了满足要求的信息才可以导航到下一个路由 当用户未执行保存操作而试图离开 ...

  3. Vue基础汇总实践

    1)双向绑定:   <div id="app">   <p>{{message}}</p>   <input v-model=" ...

  4. ML(4): 决策树分类

    决策树(Decision Tree)是用于分类和预测的主要技术,它着眼于从一组无规则的事例推理出决策树表示形式的分类规则,采用自顶向下的递归方式,在决策树的内部节点进行属性值的比较,并根据不同属性判断 ...

  5. redis和memcached选择,对比分析

    memcache和redis是互联网分层架构中,最常用的KV缓存.不少同学在选型的时候会纠结,到底是选择memcache还是redis? memcache提供的功能是redis提供的功能的子集,不用想 ...

  6. JSON: JSON 用法

    ylbtech-JSON: JSON 用法 1. JSON Object creation in JavaScript返回顶部 1. <!DOCTYPE html> <html> ...

  7. restclient 访问 springmvc java工程接口

    一.tomcat和nginx 配置 /etc/nginx/conf.d/default.conf location /nsx{ proxy_pass http://nsx; proxy_connect ...

  8. 数据读取速度达1.5G/s,UFS 2.1存储技术曝光

    目前最快的是苹果NVME,当然UFS2.1也不差 iPhone6s与iPhone6s Plus在硬件的规格上有了很大的提升,但是它们身上的变化远没有苹果在发布会上所提到的A9处理器.1200万摄像头以 ...

  9. 一篇文章让你入门Shell !

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...

  10. ETL,BPM与ESB三者的一些感悟

    1.ETL: 数据层之间,主要在数据库层面上进行数据抽取过程------数据库层 2.ESB 异构系统之间通过总线技术,实现系统交互---------------系统通信层 3.BPM 自动化流程处理 ...