小菜鸟请各位大侠帮助:
现在有两个文本
其中1.txt
内容如下
1100  3   p
1107  8   r
1102  6   0
1109 10   g第二个文本是EXCEL文本,
列A       列B
100101    1100003
100102    1102006
100103    1107008
100104    1109010
现要实现如下需求:
读1.txt文本,根据其1~7个字符(例第一行:1100  3(注:其中空格用0补齐,补齐后为:1100003))与excel文本中的列B相对应,选出excel文本中的列A,然后将列A写入2.txt文本,同时也将1.txt中的字母也写到2.txt对应的行中
不知道我的描述是否清楚:
以上的例子就是要重新生成如下的文本:
100101   p
100103   r
100102   o
100104   g望个路高手赐教,小菜鸟不圣感激~

解决方案 »

  1.   

    这个问题包括很多个内容,
    其实楼主应该问清楚一点在哪个地方有困难了。难道要回复者把整个程序写出来给你。1.读文本文件应该没问题吧。处理方法很多,用File,或TFileStream....
    2.读Excel文件,也有很多方法,可以用createcomobject,。我这里建议用ado来访问。因为这样读取过来到dataset,查找替换比较方便。
    3.最后写到文本也很容易处理了。没有代码,只是对这个问题的想法。
      

  2.   

    步骤大体如下:0. 用下列语句同时打开1.txt,2.txt两个文本文件:
       assignfile(f1,'1.txt');
       reset(f1);
       assignfile(f2,'2.txt');
       reset(f2);1. 用read(f1,s1)语句,从1.txt中一行行读入字符串s1,   第一次读第一行:  1100  3   p   即s1 = '1100__3___p'; (为了清楚,我把空格改写为下划线)2. 用下面语句从s1中取出前1-7个字符组成的子串:   h1:=copy(s1,1,7);          //第一次读出后,h1='1100__3'   并用下面语句从s1中取出最后一个字母,放在t1:
       
       t1:=copy(s1,length(s1),1); //第一次读出后,t1='p'
      3. 组织循环,查h1出现在2.txt的第几行:
       repeat
         readln(f2,s2);      //第一次读出后,s2='100101____1100003'     //将s2的头尾两部分取出来,放在h2,t2:
         h2:=copy(s2,1,7);   //第一次读出后,h2='100101'
         t2:=copy(s2,11,7);  //第一次读出后,t2='1100003'4. 比较t2是否等于h1, 如果是,则将h2与t1两个子串连接起来:
        
         str2:=h2+t1;
     
         并将done置为true     
         
       until eof(f2) or done;5. closefile(f1);
       closefile(f2);