unit USource;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TDsatz =
RECORD
id, playcount : Integer;
pfad:
String[255];
Interpret, songname, listid :
String[80];
END;
Tmp3list =
class
private
items:
Array of TDsatz;
function GetCount: Integer;
public
procedure newdirlist(pfad :
String);
procedure addlist(neu : Tmp3list);
procedure listdircontent(Verzeichnis :
string;
var listenname:TStringlist);
property count: Integer
read GetCount;
end;
var usertime, guesstime, maxpoints : Integer; sollid3tag : Boolean; kompletteliste : tmp3list;
implementation
procedure Tmp3list.newdirlist(pfad :
String);
var liste,tempdirlist, fertigtemp : TStringlist; akt :
String; x : Integer;
begin
x := 0 ;
fertigtemp := TStringlist.Create;
liste := TStringlist.Create;
listdircontent(pfad, liste);
while liste.Count > 0
do
begin
akt := liste.strings[x];
if extractfileext(akt) = '
.mp3'
then
fertigtemp.Add(akt)
else
if directoryexists(akt)
then
begin
tempdirlist := TStringlist.Create;
listdircontent(akt, tempdirlist);
liste.AddStrings(tempdirlist);
end;
liste.delete(x);
end;
setlength(items, fertigtemp.count);
for x := 0
to fertigtemp.count-1
do
begin
items[x].pfad := fertigtemp.Strings[x];
items[x].listid := pfad;
end;
end;
function tmp3list.getcount : Integer;
begin
result := length(items);
end;
procedure Tmp3list.listdircontent(Verzeichnis :
string;
var listenname:TStringlist);
var SR: TSearchRec;
begin
if Verzeichnis[length(Verzeichnis)]<>'
\'
then
Verzeichnis:=Verzeichnis+'
\';
if FindFirst(Verzeichnis+'
*.*',$3F,SR)=0
then begin
repeat
if (SR.
Name<>'
.')
and (SR.
Name<>'
..')
then
listenname.Add(Verzeichnis+SR.
Name);
until FindNext(SR)<>0;
FindClose(SR);
end;
end;
procedure tmp3list.addlist(neu : Tmp3list);
var tmp, tmp2,x : Integer;
begin
x := 0;
tmp := getcount;
tmp2 := neu.count;
setlength(items, tmp + tmp2);
for tmp := tmp
to tmp + tmp2
do
begin
items[tmp] := neu.items[x];
inc(x);
end;
end;
end.