我想要将memo控件中的数据分三个字段保存到本地数据库,分别是:日期(D型),时间(T型),电压(A型),保存到本地数据库。在memo中数据用”,“隔开,格式如下:
2011-02-16,13:54:26,0.628
2011-02-17,09:26:32,0.858
2011-02-18,15:21:18,0.653
请问那位大哥能帮帮忙,谢了
2011-02-16,13:54:26,0.628
2011-02-17,09:26:32,0.858
2011-02-18,15:21:18,0.653
请问那位大哥能帮帮忙,谢了
2011-02-16,13:54:26,0.628
2011-02-17,09:26:32,0.858
2011-02-18,15:21:18,0.653
=>
insert table1 (f1,f2,f3) values ('2011-02-16','13:54:26','0.628')
insert table1 (f1,f2,f3) values ('2011-02-17','09:26:32','0.858')
insert table1 (f1,f2,f3) values ('2011-02-18','15:21:18','0.653')
我的数据很多,恐怕此法难以行得通。
procedure TForm1.Button1Click(Sender: TObject);
var
tmpSL: TStringList;
i: Integer;
begin
for i := 0 to Memo1.Lines.Count-1 do
begin
tmpSL := TStringList.Create;
tmpSL.CommaText := Memo1.Lines[i];
// SQL操作 tmpSl[0] 为日期 tmpSL[1] 为时间 tmpSL[2] 为电压
tmpSL.Free;
end;
end;
降memo的数据给一个tstringlist,因为tstringlist的处理速度很快
list:=tstringlist.create;
list.add(memo1.line.text);
for i=0 to list.count-1 do
begin
用copy ()的方法。
end;方法二
直接用函数
function GetDelimiteredStringN(Astring:String;Dlmter:Char;nPos:integer):string;
var
sList:TStringList;
begin
Result:='';
sList:=TStringList.Create;
sList.Text:=StringReplace(Astring,Dlmter,#13#10,[rfReplaceAll]);
if (nPos>0) and(sList.Count>=nPos) then
Result:=sList[nPos-1];
end;
6楼,delphi_freeman
我觉得你们二位的方法给我提供了新思路,多谢!不过,小弟还有一个问题,数据中间的“,”该做如何处理,因为是两个“,”将数据隔开,此处逗号对我无用。
procedure TForm1.SaveButtonClick(Sender: TObject);
var
i,j,k: Integer;
TmpStr,Field1Str,Field2Str,Field3Str: String;
begin
for i:=0 to MemRecv.Lines.Count-1 do
begin
TmpStr:=MemRecv.Lines[i];
for j:=1 to Length(TmpStr) do
if(TmpStr[j]= ',' ) and (TmpStr[k]=',') then
begin
Field1Str:=Copy(MemRecv.lines[i],1,j);
Field2Str:=Copy(MemRecv.lines[i],j,k);
Field3Str:=Copy(MemRecv.lines[m],k,Length(TmpStr)-k);
with Table1 do
begin
Edit;
Append;
FieldByName('日期').AsString:=Field1Str;
FieldByName('时间').AsString:=Field2Str;
FieldByName('电压').AsString:=Field3Str;
Post;
end;
end;
end;
end;
如果,按照5楼,6楼所说,两个逗号该做如何处理呢?
var
list:TStringList;
begin
list.Delimiter := ',';
list.DelimitedText := 'a,b,c';
end;这样list中就是分割后的,a b c
i:Integer;
begin
Temp:=TStringList.Create;
Result:='';
try
Temp.DelimitedText:=bm;
Temp.Delimiter:=',';
for i:=0 to Temp.Count -1 do
Result:=Result+QuotedStr(Temp[i])+',';
Result:=Copy(Result,1,Length(Result)-1);
finally
Temp.Free;
end;