Ik ben bezig met een programmatje voor het renamen van MP3s. Je voert een directory naam in waarin een compleet album staat, je copy-en-paste vanaf IMDB alle tracknamen in het programma, drukt op een knop en dan worden ze gerenamed. Tegelijkertijd haal ik ID3v1 en ID3v2 tags weg. En daar zit het probleem.
Deze procedure wordt uitgevoerd wanneer je op de 'OK' knop drukt.
Hoe kan het dan, dat 'ie die files allemaal (hoeveel het er ook zijn) in de eerste run (het eerste album) wel gewoon kan accessen, en de volgende run niet ?
Nou had ik als oplossing gebruikt, dat 'ie het hele programma reset op het moment dat ie alle procedures heeft doorlopen (dus na timerID3v2.Enabled:=True), maar dan blijkt dat ie de ID3v2 verwijdering niet toepast... die loopt blijkbaar te lang door, maar het programma reset al, dus stopt dat ID3v2 verwijderen ook. Mijn vraag: hoe kan ik zorgen dat ie pas het programma reset als ie klaar is met het verwijderen van de ID3v2 tags ?
Voor de mensen die er naar willen kijken heb ik de complete code geupload :
http://www.xs4all.nl/~julesvdz/quickrename.rar (32kb)
Deze procedure wordt uitgevoerd wanneer je op de 'OK' knop drukt.
Nou goed, deze code werkt gewoon goed. Als ik een album heb gerenamed, zijn alle ID3 tags weg, de namen zijn goed, playlistje erbij, perfect. Echter, als ik nu, zonder het programma opnieuw op te starten, nog een album ga doen, dan loopt 'ie vast, omdat 'ie bij het truncaten van een MP3 voor het verwijderen van de ID3v1, de file niet kan accessen.procedure TMainForm.buttonGoClick(Sender: TObject);
begin
if (editArtist.Text<>'') and (editTitle.Text<>'') and MatchingNumberOfFiles then
begin
//in de procedure RenameFiles worden alle bestanden gerenamed
//een array met de oude namen, een array voor de nieuwe namen
//ik gebruik daarin de ingebouwde functie RenameFile();
RenameFiles;
//de procedure GenrateM3UFile bouwt een tekstbestand met daarin
//alle nieuwe tracknamen, als gebruikt voor playlist in WinAmp
if checkM3U.Checked then
GenerateM3UFile;
//deze procedure verwijdert ID3 tags. zie beneden voor de
//gebruikte code.
if checkID3v1.Checked then
RemoveID3v1Tags;
//deze procedure laat een timer aflopen (5 seconden) omvervolgens
//te gaan kijken of er ID3v2 tags zijn, en deze verwijderen. er
//wordt een timer gebruikt om te
//zorgen dat er pas wordt gestart zodra de ID3v1 tags wegzijn
if checkID3v2.Checked then
timerID3v2.Enabled:=True;
end
else
MessageDlg('No changes made', mtError, [mbOK], 0)
end;
Hoe kan het dan, dat 'ie die files allemaal (hoeveel het er ook zijn) in de eerste run (het eerste album) wel gewoon kan accessen, en de volgende run niet ?
Nou had ik als oplossing gebruikt, dat 'ie het hele programma reset op het moment dat ie alle procedures heeft doorlopen (dus na timerID3v2.Enabled:=True), maar dan blijkt dat ie de ID3v2 verwijdering niet toepast... die loopt blijkbaar te lang door, maar het programma reset al, dus stopt dat ID3v2 verwijderen ook. Mijn vraag: hoe kan ik zorgen dat ie pas het programma reset als ie klaar is met het verwijderen van de ID3v2 tags ?
Voor de mensen die er naar willen kijken heb ik de complete code geupload :
http://www.xs4all.nl/~julesvdz/quickrename.rar (32kb)
[ Voor 15% gewijzigd door TheLunatic op 17-08-2003 20:40 ]
Mother, will they like this song?