读写TXT文件,帮帮忙,谢谢啊。 ( 积分: 200 )

  • 主题发起人 主题发起人 fown
  • 开始时间 开始时间
F

fown

Unregistered / Unconfirmed
GUEST, unregistred user!
设有一个1.txt内容如下,都是一些MID文件信息:

In,F:/AudioBBCALL/Audio_1205/Project/MENU_TV.MID,:
-->,Instrument(s),:,10,24,33,45,48,65,71,
-->,Drum(s),:,36,38,54,63,64,

In,F:/AudioBBCALL/Audio_1205/Project/OPEN.MID,:
-->,Instrument(s),:,00,10,96,

In,F:/AudioBBCALL/Audio_1205/Project/PAINTER.MID,:
-->,Instrument(s),:,30,33,45,48,71,114,
-->,Drum(s),:,36,38,42,46,49,54,63,64,65,66,

这里面有一堆数字,要把这堆数字整理出来,变为这样的格式:
{MID的文件名(不带后缀),Instrument个数,Drum个数(没有的话为0),{Instrument数组},{Drum数组(没有的话,这里为空)}},

所以上面的1.txt要生成下面这个文件2.txt:

{MENU_TV, 7, 5, {10,24,33,45,48,65,71},{36,38,54,63,64}},
{OPEN, 3, 0, {00,10,96}, {}},
{PAINTER, 6, 10, {30,33,45,48,71,114}, {36,38,42,46,49,54,63,64,65,66}},


大家帮帮忙,谢谢谢。
 
用combobox1.items这个属性取出来,然后再慢慢的判断是不是数字
 
就是个字符串的处理, 自己动手写吧, 规律很明显, 没有捷径.
 
多发点时间,不是太难
 
各位兄弟,两百分可以接受了吧,可怜可怜我啦。
我还有很多事情要处理的,这三天都没合眼了,好心人帮帮忙。
 
加油,大家帮忙。
 
考考 你的基本功了。
 
我空点,帮你试试
function GetFileName(S: string): string;
begin
Result := ExtractFileName(Copy(S, 4, Length(S) - 9));
end;

type
TRInfo = record
I: Integer;
S: string;
end;

function FormatAStr(S: string): TRInfo;
begin
Result.S := '{}';
Result.I := 0;
if S = '' then Exit;
with TStringList.Create do
try
CommaText := S;
Delete(0);
Delete(0);
Delete(0);
Delete(Count - 1);
Result.S := '{' + CommaText + '}';
Result.I := Count;
finally
Free;
end;
end;

function FormatAStrs(Strs: TStringList): string;
var
A, B: TRInfo;
begin
while Strs.Count < 3 do
Strs.Add('');
A := FormatAStr(Strs[1]);
B := FormatAStr(Strs[2]);
Result := Format('{%s,%d,%d,%s,%s}', [GetFileName(Strs[0]), A.I, B.I, A.S, B.S]);
end;

procedure FormatStrs(Source, Dest: TStrings);
var
I: Integer;
Strs: TStringList;
begin
Dest.Clear;
Strs := TStringList.Create;
try
for I := 0 to Source.Count - 1 do
if Source <> '' then
begin
if Source[1] = 'I' then
begin
Dest.Add(FormatAStrs(Strs));
Strs.Clear;
end;
Strs.Add(Source);
end;
Dest.Add(FormatAStrs(Strs));
finally
Strs.Free;
end;
if Dest.Count > 1 then
Dest.Delete(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//Memo1.Lines.LoadFromFile('1.txt');
FormatStrs(Memo1.Lines, Memo2.Lines);
//Memo2.Lines.SaveToFile('2.txt');
end;
 
谢谢你了,不过晚了一天,我已经用C写好了。你的就没时间试了。谢谢。结贴给分。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部