F
flfqnet
Unregistered / Unconfirmed
GUEST, unregistred user!
有一给定的自定义数据库,数据结格已经知道
本人使用如下方法读取,但发现1-2W条的话是很快的,但大数量的就很慢
PSong_ZTData=^TSong_ZTData;
TSong_ZTData=record
Code:array[0..7] of char;
Name:array[0..39] of char;
Language:array[0..7] of char;
Num:array[0..1] of char;
Singer1:array[0..15] of char;
Singer1Code:array[0..3] of char;
Singer2:array[0..15] of char;
Singer3Code:array[0..3] of char;
Version:array[0..7] of char;
type1:array[0..7] of char;
type2:array[0..7] of char;
PinYin:array[0..7] of char;
ZhuYin:array[0..7] of char;
index:array[0..7] of char;
tutti:char;
bookman:array[0..9] of char;
charset:array[0..7] of char;
s_name:array[0..39] of char;
Source:array[0..5] of char;
quality:array[0..3] of char;
End;
Var
SongInfo_User_List:TList; //Usersong.dat
{************* 初始化 用户歌库 usersong.dat 歌曲信息**************}
Function TZTData.IniUserSongInfo(FilePath:string):Boolean;
Var
TS:TstringList;
iCount:integer;
SongInfoTemp:TSong_ZTData;
StrTemp:String;
_PSongInfoSong_ZTData;
Begin
Result:=False;
TS:=TstringList.Create ;
Try
if FileExists(FilePath) then
Begin
TS.LoadFromFile(FilePath);
TS.Sort ;//排序 (按歌曲编号排列)
for iCount:=0 to ts.Count -1 DO
Begin
StrTemp:= TS.Strings[icount];
SongInfoTemp:=PSong_ZTData(StrTemp)^;
Try
New(_PSongInfo);
_PSongInfo^:=SongInfoTemp;
SongInfo_User_List.Add(_PSongInfo);
Result:=True;
Except
End; //Try
End; //for iCount:=0 to ts.Count -1 DO
End;
EXCEPT
Result:=False;
End;
TS.Free ;
End;
//如果读取 15M 数据量的话,在P4 2.8G(超线程) 512M 情况下约要半分多钟
//如果是5M 数据量的话,一眨眼就好了
本人使用如下方法读取,但发现1-2W条的话是很快的,但大数量的就很慢
PSong_ZTData=^TSong_ZTData;
TSong_ZTData=record
Code:array[0..7] of char;
Name:array[0..39] of char;
Language:array[0..7] of char;
Num:array[0..1] of char;
Singer1:array[0..15] of char;
Singer1Code:array[0..3] of char;
Singer2:array[0..15] of char;
Singer3Code:array[0..3] of char;
Version:array[0..7] of char;
type1:array[0..7] of char;
type2:array[0..7] of char;
PinYin:array[0..7] of char;
ZhuYin:array[0..7] of char;
index:array[0..7] of char;
tutti:char;
bookman:array[0..9] of char;
charset:array[0..7] of char;
s_name:array[0..39] of char;
Source:array[0..5] of char;
quality:array[0..3] of char;
End;
Var
SongInfo_User_List:TList; //Usersong.dat
{************* 初始化 用户歌库 usersong.dat 歌曲信息**************}
Function TZTData.IniUserSongInfo(FilePath:string):Boolean;
Var
TS:TstringList;
iCount:integer;
SongInfoTemp:TSong_ZTData;
StrTemp:String;
_PSongInfoSong_ZTData;
Begin
Result:=False;
TS:=TstringList.Create ;
Try
if FileExists(FilePath) then
Begin
TS.LoadFromFile(FilePath);
TS.Sort ;//排序 (按歌曲编号排列)
for iCount:=0 to ts.Count -1 DO
Begin
StrTemp:= TS.Strings[icount];
SongInfoTemp:=PSong_ZTData(StrTemp)^;
Try
New(_PSongInfo);
_PSongInfo^:=SongInfoTemp;
SongInfo_User_List.Add(_PSongInfo);
Result:=True;
Except
End; //Try
End; //for iCount:=0 to ts.Count -1 DO
End;
EXCEPT
Result:=False;
End;
TS.Free ;
End;
//如果读取 15M 数据量的话,在P4 2.8G(超线程) 512M 情况下约要半分多钟
//如果是5M 数据量的话,一眨眼就好了