标题:请教.CSV记录文件的读取问题
只看楼主
东海一鱼
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:48
帖 子:757
专家分:4760
注 册:2009-8-10
得分:0 
procedure TForm1.btn1Click(Sender: TObject);
var
  CsvData: TStringList;
  Arry1,Arry2: array[0..20] of Char;                       //两个字符串数组,用来保存结果
begin
  CsvData:= TStringList.Create;

  try
    CsvData.LoadFromFile('d:\ee.csv');

    lstrcpyn(Arry1,PChar(CsvData.Strings[CsvData.Count - 1]),11);            //拷贝最后一行的前10个字符。
    lstrcpyn(Arry2,PChar(CsvData.Strings[CsvData.Count - 1]) + 11,11);       //拷贝最后一行的从第12个字符开始的10个字符。
    mmo1.Lines.Add(Arry1);                                                   //输出结果。
    mmo1.Lines.Add(Arry2);
  finally
    CsvData.Free;
  end;
end;

我昨天也犯了个大错误,Pchar(Pchar(CsvData.ValueFromIndex[I]) + 10)^:= char(0);这句本意是想将一行的原始数据中分,可犯了大忌。
因为这样会使delphi的字符串分配回收函数出错。

举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世未数数然也。
2010-07-12 13:01
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
得分:0 
你好棒,我运行了一下,完全读出了数据。第一个数据前多了一个空格。
加到定时器中完全同步。
lstrcpyn(Arry1,PChar(CsvData.Strings[CsvData.Count - 1]),12);   
lstrcpyn(Arry2,PChar(CsvData.Strings[CsvData.Count - 1]) + 12,11);
再次感谢。
2010-07-12 14:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-312593-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085958 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved