As i understan is it faster to add a mmd file to all audiofile insted to let mAirlist read the audiofile is that right? (I trying to load a m3u file with 800 items. No good idea. But the program dident hang. Thats good.)
Did mAirlist care about <?xml version="1.0" encoding="ISO-8859-1"?> header in xml files can i add other comments? As Which tags are valid?
Can i add any type off in the file? Can i when the file is loding see the Attribut without to open the property dialog?
When there’s no MMD (or special mAirList ID3 tag) present, and the file isn’t registered in any connected mAirListDB either, mAirList will open the file to gather the required information. In particular, it will read the native file tags, and also perform Auto Cue (if enabled) to determine the Cue In, Fade Out and Cue Out points according to the dB threshold values you specified in the configuration. Auto Cue is what makes the file import (or M3U import, which is basically the same thing) so slow. You can still turn it off in the config, but then you won’t have any Fade Out points, and thus no crossfades.
If you plan to import M3U files alot, you should either create an MMD file for each of your files, or simply use a mAirListDB database and import all files into it.
mAirList (more precisely: the XML library it uses) should be able to parse any well-formed XML file including encoding headers and comments. As mentioned earlier, there’s no documentation or schema for the XML format. mAirList won’t validate the input file either, it will just ignore tags that it doesn’t know about.
You can add as many Attributes as you like, it’s a simple name->value mechanism.
You’re not supposed to type in the file name manually. Just click the “Create new database” button, and a file dialog will pop up and let you choose one.
I assume TSaveDialog.Execute returns false for some odd reason. But the code is so trivial, what could be wrong about it?
procedure TDBLiteConfigForm.btnNewClick(Sender: TObject);
begin
with sdNewInstance do begin
Filename := GetRootFolder + 'database.db';
if Execute then begin
edFilename.Text := Filename;
if FileExists(edFilename.Text) then
DeleteFile(edFilename.Text);
DoSetupDatabase;
end;
end;
end;
object sdNewInstance: TSaveDialog
DefaultExt = 'db'
Filter = 'Database Files (*.db)|*.db'
Options = [ofOverwritePrompt, ofHideReadOnly, ofEnableSizing]
Title = 'Create New mAirListDB Instance'
Left = 18
Top = 74
end
You can check what GetRootFolder returns on the new Advanced -> Data Folders page in the config app. It’s called “root data folder” there.
The structure (schema) is created as part of the “create new database” process (that’s what’s inside the DoSetupDatabase method).
I have created and uploaded an “empty” database you can use as a workaround: http://www.mairlist.com/download/tmp/empty.db
(download and save it and use “open existing database file” to connect to it). Note that it needs the latest snapshot, but I think you already did so.
Could it be that there is a missing (or extra) \ character in that string somewhere?
For example, if GetRootFolder returns a string without a trailing \ character, then Filename will be wrong; and from my limited knowledge of Delphi (being a VB programmer), I would guess that sdNewInstance would ‘fail’ and thus return False without displaying the dialog for more than a few mS?