Hallo,
in meinem Programm lese ich MP3-Dateien aus einem Folder und schreibe sie untereinander in eine ListBox.
Danach ermittle ich für jede MP3-Datei die ID3-Tags, und zwar mit dem Code den man unter
Delphi-Source finden kann. Dieser Code funktioniert auch einwandfrei.
Was ich nun tun will, ist für jede Datei einen Eintrag in einer Tabelle einer
Access-Datenbank anzulegen. Die
DB und die Tabelle habe ich in
Access selbst kreiert. Ich greife mit einer ADOConnection auf die Datenbank zu. Mittels ADOQuery und folgendem Code fülle ich dann die Tabelle namens 'tblID3':
Delphi-Quellcode:
for I := 0 to lbResults.Count - 1 do
begin
Read_ID3Tag(lbResults.Items[I]); //hier lese ich die ID3-Tags aus
ADOQuery1.SQL.Text := 'SELECT * FROM '+'tblID3'+' WHERE 0=1';
ADOQuery1.Open;
ADOQuery1.Append;
ADOQuery1['ListID'] := I;
ADOQuery1['ID'] := ID3Tag.ID;
ADOQuery1['Title'] := ID3Tag.Title;
ADOQuery1['Artist'] := ID3Tag.Artist;
ADOQuery1['Album'] := ID3Tag.Album;
ADOQuery1['Year'] := ID3Tag.Year;
ADOQuery1['Comment'] := ID3Tag.Comment;
ADOQuery1['Genre'] := ID3Tag.Genre;
ADOQuery1['Sample'] := ID3Tag.Sample;
ADOQuery1['Length'] := ID3Tag.Length;
ADOQuery1['Bits'] := ID3Tag.Bits;
ADOQuery1['Vers'] := ID3Tag.Vers;
ADOQuery1['Layers'] := ID3Tag.Layers;
ADOQuery1.Post;
end;
An und für sich funktioniert dies auch prächtig, NUR nicht jedesmal. Wenn ich jetzt mehrere MP3's in die Listbox schreiben lasse und dann bei einer nach der anderen die ID3-Tags auslese und sie dann in die Tabelle schreibe, habe ich bei vielen Einträgen nur Buchstabensalat... z.B. nur "UUUUUU" bei Stringfeldern oder "aaaaaaaaa".
Auffällig ist, dass es jedesmal bei den gleichen Files auftritt. Also dachte ich natürlich gleich "Fehler beim Auslesen der ID3-Tags". Allerdings habe ich den Code von
Delphi-Source mehrmals überprüft und die Zugriffe auf den Header etc. auch mit MP3-Header-Informationen aus dem Netz (z.B.
mp3-tech) überprüft - und da scheint echt alles zu passen.
Demzufolge glaube ich daran, dass ein Fehler beim Einfügen der Daten in die Tabelle unterläuft. Ist es vielleicht irgendeine Einstellung bei der ADOQuery-Komponente oder bei der ADOConnection? Ich hab' mich ehrlich gesagt noch nicht soviel mit
DB's in Delphi beschäftigt und bin deshalb auf dem Gebiet recht unerfahren, weswegen ich denke, dass ich ja irgendeine Kleinigkeit übersehen haben könnte.
Achja, was vielleicht noch wichtig ist: Ich bekomme beim Ausführen meines Programmes, sobald ich beginne, die Werte in die
DB zu schreiben, die Compilermeldung "Der schreibgeschützte Eigenschaftswert wurde nicht festgelegt". Ich kann dann allerdings auf "Continue" drücken und das Programm läuft ohne Problem weiter - bis halt eben diesen Buchstabensalat bei manchen Einträgen ausgenommen. Kann diese Meldung evtl. auf das eigentliche Problem hinweisen?
Ich hoffe ja jetzt dass es sich nur um einen typischen Anfängerfehler handelt - dann wird's nämlich recht leicht zu beseitigen sein *gg* In dem Sinne bin ich auf eure Antworten gespannt.
Grüße,
Sicho