程序很简单,在Application中测试TStringStream的用法,编译通过,运行时就抛出EAccessViolation异常,请问为什么?正确的用法应该怎么用?谢谢?unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  stringStream:TStringStream;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  stringStream.Create('');
  stringStream.WriteString('test');
  showmessage(stringStream.DataString);
end;end.

解决方案 »

  1.   

    如果把stringStream放到TWriter对象中,再写入,依然报这个错误。请大虾指点!!如下:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      stringStream:TStringStream;
      writer: TWriter;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      //stringStream.Create('');
      writer.Create(stringStream,1024);
      writer.WriteString('test');
      showmessage(stringStream.DataString);
    end;end.
      

  2.   

    哎!!!郁闷!!刚刚提问,自己就解决了!!原来create()是静态的,要这样用:streamString:=TStringStream.creat('');哎,还没有从Java中蹩过来,看到方法就想用对象去调用。create()就是Delphi里的constructor,实在不习惯散分了!!