非常实用和非常简单的问题,关于数据转换的问题(100分)

  • 主题发起人 主题发起人 anxf
  • 开始时间 开始时间
A

anxf

Unregistered / Unconfirmed
GUEST, unregistred user!
我想从文本中请取一些项目,然后,将这一些项目写入另一个文件中。
比如:ABCD^1234^4567^9999^2345^9876,取ABCD、4567写成另一个文件是4567 ABCD。
在第一个文件中,每行的项目的长度都不等,如第二行可能是1111111^888888^100000^99999^88880^123,
但是从第一个文件中取的第几项是固定的。请问高手,在DELPHI中如何实现?
我是一个初学者,最好能将源码写上,并能否讲清原理。
 
是不是太难了,还是分数太少了,高手!!高手!!高手在那里!!!!
 
给你一个思路,自己想想吧,不过总想要源码吧?
你的文本中不是有分隔符吗?自己用个循环从文本中读入,根据分隔符判断一下是第几项,合适的项就写入别一个文件。
 
不明白你说的问题。
如果是简单隔行取数并用相反顺序存放,那你只要知道读取txt文件的方法就可以了。
要点是确保你读取的文件中的字符有分隔符,该分隔符的作用只能是用来分隔项目的,
不能在其他情况下存在,否则需要对其他情况进行判断(如可用三个分隔符表示实际中
的一个分隔符号)。然后根据分隔符判断项目的起点和终点。
 
看是不是你想要的。
饿了,下网。
function GetStr(str : string;iInt : integer):string;
var
strTmp,strTemp : string;
i,iTmp,j : integer;
begin
iTmp := 0;
i := 0;
j := 1;
//str := 'ABCD^1234^4567^9999^2345^9876';
while i<length(str) do
begin
i := i+1;
if str='^' then
begin
iTmp := iTmp+1;
if iTmp = iInt then
begin
strTmp := copy(str,j,i-j);
break;
end
else
begin
j := i+1;
end;
end;
end;

// 反转字符串
setlength(strTemp,length(strTmp));
for i := length(strTmp) downto 1 do
begin
strTemp[length(strTmp)-i+1] := strTmp;
end;
result := strTemp;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
caption := getstr('ABCD^1234^4567^9999^2345^9876',strtoint(edit1.text)); //edit1.text 里是输入的第几项目
end;
 
一个字节一个字节地读取,碰到^就将前面读的保存下来,然后再继续读,判断
 
多人接受答案了。
 
后退
顶部