最近看了关于TFileStream的一些代码,有几个问题不太了解,特来请教
 fs.Seek(0,soFromBeginning);
 fs.Seek(0,soFromEnd);soFromBeginning和soFromBeginning是什么意思???
还有TFileStream.Create('c:\'+c.FileName,fmCreate or fmShareDenyNone);
中fmShareDenyNone是什么意思??
fmCreate or fmShareDenyNone又是什么意思?请指教

解决方案 »

  1.   

    Seek:此方法实现流中读取指针的移动。
    函数原形为:
    Function Seek(Offset:Longint;Origint:Word):Longint;virtual;abstract;
    参数Offset为偏移字节数,参数Origint指出Offset的实际意义,其可能的取值如下:
    soFromBeginning:Offset为移动后指针距离数据开始的位置。此时Offset必须大于或者等于零。
    soFromCurrent:Offset为移动后指针与当前指针的相对位置。
    soFromEnd:Offset为移动后指针距离数据结束的位置。此时Offset必须小于或者等于零。该方法返回值为移动后指针的位置。
      

  2.   

    打开模式:
    fmCreate :用指定的文件名建立文件,如果文件已经存在则打开它。
    fmOpenRead :以只读方式打开指定文件
    fmOpenWrite :以只写方式打开指定文件
    fmOpenReadWrite:以写写方式打开指定文件
    共享模式:
    fmShareCompat :共享模式与FCBs兼容
    fmShareExclusive:不允许别的程序以任何方式打开该文件
    fmShareDenyWrite:不允许别的程序以写方式打开该文件
    fmShareDenyRead :不允许别的程序以读方式打开该文件
    fmShareDenyNone :别的程序可以以任何方式打开该文件
      

  3.   

    soFromBeginning:流的开始字节处
    soFromEnd:流的结尾字节处
    fmShareDenyNone:好像是允许其他程序读此文件
      

  4.   

    fmCreate or fmShareDenyNone时 fmShareDenyNone无效,其它程序是不能读写的。
    fmOpenRead/fmOpenWrite/fmOpenReadWrite or fmShareDenyNone 可以。
      

  5.   

    我还有一个问题不了解,  
    fs := TFileStream.Create(Label1.Caption ,fmOpenRead or fmShareDenyNone);
      GetMem(Buf,fs.Size);
    getmem是什么意思呢???
    这个问题回答之后,马上结贴
      

  6.   

    是分配内存,Buf原本是一个空的指针,指向未知的数据,如果不初始化而使用它的话,就有可能将有用的数据充掉,用个头么名为它分配一个长度为fs.size的内存空间,。。使用完后一定要用FreeMem释放内存。
      

  7.   

    是分配内存,Buf原本是一个空的指针,指向未知的数据,如果不初始化而使用它的话,就有可能将有用的数据冲掉,用GetMem为它分配一个长度为fs.size的内存空间,。。使用完后一定要用FreeMem释放内存。