我想从NERO克碟软件的保存日志中提取我刻写歌曲列表,但是它是日志是二进制的大概如下
.NeroCDAV5.0.0..
................
................
.
.
....G:\Music\PrettyBoy.mp3...
.....PrettyBoy.mp3.....M2M...
后面是是些乱码了,然后又是歌曲列表
请问怎么把歌曲的全部名称读取出来,或者是知道该文件的结构的??
急呀,哪位知道帮帮我啊,先谢谢啦!!
.NeroCDAV5.0.0..
................
................
.
.
....G:\Music\PrettyBoy.mp3...
.....PrettyBoy.mp3.....M2M...
后面是是些乱码了,然后又是歌曲列表
请问怎么把歌曲的全部名称读取出来,或者是知道该文件的结构的??
急呀,哪位知道帮帮我啊,先谢谢啦!!
解决方案 »
- 怎样用DELPHI查找计算机硬件ID?
- 怎样用程序在SQL Server上新建数据库(.MDF文件,不是表),并能使用,因为我想做成象一些程序一样的有‘新建帐套’的工能?3Q
- 怎样安装组件?求救!!在线等候!!
- 如何在DEPHI的录入界面作成EXCEL式的录入方式??
- 不好意思哦~~有一个关于多线程的问题请教大家~~~~:-)
- 请问怎么样让窗口中的控件自动根据窗口的大小调整而调整,谢谢!
- 打印问题!(100分只给一人!!!!!!!解决后立刻给分!)
- 打印查询所得的数据的问题
- 如何编程表明是否选中DBGrid表格中的一条记录?求教!
- 请问Delphi中如何将CheckBox加入TreeView中?
- 有没有可能实现这样: 局域网内,从A计算机能检测到B 计算机的一个myapp.exe程式是否运行?
- 据说是微软的考题(出自<<世界500强试题>>)
http://sf.gds.tuwien.ac.at/n/nr/nragen/nragen.cpp
label G001;
var
fm : tfilestream;
c : char;
s : string;i:integer;
begin
fm ;= Tfilestream.create( 'xxx.nfo', fmopenread);
G001:
if fm.position + 2 > fm.size then exit;
fm.read( c, 1 );
while c <> '\' do
fm.read(c,1);
fm.position := fm.position -2;// "x:\"
fm.read( c,1); i := 1;s := inttostr(i);
while Byte(c) in [$30..$39, $61..$7a, $41..$5a,$5c] do
begin
s[i] := c; inc(i); fm.read( c,1);
end;
//得到了一个文件名,下面继续.......
listbox1.items.add(s);
goto G001;呵呵,GOTO,久违了~~~~~~~`
谢谢!
自己逻辑一下~~~~~`
s := '1';sExt = '.xxx';
while sExt<>'.mp3' do
begin
sExt[i] := c; s[j] := c; inc(i);inc(j); fm.read( c,1);if i>3 then i:=1;
end; goto G001;
i := 1;
s := '1';sExt = '.xxx';
while sExt<>'.mp3' do
begin
s[i] := c; inc(i);
fm.read( c,1);
if i>5 then sExt:=copy(s,length(s)-5,4);
end; goto G001;
var
c,c1:Char;
fm:TFileStream;
s,s2:string;
i:integer;
bnlFinded:Boolean;
begin
fm:=TFileStream.Create(aLogFile,fmOpenRead);
fm.Read(c,1);
while fm.Position<fm.Size do
begin
//找到的":\"位置,意味着一个文件名的开始
//首先查找":"符号
while c<>':' do
begin
fm.Read(c,1);
if fm.Position>=fm.Size then
begin
fm.Free;
Exit;
end;
end;
fm.Read(c1,1); //找到了":"之后,再读下一个字符是否是"\"字符
s2:=c+c1;
if s2<>':\' then
Continue; //找到了文件名的开始标志之后,回溯3个字符,即到了":"前面
fm.Position:=fm.Position-3;
fm.Read(c,1);
s:='';
bnlFinded:=False;
repeat
s:=s+c;
fm.Read(c,1);
if c='.' then
begin
s2:='';
for i:=1 to 4 do
begin
s2:=s2+c;
fm.Read(c,1);
end;
if s2='.mp3' then
begin
s:=s+s2;
if lst1.Items.IndexOf(s)<0 then //没有重复的返回-1
lst1.Items.Add(s);
bnlFinded:=True;
end
else
s:=s+s2;
end;
until bnlFinded;
end;
fm.Free;
end;
现在只解决了.nra格式的文件,但是我看了一下.nr3(也是NERO的保存日志,二进制文件)里面跟本就没有类似“X:\”的字符串,晕啊。 看来又有新问题啦,看来只分析文件结构啦,呵呵~~~