文件流的读写问题,为什么直接把字符串付给变量S就正常,把文本框的内容付给
变量S就出错?小妹才疏学浅,请求大哥指点,不胜感谢!unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
 
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);//把字符串写入文件
var
s:string;
fs:TFileStream;
begin
s:='我爱你'; //为什么这样把字符串付给S就正常
//s:=edit2.Text ;//为什么这样写就出错?如何把文本框的内容付给s
fs:=TFileStream.Create('c:\strfile.txt',fmCreate);
try
   fs.Write(s,Length(s));
finally
      fs.free;
end;
end;procedure TForm1.Button2Click(Sender: TObject);//从文件中读出字符串
var
s:string;
fs:TFileStream;
begin
fs:=TFileStream.Create('c:\strfile.txt',fmOpenRead);
try
  fs.Read(s,fs.Size);
  Edit1.Text :=s;
finally
    fs.free;
 end;
end;
end.

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);//把字符串写入文件
    var
    s:pchar;//*修改
    fs:TFileStream;
    begin
    s:='我爱你'; //为什么这样把字符串付给S就正常
    s:=pchar(edit2.Text) ;//*修改//为什么这样写就出错?如何把文本框的内容付给s
    fs:=TFileStream.Create('c:\strfile.txt',fmCreate);
    try
       fs.Write(s^,Length(s));//*修改
    finally
          fs.free;
    end;
    end;procedure TForm1.Button2Click(Sender: TObject);//从文件中读出字符串
    var
    s:pchar;//*修改
    fs:TFileStream;
    begin
    fs:=TFileStream.Create('c:\strfile.txt',fmOpenRead);
    getmem(s,fs.size);//*修改
    try
      fs.Read(s^,fs.Size);//*修改
      Edit1.Text :=s;
    finally
        fs.free;
     end;
    freemem(s);//*修改
    end;