读流文件,从流中取一部分输到TRichEdit1中。
如果当ScrollBars属性设置为ssNone时,输到TRichEdit1中的文本正常。
当ScrollBars属性设置为有滚动条时,输到TRichEdit1中的文本就乱了。
请问如何解决?

解决方案 »

  1.   

    是不是可以在读入前把trichedit清空一下,clear;
      

  2.   

    to:ahuige(灰不遛秋) 
    试过没用to:ikumei(雷欧钠德) 
    是多了很多字符,该读的没变。Drate(鸟窝里的虫) :
    当然是问题值500分,人可是五万都不买哦..........
      

  3.   

    或者干脆将流文件发给我,说明具体要求,我来试试
    我对这个问题感兴趣
    [email protected]
      

  4.   

    ikumei(雷欧钠德) :
    文件流是我自已写的,是记一些编程技巧和心得,一个题目对应一个内容,哪怕内容只有一行几个字符,读到TRichEdit1中多出很多不是流里面的东西。
    如果在TRichEdit1中不设置滚动条就全正常.
    代码不在这台机上,要换机麻烦。
      

  5.   

    这样啊
    看来是中文引起的可能性很大
    多出的部分是看的懂的字符还是看不懂的乱码?
    这个问题我也碰到过,当时费了些时间才解决
    针对不同的情况还是要不同的方法,有时设置trichedit的charset属性可以解决问题,有时不行。
    你可以试一下,还不行的话,如果你自己解决了最好,要么留个qq,什么时候方便把代码给我,这个东西光说不行,试出来才是成功啊
      

  6.   

    ikumei(雷欧钠德) :
    全英文也一样
    看得懂的乱码(字符)
      

  7.   

    放弃吧,在显示中文上,richedit有很多问题
      

  8.   

    最简单的代码,很正常
    var
      f:TMemoryStream ;
    begin
      f:=TMemoryStream.Create ;
      f.LoadFromFile('d:\aaa.txt');
      RichEdit1.Lines.LoadFromStream(f);
      freeandnil(f);end;
      

  9.   

    找了一篇相关的文章,看看!
                        http://www.csdn.net/Dev/Delphi/Document/TechDoc/del-rtf.zip是一个关于RichEdit的tips
      

  10.   

    设置Plaintext:=true 试试.
      

  11.   

    我说两句行外话:
    1.个别男同胞对女孩子不要太刻薄了;
    2.楼主好象故弄玄虚,问题点数才10却说:
    “TRichEdit的问题,本小姐跳楼价500分。”
    ----这也是自己给人话柄吧。
      

  12.   

    Function  Loadstr(n:Integer):string;//读标题对应的文章函数
    var
    meint:integer;
    s1:Pchar;
    fs:TFileStream;
    begin
    fs:=TFileStream.Create((Extractfilepath(Application.ExeName)+'Mybook.txt'),fmOpenRead  );
    try
       getmem(s1,fs.size);
       fs.Seek(n,soFromBeginning);
       fs.Readbuffer (meint,sizeof(meint));
       fs.Seek((n+meint+4),soFromBeginning);
       fs.Readbuffer(meint,sizeof(meint));
       fs.Readbuffer(s1^,meint);
       Result:=s1;
       freemem(s1);finally
       fs.free;
    end;
    end;
    procedure TForm1.ListBox1Click(Sender: TObject);begin
      If ListBox1.ItemIndex<>-1 Then
        Listbox2.ItemIndex :=Listbox1.ItemIndex ;
        RichEdit1.Text:=loadstr(strtoint(ListBox2.Items.Strings[ListBox2.ItemIndex]));
    end;Function mywrite(Bstr,Sstr:string):Boolean;//写入流的函数
    var
    s,s1:Pchar;
    meint:integer;
    fs:TFileStream;
    begin
    try
    if FileExists((Extractfilepath(Application.ExeName)+'Mybook.txt')) then//判断文件在不在
    begin
    fs:=TFileStream.Create((Extractfilepath(Application.ExeName)+'Mybook.txt'),fmOpenWrite );
    end
    else
      begin
     fs:=TFileStream.Create((Extractfilepath(Application.ExeName)+'Mybook.txt'),fmCreate );
    end;
    s:=Pchar(Trim(Bstr));
    s1:=pchar(Trim(Sstr));try
       fs.Seek(0,soFromEnd);//指针移到文件尾
       meint:=length(s);//计算字符串大小
       fs.Writebuffer(meint,sizeof(meint));//把大小写入文件
       fs.Writebuffer(s^,Length(s));//把字符串写入文件
       meint:=length(s1);//计算第二个字符串的大小
       fs.Writebuffer(meint,sizeof(meint));//把大小写入文件
       fs.Writebuffer(s1^,length(s1));//把第二个字符串写入文件
    finally
    fs.free;
    end;
    except
    Result:=False;
    Exit;
    end;
    Result:=True;
    end;procedure TForm2.Button1Click(Sender: TObject);
    begin
    if RichEdit1.Text <>'' then//如果文件框中是空将不保存
    begin
      if Edit1.Text <>'' then
       begin
       myWrite(Edit1.Text ,RichEdit1.Text );
       Button1.Enabled :=false;
       Application.MessageBox('保存成功!','信息',MB_ICONINFORMATION+MB_OK);
       end;
    end
    else  
       Application.MessageBox('文本框中不能为空!','信息',MB_ICONINFORMATION+MB_OK);
    end;