现在有数个memo,为了我描述的方便,拿2个来举例,:)这两个memo中的数据均有回车换行的操作。数据库表中有2个项目 ,id 和content。向数据库中添加数据的事件:content中的内容为:memo1.Lines.Text+'/'+memo2.Lines.Text
procedure TForm1.Button1Click(Sender: TObject);
var
  var1:string;
begin
  var1:=memo1.Lines.Text+'/'+memo2.Lines.Text;
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('insert into 测试 values('''+edit1.text+''','''+var1+''')');
  adoquery1.ExecSQL;
  showmessage('添加数据成功');
end;
然后从数据库中取得数据并且分别赋值
procedure TForm1.Button4Click(Sender: TObject);
var
  temp:string;
  tls1:TStringList;
  v:integer;
begin
  adoquery1.Close;
  adoquery1.SQL.Clear;
  adoquery1.SQL.Add('select * from 测试 where id='''+edit1.text+'''');
  adoquery1.Open;
  temp:=adoquery1.FieldValues['content'];
/////////////////////////////////////////////////////////////////////
    tls1:=TStringList.Create;
    try
     tls1.Text:=StringReplace(temp,'/',#13#10,[rfReplaceAll]);
     for v:=0 to 1 do
     begin
       b[v]:=tls1.Strings[v];       //b[v]为我定义的数组,用来存放数据。
     end;
    finally
     tls1.Free;    end;
      showmessage(b[0]);
      showmessage(b[1]);end;可是,当我取出content的数据之后,b[0]中的数据并不是我想要的以前输入的memo1中的内容,b[1]的数据也不是我想要的以前输入的memo2中的内容。我看了看,原来由于我的memo1中的内容有回车换行操作,使得b[0]中的数据是memo1中的第一行,b[1]中的数据是memo1中的第二行。可我不想实现这样的功能,我想让b[0]中存放的是我以前输入的memo1中的内容,让b[1]中存放的是我以前输入的memo2中的内容。这样的功能该如何实现哪?谢谢了。

解决方案 »

  1.   

    是你想错了,你希望/转换后的#13#10有效,前面的#13#10无效,这样肯定不行了
    换一种思路吧,给你举个例子:procedure TForm1.Button1Click(Sender: TObject);
    var
      sl: TStringList;
      s: string;
    function Split(p: Char; s: string): TStringList;
    begin
      Result := TStringList.Create;
      while Pos(p, s)>0 do
      begin
         Result.Add(Copy(s, 1, Pos(p, s)-1));
         Delete(s, 1, Pos(p, s));
      end;
      if Length(s)>0 then Result.Add(s);
    end;
    begin
      s := '123456'+#13#10+'123/5678';
      sl := TStringList.Create;
      sl := Split('/', s);
      ShowMessage(sl[0]);
    end;