现在有数个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中的内容。这样的功能该如何实现哪?谢谢了。
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中的内容。这样的功能该如何实现哪?谢谢了。
换一种思路吧,给你举个例子: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;