有一段c的代码:
FILE *outfile;
char buf[200];
outfile = fopen("d:\123.123","wb")  
sprintf(buf,"%daaaa\rbbbb",10);
fprintf(outfile,"%s",buf);
用delphi实现相同功能
s:string
F:TFileStream;
F:=TFIlestream.create('d:\123.123',fmOpenWrite);
s:=Format('%daaaa\rbbbb',10); // \r不起作用 换成#13#10也不行
F.write(s,Length(s));
delphi 实现有两个问题:
1:是format 时候控制符没回车换行'%daaaa#13#10bbbb' 换不了行,'%daaaa'+#13#10+'bbbb' 这种可以换行 但是好像%d参数传不对
2:写相同的字符到一个位二进制文件,两种方式生成的二进制不一样。牛人快帮帮忙看看 谢谢

解决方案 »

  1.   

    请问一下这句话什么意思?
    sprintf(buf,"%daaaa\rbbbb",10); 
      

  2.   

    var
    s:string ;
    F:TFileStream;
    begin
    F:=TFIlestream.create('e:\123.123',fmOpenWrite or fmCreate );
    s:=Format('%daaaa%sbbbb',[10,#13]); 
    F.write(pchar(s)^,Length(s));
    end;
      

  3.   

    谢谢Keily 星星就是厉害
    顺便抓住再问个问题:关于delphi指针做参数
    procedure TForm3.Button1Click(Sender: TObject);
    var
      Pl:PLongint;
    begin
      Pl:=GetMemory(SizeOf(longint)*20);
      pl^:=1;
      add(pl);
      ShowMessage(IntToStr(pl^));
      FreeMem(Pl);
    end;
    procedure add(pla:PLongint);
    var
      i:Integer;
    begin
       i:=pla^;
       Inc(pla);
       pla^:=i+6;
    end;
    按我理解指针做参数应该是传递引用,所以showmessage应该是7,但是实际是1 怎么才能实现用指针做参数
    传递引用,谢谢
      

  4.   

    delphi的参数据引用要用var
     procedure add(var pla:PLongint);
    但要注意的是,由于Pl的地址已改变,所以  FreeMem(Pl); 要出错,正确的作法: procedure add(var pla:PLongint);
    var
      i:Integer;
    begin
      i:=pla^;
      Inc(pla);
      pla^:=i+6;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Pl,p:PLongint;
    begin
      Pl:=GetMemory(SizeOf(longint)*20);
      p:=pl;
      pl^:=1;
      add(pl);
      ShowMessage(IntToStr(pl^));
      FreeMem(P);
    end;
      

  5.   

    谢谢Keiy
    以前印象种指针类型是不用加var的 非指针变量想传引用才需要
    ^_^
    今天终于弄明白了 结贴了
      

  6.   

    add里面用了Inc啊,改变的是下一个指针的值,所以还是1
      

  7.   

    还有个问题 访问指针数组里的某一个元素怎么取
    var
    pl:PlongInt;
    begin
    PL:=GetMemory(SizeOf(longint)*20);
    Pl^:=1;
    inc(PL);
    PL^:=2;
    inc(PL);
    Pl^:=3;
    end;
    如何使用指针直接访问 第 二个或者第三个元素
    试过 PL^[2] PL[2] PL[2]^ 都不行