请教一段关于文件操作的代码,谢谢。
有一个文本文件 名字为 1.012 内容为
"12345 ", "品名 ", "001 ",0,0,13,14
"12345 ", "规格 ", "002 ",0,0,23,24
"12345 ", "商标 ", "003 ",0,0,33,34
"12346 ", "品名 ", "001 ",0,0,43,44
"12346 ", "规格 ", "002 ",0,0,53,54
"12346 ", "重量 ", "003 ",0,0,63,64
"12347 ", "品名 ", "001 ",0,0,73,74
"12347 ", "规格 ", "002 ",0,0,83,84
"12347 ", "商标 ", "003 ",0,0,93,94
.
.
.
大概1000多行
有一个ADOQuery *qu打开获取的记录集
f1 f2 f3 d1 d2 d3 d4
12345 品名 001 11 12 0 0
12345 规格 002 21 22 0 0
12345 商标 003 31 32 0 0
12346 品名 001 41 42 0 0
12346 规格 002 51 52 0 0
12346 重量 003 61 62 0 0
12347 品名 001 71 72 0 0
12347 规格 002 81 82 0 0
12347 商标 003 91 92 0 0
.
.
.
我想实现一下的操作
将1.012文件中,凡是第一列的名字+第三列的名字和qu数据集中的f1+f3对应的
将qu数据集中的d1和d2的数字替换掉1.012文件中对应第4和第5列中的0的数据
1.012文件替换后就变成
"12345 ", "品名 ", "001 ",11,12,13,14
"12345 ", "规格 ", "002 ",21,22,23,24
"12345 ", "商标 ", "003 ",31,32,33,34
"12346 ", "品名 ", "001 ",41,42,43,44
"12346 ", "规格 ", "002 ",51,52,53,54
"12346 ", "重量 ", "003 ",61,62,63,64
"12347 ", "品名 ", "001 ",71,72,73,74
"12347 ", "规格 ", "002 ",81,82,83,84
"12347 ", "商标 ", "003 ",91,92,93,94
.
.
.
请问这个该怎么弄?
[解决办法]
文本倒入到list里再比较
[解决办法]
用兩個TStringList就可以吧?第一個的設置為
TStringList *list1=new TStringList;
TStringList *list2=new TStringList;
list1-> LoadFromFile( "1.012 ");
list1-> Delimiter= ", ";
list1-> DelimitedText=list1-> Text;
list2-> LoadFromFile( "ADOQuery *qu ");
list2-> DelimitedText=list2-> Text;
for(int i=0,i <list1-> count;i=i+7)
{
第一列 list1-> Strings[i]; list2-> Strings[i]
第2列 list1-> Strings[i+1];list2-> Strings[i+1];
}
[解决办法]
只是做个简单的比较而已
把1.012的内容放在一个TStringlist中 如 sg1
把select出来的内容放在另一个TStringList中 如 sg2
对sg1中的数据进行循环取出来 到 sg2中进行比对
如 "12345 ", "品名 ", "001 ",0,0,13,14
12345,品名, 001, 11, 12, 0, 0
比对的时候用ExtractStrings把逗号抽出来 剩余内容放在一个StringList里 如下
TStringList *values_tmp1 = new TStringList();
ExtractStrings(TSysCharSet() < < '= ', TSysCharSet() < < ' ', sg1-> Strings[i].c_str(), values_tmp1);
TStringList *values_tmp2 = new TStringList();
ExtractStrings(TSysCharSet() < < '= ', TSysCharSet() < < ' ', sg2-> Strings[i].c_str(), values_tmp2);
比较values_tmp1和values_tmp2中的第0列和第2列是否相同
如果相同 那把sg1中的内容做修改
[解决办法]
上面写错了
ExtractStrings(TSysCharSet() < < '= ', TSysCharSet() < < ' ', sg1-> Strings[i].c_str(), values_tmp1);
换成
ExtractStrings(TSysCharSet() < < ', ', TSysCharSet() < < ' ', sg1-> Strings[i].c_str(), values_tmp1);
[解决办法]
fscanf(..., "%s,%s,%s,%d,%d,%d,%d\n ",...)取字符串
[解决办法]
上面的大哥
取字符串的话 比较是不是比较麻烦呢 还要向比较匹配的记录里插数据