From 46bb010ca7c5eb04551c030105f9999ca80e472f Mon Sep 17 00:00:00 2001 From: tobigun Date: Sun, 8 Jun 2008 15:33:48 +0000 Subject: - set svn:eol-style to native - removed some svn:executable properties from non-executable files git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1144 b956fd51-792f-4845-bead-9b4dfca2ff2c --- ScoreConverter/USongs.pas | 320 +++++++++++++++++++++++----------------------- 1 file changed, 160 insertions(+), 160 deletions(-) (limited to 'ScoreConverter/USongs.pas') diff --git a/ScoreConverter/USongs.pas b/ScoreConverter/USongs.pas index a43ea61e..8f20f44f 100644 --- a/ScoreConverter/USongs.pas +++ b/ScoreConverter/USongs.pas @@ -1,160 +1,160 @@ -unit USongs; - -interface - -type - TScore = record - Name: string; - Score: integer; - Length: string; - end; - - TSong = record - Path: string; - FileName: string; - - Title: string; - Artist: string; - - Score: array[0..2] of array of TScore; - end; - - TSongs = class - LastCount: Integer; - Song: array of TSong; // array of songs - - function ReadHeader(var rSong: TSong): boolean; - procedure BrowseDir(Dir: string); // Browse a dir + subdirs for songfiles - end; - - var Songs: TSongs; - -implementation -uses Sysutils, UMainForm, Dialogs; - -function TSongs.ReadHeader(var rSong: TSong): boolean; -var - Line, Identifier, Value: String; - Temp: word; - Done: byte; - SongFile: Textfile; -begin - Result := False; - - - //Open File and set File Pointer to the beginning - AssignFile(SongFile, rSong.Path + rSong.FileName); - Reset(SongFile); - - //Read Header - Result := true; - - //Read first Line - ReadLn (SongFile, Line); - - if (Length(Line)<=0) then - begin - Result := False; - Exit; - end; - Done := 0; - //Read Lines while Line starts with # - While (Line[1] = '#') do - begin - Temp := Pos(':', Line); - - //Line has a Seperator-> Headerline - if (Temp <> 0) then - begin - //Read Identifier and Value - Identifier := Uppercase(Trim(Copy(Line, 2, Temp - 2))); //Uppercase is for Case Insensitive Checks - Value := Trim(Copy(Line, Temp + 1,Length(Line) - Temp)); - - //Check the Identifier (If Value is given) - if (Length(Value) <> 0) then - begin - - //----------- - //Required Attributes - //----------- - - //Title - if (Identifier = 'TITLE') then - begin - rSong.Title := Value; - - //Add Title Flag to Done - Done := Done or 1; - end - - //Artist - else if (Identifier = 'ARTIST') then - begin - rSong.Artist := Value; - - //Add Artist Flag to Done - Done := Done or 2; - end; - - end; - end; - - if not EOf(SongFile) then - ReadLn (SongFile, Line) - else - begin - Result := False; - break; - end; - - //End on first empty Line - if (Length(Line) = 0) then - break; - end; - - //Check if all Required Values are given - if (Done <> 3) then - begin - Result := False; - end; - - //And Close File - CloseFile(SongFile); -end; - -procedure TSongs.BrowseDir(Dir: string); -var - SR: TSearchRec; // for parsing Songs Directory - SLen: integer; -begin - if FindFirst(Dir + '*', faDirectory, SR) = 0 then begin - repeat - if (SR.Name <> '.') and (SR.Name <> '..') then - BrowseDir(Dir + Sr.Name + '\'); - until FindNext(SR) <> 0; - end; - FindClose(SR); - - if FindFirst(Dir + '*.txt', 0, SR) = 0 then begin - repeat - SLen := Length(Song); - SetLength(Song, SLen + 1); - - Song[SLen].Path := Dir; - Song[SLen].FileName := SR.Name; - - if (ReadHeader(Song[SLen]) = false) then SetLength(Song, SLen); - - //update Songs Label - if LastCount <> SLen div 30 then - begin - LastCount := SLen div 30; - MainForm.UpdateLoadedSongs(Dir, SLen); - end; - - until FindNext(SR) <> 0; - end; // if FindFirst - FindClose(SR); -end; - -end. +unit USongs; + +interface + +type + TScore = record + Name: string; + Score: integer; + Length: string; + end; + + TSong = record + Path: string; + FileName: string; + + Title: string; + Artist: string; + + Score: array[0..2] of array of TScore; + end; + + TSongs = class + LastCount: Integer; + Song: array of TSong; // array of songs + + function ReadHeader(var rSong: TSong): boolean; + procedure BrowseDir(Dir: string); // Browse a dir + subdirs for songfiles + end; + + var Songs: TSongs; + +implementation +uses Sysutils, UMainForm, Dialogs; + +function TSongs.ReadHeader(var rSong: TSong): boolean; +var + Line, Identifier, Value: String; + Temp: word; + Done: byte; + SongFile: Textfile; +begin + Result := False; + + + //Open File and set File Pointer to the beginning + AssignFile(SongFile, rSong.Path + rSong.FileName); + Reset(SongFile); + + //Read Header + Result := true; + + //Read first Line + ReadLn (SongFile, Line); + + if (Length(Line)<=0) then + begin + Result := False; + Exit; + end; + Done := 0; + //Read Lines while Line starts with # + While (Line[1] = '#') do + begin + Temp := Pos(':', Line); + + //Line has a Seperator-> Headerline + if (Temp <> 0) then + begin + //Read Identifier and Value + Identifier := Uppercase(Trim(Copy(Line, 2, Temp - 2))); //Uppercase is for Case Insensitive Checks + Value := Trim(Copy(Line, Temp + 1,Length(Line) - Temp)); + + //Check the Identifier (If Value is given) + if (Length(Value) <> 0) then + begin + + //----------- + //Required Attributes + //----------- + + //Title + if (Identifier = 'TITLE') then + begin + rSong.Title := Value; + + //Add Title Flag to Done + Done := Done or 1; + end + + //Artist + else if (Identifier = 'ARTIST') then + begin + rSong.Artist := Value; + + //Add Artist Flag to Done + Done := Done or 2; + end; + + end; + end; + + if not EOf(SongFile) then + ReadLn (SongFile, Line) + else + begin + Result := False; + break; + end; + + //End on first empty Line + if (Length(Line) = 0) then + break; + end; + + //Check if all Required Values are given + if (Done <> 3) then + begin + Result := False; + end; + + //And Close File + CloseFile(SongFile); +end; + +procedure TSongs.BrowseDir(Dir: string); +var + SR: TSearchRec; // for parsing Songs Directory + SLen: integer; +begin + if FindFirst(Dir + '*', faDirectory, SR) = 0 then begin + repeat + if (SR.Name <> '.') and (SR.Name <> '..') then + BrowseDir(Dir + Sr.Name + '\'); + until FindNext(SR) <> 0; + end; + FindClose(SR); + + if FindFirst(Dir + '*.txt', 0, SR) = 0 then begin + repeat + SLen := Length(Song); + SetLength(Song, SLen + 1); + + Song[SLen].Path := Dir; + Song[SLen].FileName := SR.Name; + + if (ReadHeader(Song[SLen]) = false) then SetLength(Song, SLen); + + //update Songs Label + if LastCount <> SLen div 30 then + begin + LastCount := SLen div 30; + MainForm.UpdateLoadedSongs(Dir, SLen); + end; + + until FindNext(SR) <> 0; + end; // if FindFirst + FindClose(SR); +end; + +end. -- cgit v1.2.3