| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4220 人关注过本帖, 1 人收藏
标题:请教.CSV记录文件的读取问题
取消只看楼主 加入收藏
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
结帖率:94.74%
收藏(1)
已结贴  问题点数:100 回复次数:7 
请教.CSV记录文件的读取问题
EE.rar (1.23 KB)
我有一个.CSV文件,数千行,且实时增加,每行长度一样,想读取其中的数据,再利用第二列的数据画图线。
我的方法是读取最后一行数据,然后存入数组,可是读取不出数据望高手指教。
数据格式如下:(附件有一.CSV文件)
 1278450011;1.25860000
 1278450012;1.25850000
 1278450015;1.25860000
 1278450016;1.25850000
 1278450018;1.25860000
 1278450031;1.25850000
 1278450036;1.25860000
 1278450036;1.25850000
 1278450037;1.25860000
 1278450039;1.25870000
 1278450045;1.25860000
两数据中间是分号,也可以是空格。
我的读取代码如下:
type
  jilu=record
  shi:longint;
  fenhao:string[1];
  jia:double;
  end;


var
  ffile: file of jilu   ;
  d:jilu;

procedure TForm1.Button1Click(Sender: TObject);
begin
assignfile(ffile,'E:\EE.csv');
reset(ffile);
Seek(ffile,FileSize(ffile) div (21)-1);//将指针移到最后一行,每行的字符数是21
read(ffile,d);
 ShowMessage(d.shi);
 listbox1.Items.Add('shi:'+d.shi);
 listbox1.Items.Add('fenhao:'+d.fenhao);
 listbox1.Items.Add('jia:'+d.jia);
CloseFile(ffile)  ;
end;
搜索更多相关主题的帖子: CSV 记录 文件 
2010-07-10 21:34
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
收藏
得分:0 
多谢回复,关于行数的问题,我用文件的字符总数手工除了一下.CSV文件的总行数,得出一个记录有24个字节,不是21.
你的程序能否加上控件的添加说明,本人初学,不知mmo1是哪一个控件,我只改了button1的name和caption为btn1。
另外,如定义正确的结构,应该怎样做?
2010-07-11 00:12
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
收藏
得分:0 
请问一下,用上述方法读写和用流方法读写及数据库方式,哪一个快一些?
谢谢
2010-07-11 09:41
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
收藏
得分:0 
控件已装好。
2010-07-11 09:52
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
收藏
得分:0 
试过了,又调了参数试,OK
2010-07-11 09:57
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
收藏
得分:0 
我将for I := 0 to CsvData.Count -1 do
    begin
      mmo1.Lines.Add(Pchar(CsvData.ValueFromIndex[I]) + 11);
.....
改成了
      mmo1.Lines.Add(Pchar(CsvData.ValueFromIndex[CsvData.Count -1]));

来读取最后一行,结果是1278685775;1.26960000和原记录一样
现在想将结果从分号处分割成前后两个数据,分别存入两个数组array1[1..20]和
array2[1..20]的array1[1]、array2[1]   能否帮我调整一下。
多谢
2010-07-11 10:23
yalewang
Rank: 2
等 级:论坛游民
帖 子:125
专家分:35
注 册:2010-4-15
收藏
得分:0 
对不起,我表述的不清楚,是将记录分成两部分存入两个字符串数组。(我以后通过其他方法保存后20个记录的值。)
对指针、字节(字符)数组操作、转换我很难理解。
var
array1:array[1..20] of string;
array2:array[1..20] of string;


[ 本帖最后由 yalewang 于 2010-7-12 09:21 编辑 ]
2010-07-12 09:19
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
快速回复:请教.CSV记录文件的读取问题
数据加载中...
 
   



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

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