有一文件如下:
N2 M31
N4 G5
N6 C8
...........
N124 ......
现欲做一程序将文件读入,将其中N2 N4 N6...等删除,并将"M31 G5 C8" 用"M7"替换掉.
怎样才能实现???
请高手赐教!!!(最好能有程序~~~)不胜感激~~~~~~~~~!!!!!!!!!
N2 M31
N4 G5
N6 C8
...........
N124 ......
现欲做一程序将文件读入,将其中N2 N4 N6...等删除,并将"M31 G5 C8" 用"M7"替换掉.
怎样才能实现???
请高手赐教!!!(最好能有程序~~~)不胜感激~~~~~~~~~!!!!!!!!!
解决方案 »
- 如何将多个文本文件一次性读入SQL数据库
- 如何将数字字符串转换为日期格式?
- 大家能不能贴个例子啊!急求大家!
- 請問delphi7裡面有沒有toolbutton這樣的控件啊/
- 大虾进来看,不算复杂的问题。
- 请求数据库(这里有分!!!)
- 在此提个问题,请大家进来发言(在线)
- 有那种按扭组建支持,当我鼠标OVER,DOWN,……分别是一幅BMP图的组建?
- 生成的exe更名问题
- /*****************junglerover(灌木丛)的问题:为什么在ACTIVEX控件中不能使用普通FORM(TFORM)?*********************/
- Interface RTTI 当参数含有 class of class 时编绎不过,怎么解决?
- 请教一下DBChart组件的用法?
========================
有一文件如下:
N2 M31
N4 G5
N6 C8
...........
N124 ......
现欲做一程序将文件读入,将其中N2 N4 N6...等删除,并将"M31 G5 C8" 用"M7"替换掉.
怎样才能实现???
请高手赐教!!!(最好能有程序~~~)不胜感激~~~~~~~~~!!!!!!!!!
===================================
替换完成后,只剩下
M7
M7
M7
.
.
.M7
sl: TStringList;
i: integer;
begin
sl := TStringList.Create();
try
sl.LoadFromFile('file.txt');
for i := 0 to sl.Count - 1 do
begin
sl.Strings[i] := Copy(sl.Strings[i], Pos(' ', sl.Strings[i], MaxInt);
if sl.Strings[i] = 'M31' or sl.Strings[i] = 'G5' or sl.Strings[i] = 'C8' then
sl.Strings[i] := 'M7';
end;
sl.SaveToFile('file2.txt');
finally
sl.Free();
end;
end;
var
sl: TStringList;
i: integer;
begin
sl := TStringList.Create();
try
sl.LoadFromFile('file.txt');
for i := 0 to sl.Count - 1 do
begin
sl.Strings[i] := Copy(sl.Strings[i], Pos(' ', sl.Strings[i]), MaxInt);
if (sl.Strings[i] = 'M31') or (sl.Strings[i] = 'G5') or (sl.Strings[i] = 'C8') then
sl.Strings[i] := 'M7';
end;
sl.SaveToFile('file2.txt');
finally
sl.Free();
end;
end;
cuilj(一云忆水)兄理解错误了,我的文件中并不都是"M31 G5 C8"
只是将"M31 G5 C8"替换,其他的并不替换.
你的代码好象不能实现替换呀?我用的是D7.另外我想多个文件一起处理,怎样才能实现批处理???还请高手指点~~~~~~~~
改成
Copy(sl.Strings[i], Pos(' ', sl.Strings[i])+1, MaxInt)
应该就可以了
可以使用线程啊,在线程里执行上面的代码,这样就可以同时处理多个文件了。
sl.Strings[i] := 'M7';这句话我怎么改也不行啊?请高人继续指点一二.问题解决今晚就结帖~~~~~~~~~~~~~
sl: TStringList;
i: integer;
begin
sl := TStringList.Create();
try
sl.LoadFromFile('file.txt');
for i := 0 to sl.Count - 1 do
sl.Strings[i] := Copy(sl.Strings[i], Pos(' ', sl.Strings[i])+1, MaxInt);
for i := 0 to sl.Count - 1 do
begin
if (i+2)>(sl.Count-1) then break;
if sl.Strings[i] = 'M31' and sl.Strings[i+1] = 'G5' and sl.Strings[i+2] = 'C8' then
begin
sl.Strings[i] := 'M7';
sl.Strings[i+1].Delete;
sl.Strings[i+2].Delete;
end;
end;
sl.SaveToFile('file2.txt');
finally
sl.Free();
end;
end
sl.Strings[i+2].Delete;
??????????????????好象有问题吧~~~~~~~~~~~~~~~~~~~~~
var
sl: TStringList;
i: integer;
begin
sl := TStringList.Create();
try
sl.LoadFromFile('file.txt');
for i := 0 to sl.Count - 1 do
sl.Strings[i] := Copy(sl.Strings[i], Pos(' ', sl.Strings[i])+1, MaxInt);
for i := 0 to sl.Count - 1 do
begin
if (i+2)>(sl.Count-1) then break;
if (sl.Strings[i] = 'M31') and (sl.Strings[i+1] = 'G5') and (sl.Strings[i+2] = 'C8') then
begin
sl.Strings[i] := 'M7';
sl.Delete(i+1);
sl.Delete(i+1);
end;
end;
sl.SaveToFile('file2.txt');
finally
sl.Free();
end;
end;多谢各位的帮忙,这个问题到此为止,结帖了~~~~~~~~~~~~~~~~~~~~~~~~~~~~`^_^