可能这个标题起的有点词不达意,但我实在想不到更好的名称了。
需求大致是这样的。
TFilestream本身参数是如下所说
1、Ansistring filename
2、mode而我现在是这样的
有个stream对象,
我想从这个stream对象直接构造一个伪文件名提供给TFilestream,让其能够正确建立,并最终读写等是stream的内容
。而不需要临时文件。至于这么做的原因是有个dll,他的某个过程接受一个infilename和一个outfilename参数,而我现在想给其两个stream或两个从stream得到的为文件名作为参数。是这个过程能够正确进行,并且不创建临时文件。创建临时文件的解决方法很简单,直接savetofile,loadfromfile就行了,但是现在要求不创建临时文件。不知各位有啥好的思路。

解决方案 »

  1.   

    dll导出函数
    a(infilename :pchar,outfilename:pchar);stdcall;这个函数接受两个参数,输入文件名和输出文件名,函数的作用是读取输入文件内容,经过一定处理后,输出成输出文件。而我现在想调用这个函数等处理功能,但我只有两个指向文件内容的指针。
    inbuffer:pchar,outbuffer:pchar其中inbuffer指向输入文件内容,outbuffer指向输出文件内容。这里我想调用a这个函数处理inbuffer指向的内容,并输出到outbuffer。
    正常情况下,这时要现将inbuffer存到临时文件1,然后调用函数处理,输出临时文件2,从文件2读取到outbuffer。这里用到了临时文件而我的需求是不用临时文件,实现上面我所说的过程
      

  2.   

    那可以这样嘛
    frmStream,ToStream : TfileStream;
    一个 WriteBuffer,一个读到 ReadBuffer 不就可以了??没必要一定要有个临时文件啊。真不好意思,手头没有DELPHI,只能大致说下意思了。
      

  3.   


    如果DLL是你写的,就改进。如果是别人的DLL只接受文件名那就没什么好办法了。
      

  4.   

    如果不修改DLL,你的幻想不能实现。
      

  5.   

    不一定是幻想,如果你看过flashplayercontrol的源码的话。
    adobe的flash控件原始的并不能从stream中载入内容,只接受一个url参数
    但是flashplayercontrol经过一定变换后,是flash控件可以接受stream作为参数了,loadmoviefromstream。