有没有自定义文件格式的例子,谢谢了,我现在就是不知道如何写入文件和读出数据,包括多种类型,字符串(string和widestring),结构类型。最好能有例子。再次感谢

解决方案 »

  1.   

    不是扩展名,意思是说,自己定义的格式,比如一个结构type
      TDateRec = record
        Year: Integer;
        Month: (Jan, Feb, Mar, Apr, May, Jun, 
                Jul, Aug, Sep, Oct, Nov, Dec);
        Day: 1..31;
      end;我现在给这个结构放入数据,要把他存成文件,怎么写。存成文件后,怎么再读出来?
      

  2.   

    Readln()读文件一行
    Writeln()写文件一行
    Read()读文件指定个字节
    Write()写文件指定个字节
    其实这样的问题自己看一下书就搞定了,很简单啊
      

  3.   


    1. 建立一个 TFileStream for write
    2. call FileStream.Write(@yourRecVariable, sizeof(TyourRec))
    3. 释放FileStream
    write ok1. 建立一个 TFileStream for read
    2. call FileStream.Read(@yourRecVariable, sizeof(TyourRec));
    3. 释放FileStream
    read ok
      

  4.   

    var  FromF, ToF: file;
      NumRead, NumWritten: Integer;
      Buf: array[1..2048] of Char;
    begin
      if OpenDialog1.Execute then     { Display Open dialog box }
      begin
        AssignFile(FromF, OpenDialog1.FileName);
        Reset(FromF, 1); { Record size = 1 }
        if SaveDialog1.Execute then      { Display Save dialog box}
        begin
          AssignFile(ToF, SaveDialog1.FileName); { Open output file }      Rewrite(ToF, 1); { Record size = 1 }
          Canvas.TextOut(10, 10, 'Copying ' + IntToStr(FileSize(FromF))
            + ' bytes...');
          repeat
            BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
            BlockWrite(ToF, Buf, NumRead, NumWritten);
          until (NumRead = 0) or (NumWritten <> NumRead);
          CloseFile(FromF);
          CloseFile(ToF);
        end;
      end;
    end;
      

  5.   

    to comanche(太可怕)
    我照你的方法写了这样一段代码
    var 
    dd:Tzhao;
    fw:TFilestream;
    begin
    dd.inkdata:=ciccink1.Ink;{ciccink1.ink是控件的一个属性widestring型的,Tzhao是定义的结构}
    fw:=TFilestream.Create('d:\tata.dat',fmCreate);
    fw.Write(dd,sizeof(dd));
    fw.Free;读是这样写的
    var 
    tt:Tzhao;
    fw:TFilestream;
    begin
    fw:=TFilestream.Create('d:\tata.dat',fmopenread);
    fw.read(tt,sizeof(tt));
    fw.Free;
    ciccink1.Ink:=tt.inkdata;
    end;可这样写出来的文件,读的时候总是报错。为什么呢??
    如果不用widestring型就可以
      

  6.   

    to outer2000(天外流星)我明白你的意思,你是复制一个文件,这个我明白呀,我现在想要的是自己定义的格式文件。如一个widestring类型量,按一定格式存入文件
      

  7.   

    定义一个格式
    type myLayer_type=record
        Name:array[0..256] of char;  //图层名称
        Color:tcolor;        //颜色
        CharacterIndex:integer; //
    //   Font:tfont;
        Outline:boolean;      //是否显示边界线
        Outlinecolor:tcolor; //边界线颜色
        Size:integer;      //字体大小
        Style:integer;     //符号形状或线形或填充符号
        Ltype:integer;     //图形类型
        Lfield:array[0..12] of char;    //注记字段名称
        Scale:double; //显示比例
        index:integer;        //图层位置
    end;
    写进去
    write(prjDefault,mylayer);
    读出来
    read(prjDefault,mylayer);
    不要用什么WIDESTRING,直接用字符串。
      

  8.   

    我现在要把一个ciccink1.ink的属性内容写入文件,这个就是widestring类型的,一定需要。怎么写?
      

  9.   

    我倒...
    dd.inkdata:=ciccink1.Ink;
    这句不对, 它是引用到 ciccink1.Ink, 写入时只是个引用地址(4byte)
    要在 Tzhao 中存一个 WideString 必需如下
    TZhao = record
       yourWideString :array [0..xx] of WideChar;
    end;move(yourSource, yourZhaoV.yourWideString, sizeof(source));
      

  10.   

    还有一点问题:
    TZhao = record
       yourWideString :array of WideChar;
    end;
    var
    ff:Tzhao;
    aa:widestring;
    begin
    aa:=ciccink1.ink;
    setlength(ff.inkdata,sizeof(aa));//这样对吗?能不能取到实际的大小?
    ShowMessage(string(ciccink1.ink));//这边正常显示,没问题
    Move(aa,ff.inkdata,sizeof(aa));//这边用法对不对?
    showMessage(string(ff.inkdata));//到这边的时候怎么显示不对了????
    end;请再帮助回答一下
      

  11.   

    不能, 动态数组变量不是一个简单变量, 它实际是一个pointer 指向容是
    -8 byte    引用记数
    -4 byte    数组长度
    0..length  数组内容看上去像Delphi的String & C++Builder 的AnsiString.
      

  12.   

    那上面这段程序应该怎么写sizeof(aa))改成lenght行吗,我试了一下,还是读不出来呀??
      

  13.   

    告诉你一个最好的例子就是Delphi5开发人员指南上的第12章有个例子,例子文件是绝对好的..