![]() |
MusicBrainz abfragen per musicbrainz.dll (siehe Bsp. Code)
Hallo zusammen,
ich möchte gerne die freie Musik-DB MusicBrainz abfragen um Meta-Infos zu bestimmten mp3 auf meiner HDD zu erhalten (z.B. Album, Interpret, Cover Pic, etc.) MusicBrainz bietet auf der Website ein Client SDK an - nur leider nicht für Delphi. Auch das Wiki enthält nur Infos/Header-Files zur Abfrage per C++. Der Service kann über eine DLL "angerufen" werden. Übergibt man im einen "Fingerabdruck" (Bitprint) eines MP3s das sich in der MusicBrainz-DB befindet, bekommt man die besagten Infos zurück. Auf der Mailingliste hab ich folgenden Delphi Code gefunden:
Delphi-Quellcode:
type TMusicBrainz = pointer;
const MBDll='musicbrainz.dll'; implementation function CreateMB:TMusicBrainz; external MBDll name 'mb_New'; procedure DestroyMB(var MB:TMusicBrainz); external MBDll name 'mb_Delete'; procedure GetVersion(MB:TMusicBrainz;Minor,Major,Rev:pointer); external MBDll name 'mb_GetVersion'; procedure TForm1.Button1Click(Sender: TObject); var Lib:integer; MB:TMusicBrainz; Info:TBitprintInfo; FileName:array[0..255] of char; P1,P2,P3:pointer; a,b,c,d,e:integer; begin MB:=CreateMB; P1:=@a; P2:=@b; P3:=@c; GetVersion(MB,P1,P2,P3); DestroyMB(MB); end; Geht nur leider nicht :/ Kann mir vllt jemand sagen, wie ich die DLL richtig einsetze? Die DLL gibts hier: ![]() C# language bindings hier: ![]() Dank Euch!! cip |
Re: MusicBrainz abfragen per musicbrainz.dll (siehe Bsp. Cod
Die Richtige definition für die mb_GetVersion lautet wie folgt:
Delphi-Quellcode:
stdcall ist wichtig, da es sich um eine C-Bibleothek handelt. Desweiteren Var-Parameter, da diese ja verändert werden (also der Zeiger auf die Variable gebraucht wird);
function mb_GetVersion(mb:TMusicbrainz;var min,maj,rev:integer):integer;stdcall;external dllname;
Wenn du es mit folgendem code probierst, sollte es gehen:
Delphi-Quellcode:
Einziges Problem dabei ist, das der den mb_Delete am ende nicht mag.
const
thedll='libmusicbrainz.dll'; type TMusicbrainz = pointer; procedure mb_Delete(mb:TMusicbrainz);stdcall;external thedll; procedure mb_GetVersion(mb:TMusicbrainz;var minor,major,rev:integer);stdcall;external thedll; function mb_New():TMusicbrainz;stdcall;external thedll; : var mb : TMusicbrainz; erg,min,maj,rev : integer; begin mb := mb_New; erg := mb_GetVersion(mb,min,maj,rev); if (erg <> 0) then showmessage(format('Version: %2d.%2d.%2d',[min,maj,rev])) else showmessage('Fehler !'); mb_Delete(mb:TMusicbrainz); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz