delphi 中StringList中遇到的坑
来源:互联网 发布:ubuntu系统百度云 编辑:程序博客网 时间:2024/05/28 15:26
代码如下:
const cSql = 'select * from [%s$]';var FileName : string; flag : Boolean; _TableList,AData: TStringList; _TableName,str1 : string; arr1 : array of string; _Index,k,i : Integer;begin dlgOpen1.Create(nil); //指定默认打开路径 dlgOpen1.InitialDir:='C:\Users\Administrator\桌面'; dlgOpen1.Filter:='Excel文件|*.xls'; flag:=dlgOpen1.Execute; if not flag then begin dlgOpen1.Free; end; FileName:=dlgOpen1.FileName; conn := TADOConnection.Create(nil); conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+FileName+';Extended Properties=excel 8.0;Persist Security Info=False'; conn.LoginPrompt := False; conn.Connected := True; _TableList := TStringList.Create; conn.GetTableNames(_TableList); //SetLength(arr1,9); AData := TStringList.Create; if _TableList.Count > 0 then begin _TableName := StringReplace(_TableList.Strings[0], '$', '', [rfReplaceAll]); //+'$' qry1.Connection := conn; qry1.Close; qry1.sql.Text := Format(cSql,[_TableName]); qry1.Open; DSXLS.DataSet := qry1; //GridXLS.Datasource :=DSXLS; end; k := 0;i := 0; if qry1.RecordCount>0 then begin while not qry1.Eof do begin AData.Add(qry1.Fields[0].AsString); str1 := AData.Strings[0]; AData.Add(qry1.Fields[1].AsString); AData.Add(qry1.Fields[2].AsString); AData.Add(qry1.Fields[3].AsString); AData.Add(qry1.Fields[4].AsString); AData.Add(qry1.Fields[5].AsString); AData.Add(qry1.Fields[6].AsString); AData.Add(qry1.Fields[7].AsString); AData.Add(qry1.Fields[8].AsString);// arr1[0] := qry1.Fields[0].Value;// arr1[1] := qry1.Fields[1].Value;// arr1[2] := qry1.Fields[2].Value;// arr1[3] := qry1.Fields[3].Value;// arr1[4] := qry1.Fields[4].Value;// arr1[5] := qry1.Fields[5].Value;// arr1[6] := qry1.Fields[6].Value;// arr1[7] := qry1.Fields[7].Value;// arr1[8] := qry1.Fields[8].Value; if (AData.Strings[0]<>'合计1')and(AData.Strings[0]<>'总计2')and(AData.Strings[0]<>'总计3') then begin _Index := cxgrdtblvw1.DataController.AppendRecord; cxgrdtblvw1.DataController.Values[_Index,0] := AData.Strings[0]; cxgrdtblvw1.DataController.Values[_Index,1] := AData.Strings[1]; cxgrdtblvw1.DataController.Values[_Index,2] := AData.Strings[2]; cxgrdtblvw1.DataController.Values[_Index,3] := AData.Strings[3]; cxgrdtblvw1.DataController.Values[_Index,4] := AData.Strings[4]; cxgrdtblvw1.DataController.Values[_Index,5] := AData.Strings[5]; cxgrdtblvw1.DataController.Values[_Index,6] := AData.Strings[6]; cxgrdtblvw1.DataController.Values[_Index,7] := AData.Strings[7]; cxgrdtblvw1.DataController.Values[_Index,8] := AData.Strings[8]; AData.Clear; k := k+1; Application.ProcessMessages; cxgrdtblvw1.DataController.Post; end else begin if Trim(str1)='合计1' then ShowMessage('1'); end; qry1.Next; end; cxgrdtblvw1.DataController.Post; showMessage(inttostr(k)); end;end;
这是一段通过ADO加载Execl在cxGrid显示的代码。其中第一行是‘合计1’‘总计2’‘总计3’的数据不导入,而我这段代码的问题在于我依旧在cxGrid中看到导出结果有‘合计1’‘总计2’‘总计3’的数据,打了断点也看到值一样没有差错。
最后想到了原来是StringList中的String是有空格的。所以debug的时候’合计1’<>’合计1’的结果是true,实际上是’合计1 ‘<>’合计1’.
阅读全文
0 1
- delphi 中StringList中遇到的坑
- Delphi中stringlist分割字符串的用法
- delphi 按给定字符分割整个字串到StringList中
- Delphi TstringList Stringlist的特殊用法
- 在StringList中增加类对象!
- Delphi 编程中遇到的怪问题
- delphi 开发过程中遇到的问题。
- Delphi的MDI编程中遇到的一个奇怪问题
- 在DELPHI中你遇到过这样的问题吗?
- delphi 开发中遇到的DLL问题思考及解决方法
- delphi 开发中遇到的DLL问题思考及解决方法
- Delphi Dll插件窗体中遇到的各种问题
- STRINGLIST
- java中遇到的坑
- 开发中遇到的坑
- Scrapy中遇到的坑
- Storm中遇到的坑
- node中遇到的坑
- ty 1里输入内容,然后将输出显示到tty 2中
- Bootstrap-table中跨页记住checbox,返回时保留勾选状态
- 两个页面传数据的方法
- 域名解析产品——HTTPDNS使用教程
- String.format()方法使用说明 %[argument_index$][flags][width][.precision]conversion
- delphi 中StringList中遇到的坑
- Lucene学习总结之四:Lucene索引过程分析(4)
- 可以少写1000行代码的前端常用正则表达式
- CF742F,奇妙的计数题
- Maven优雅的添加第三方Jar包
- Java 关键字和保留字 -- JAVA 基础
- CCF 201604-2 俄罗斯方块
- loj #2003. 「SDOI2017」新生舞会(分数规划+费用流)
- IOS Error code