Eine Klassenbibliothek (Active Template Library) zum Empfangen und Senden von CD-Daten.
(C) 1999-2002 Big 3 Software, Gebr. Schmitz GbR
Einleitung
Versionsgeschichte
Klassenbibliothek
Fehlercodes
Beispiel
Copyrighthinweise und Nutzungsbedingungen
Das CD-Archiv wurde Anfang 1999 entwickelt. Es handelt sich hierbei um ein ehrgeiziges und neues Projekt mit dem Ziel, ein großes Online CD-Archiv aufzubauen. Dieses CD-Archiv sollte für jedermann zugänglich sein.
Im Laufe der Zeit entwickelte sich ein CD-Archiv, welches täglich mehr CDs enthielt. Zur Zeit (Stand August 2001) befinden sich ca. 47000 CDs in der Datenbank. und täglich kommen weitere CDs hinzu.
Mit dieser offenen Programmierschnittstelle ist es nun möglich, von einem Programm aus auf diese Datenbank zuzugreifen. Hiermit haben Entwickler nunmehr die Möglichkeit, in Ihre eigenen Programm einfach auf eine große Anzahl von CD-Informationen zuzugreifen.
Datum | Version | Änderungen |
31.01.2002 | 1.1 | - Neues Feld "Copyright" in der ICDData Klasse. - Neues Feld "Aufnahmejahr" für die CDs und die Lieder in der ICDData Klasse. - Kompiliert mit Visual C++ 7.0 (.Net). |
27.08.2001 | 1.01 | - Der letzte Parameter der Open()-Methode war ein DWORD
(unsigned long), womit Visual Basic Probleme hatte. Er ist nun ein
normaler long Datentyp. - IsOpened() lieferte immer TRUE zurück. - Rückgabewert von ReceiveCD() ist jetzt richtig dokumentiert. |
25.08.2001 | 1.0 | - Erste endgültige Version released. - Kleinere Bugfixes und diverse Änderungen an der Schnittstelle. |
22.08.2001 | 0.9 Beta 2 | - Die CDArchive-Klassenbibliothek ist nun ein Active Template Library (ATL). Dadurch ist es möglich, die Bibliothek von jeder COM/OLE-fähigen Programmiersprache (VC, VB, Java, Delphi, etc.) zu benutzen. |
08.07.2001 | 0.9 Beta 1 | - Erste öffentliche Version zum Test freigegeben. |
Hier erhalten Sie einen Überblick über die Schnittstellen dieser Klassenbibliothek. Damit Sie diese Klassenbibliothek benutzen können, muss sie im System registriert werden. Benutzen Sie hierzu den Befehl "regsvr32 cdarchive.dll" oder registrieren Sie die DLL über ein Setup-Programm (z.B.: Installshield). Falls Sie die DLL aus einem Programm heraus registrieren möchten, starten Sie die Funktion DllRegisterServer() aus der cdarchive.dll.
Hier erhalten Sie einen ausführlichen Überblick über alle Methoden und Strukturen der CDArchive Klassenbibliothek.
Open()
Close()
IsOpened()
SetUser()
ReceiveCD()
SendCD()
Info()
GetLastError()
GetLastErrorMessage()
Liefert TRUE zurück, wenn die Verbindung zum angegebenen Server erfolgreich hergestellt wurde. Tritt ein Fehler auf, wird FALSE zurückgeliefert. Die genaue Fehlerursache kann durch Aufruf von GetLastError() und GetLastErrorMessage() ermittelt werden.
sServer
Die URL des CD-Archiv Servers (z.B. "www.cdarchiv.de"). |
sProxy
Gibt die URL eines Proxy-Servers an, der für eine HTTP-Verbindung notwendig ist. Falls kein Proxy-Server benötigt wird, kann dieser Parameter NULL oder "" (leerer String) sein. |
lProxyPort
Der Port des Proxy-Servers. Nur notwendig, wenn auch ein Proxy-Server angegeben wurde (siehe szProxy). Dieser Parameter wird sonst ignoriert. |
lFlags
Reserviert für zukünftige Erweiterungen. Muss 0 sein. |
Stellt eine Verbindung zum angegebenen CD-Archiv Server her. Die Verbindung muss mit der Methode Close() geschlossen werden, wenn sie nicht mehr benötigt wird.
Liefert TRUE zurück, wenn die Verbindung zum angegebenen Server erfolgreich geschlossen wurde. Tritt ein Fehler auf, wird FALSE zurückgeliefert. Die genaue Fehlerursache kann durch Aufruf von GetLastError() und GetLastErrorMessage() ermittelt werden.
-
Schließt die aktive Verbindung zu einem CD-Archiv Server.
Liefert TRUE zurück, wenn eine Verbindung zum einem CD-Archiv Server hergestellt wurde (also aktiv ist); ansonsten FALSE.
-
Überprüft, ob eine Verbindung zu einem CD-Archiv Server besteht.
-
sUser
Der Benutzername für die Verbindung zum CD-Archiv Server. |
sPassword
Das Password für die Verbindung zum CD-Archiv Server. |
Diese Methode muss aufgerufen werden, bevor die Methoden ReceiveCD() oder SendCD() ausgeführt werden. Benutzen Sie hierzu die Daten, die Sie für die Verbindung auf den CD-Archiv Server erhalten haben. Der Benutzername und das Password werden erst dann überprüft, wenn Sie eine der Funktionen ReceiveCD() oder SendCD() aufrufen. Sie erhalten dann eine entsprechende Fehlermeldung.
Falls Sie noch kein Benutzerkonto besitzen, füllen Sie bitte das Anmeldeformular auf dem CD-Archiv Server (www.cdarchiv.de) aus. Sie erhalten dann kostenlos ein Benutzerkonto, welches Sie für die Benutzung des CD-Archiv Servers benötigen..
Liefert CDARCHIV_CD_FOUND zurück, wenn die CD gefunden wurde oder CDARCHIV_CD_NOT_FOUND, wenn sie nicht gefunden wurde. Falls ein Fehler auftritt, wird CDARCHIV_ERROR zurückgeliefert. Die genaue Fehlerursache kann durch Aufruf von GetLastError() und GetLastErrorMessage() ermittelt werden.
sIdentity
Der eindeutige Nummer (ID) der eingelegten CD. Dieser Wert kann sehr einfach durch den Aufruf einer bestimmten MCI-Funktion (Microsoft Control Interface) ermittelt werden. Siehe hierzu auch dieses Beispiel. |
CDData
Falls die CD im CD-Archiv gefunden wurde, ist diese Klasse mit den CD-Daten gefüllt. Siehe hierzu auch die Beschreibung der ICDData-Klasse. |
Sucht die CD mit der angegebenen eindeutigen Nummer (ID) im aktuell geöffneten CD-Archiv. Vorher muss die Methode SetUser() abgerufen worden sein.
Rückgabewert | Bedeutung |
CDARCHIV_UPLOAD_RESULT_OK | Die CD wurde erfolgreich in das CD-Archiv übertragen. |
CDARCHIV_UPLOAD_RESULT_CD_EXISTS | Die CD ist bereits im CD-Archiv vorhanden. Rufen Sie die Methode erneut auf und setzen Sie den Parameter bUpdateExisting auf TRUE. |
CDARCHIV_ERROR_UPLOAD_ERROR | Beim Übertragen der CD ist ein Fehler aufgetreten. Die genaue Fehlerursache kann durch Aufruf von GetLastError() und GetLastErrorMessage() ermittelt werden. |
CDData
Die CD-Daten, die in das CD-Archiv übertragen werden sollen. Bitte beachten Sie, dass es einige Pflichtfelder gibt. |
bUpdateExisting
Setzen Sie diesen Parameter auf TRUE, wenn Sie eine bereits vorhandene CD im CD-Archiv mit neuen (bzw. korrigierten) Informationen überschreiben möchten. Wenn bUpdateExisting FALSE ist, wird die CD nur übertragen, wenn sie noch nicht vorhanden ist. |
Überträgt eine CD mit den angegebenen CD-Daten in das CD-Archiv.
Liefert TRUE zurück, wenn die Informationen erfolgreich ausgelesen wurden. Falls ein Fehler auftritt, wird FALSE zurückgeliefert. Die genaue Fehlerursache kann durch Aufruf von GetLastError() und GetLastErrorMessage() ermittelt werden.
lNumberOfCDs
Enthält nach dem Aufruf die Anzahl der CDs, die sich zur Zeit im CD-Archiv befinden. |
dtLastModified
Enthält nach dem Aufruf das Datum und die Uhrzeit der letzten Änderung des CD-Archiv im Format "DD.MM.YYYY HH:MM:SS". |
Liefert Informationen über das aktuelle CD-Archiv zurück.
Liefert den zuletzt aufgetretenen Fehler zurück. Eine genaue Fehlerauflistung finden Sie im Kapitel Fehlercodes.
-
-
Liefert den zuletzt aufgetretenen Fehler im Klartext zurück. Eine genaue Fehlerauflistung finden Sie im Kapitel Fehlercodes.
-
Beachten Sie bitte, dass nicht für jede Fehlermeldung eine erläuternde Beschreibung zurückgeliefert wird. In diesem Falle wird ein leerer String zurückgeliefert.
Diese Klasse beinhaltet alle Informationen zu einer CD.
Get-Methode | Set-Methode | Beschreibung |
String GetIdentity() | void SetIdentity([in] String sIdentity) | Die Identity der CD. |
String GetArtist() | void SetArtist([in] String sArtist) | Der Interpret der CD. |
String GetTitle() | void SetTitle([in] String sTitle) | Der Titel der CD. |
BOOL GetSampler() | void SetSampler([in] BOOL bSampler) | TRUE, wenn es sich bei der CD um einen Sampler handelt (für jeden Track einen eigenen Interpreten), ansonsten FALSE. |
long GetTotalLength() | void SetTotalLength([in] long lTotalLength) | Die Gesamtlänge der CD in Millisekunden. |
long GetNumberOfTracks() | void SetNumberOfTracks([in] long lNumberOfTracks) | Die Anzahl der Tracks auf der CD. |
String GetCategory() | void SetCategory([in] String sCategory) | Die Kategorie (z.B. "Rock/Pop") der CD. |
String GetMedia() | void SetMedia([in] String sMedia) | Die Medien-Art der CD (z.B. "CD", "CD-Single", "DVD", etc.) |
String GetComment() | void SetComment([in] String sComment) | Ein zusätzliches Kommentarfeld für die CD. |
String GetCopyright() | void SetCopyright([in] String sCopyright) | Der Copyright-Text der CD. (z.B. "(C) 1997 Sony Music Entertainment (Germany) GmbH") |
long GetYearRecorded() | void SetYearRecorded([in] long lYearRecorded) | Das Aufnahmejahr der CD (z.B. 1997). |
String GetTrackArtist([in] long lTrack) | void SetTrackArtist([in] long lTrack, [in] String sArtist) | Der Interpret des angegebenen Tracks (beginnt bei 0). |
String GetTrackTitle([in] long lTrack) | void SetTrackTitle([in] long lTrack, [in] String sTitle) | Der Titel des angegebenen Tracks (beginnt bei 0). |
long GetTrackLength([in] long lTrack) | void SetTrackLength([in] long lTrack, [in] long lLength) | Die Länge des angegebenen Tracks in Millisekunden (beginnt bei 0). |
long GetTrackBPM([in] long lTrack) | void SetTrackBPM([in] long lTrack, [in] long lBPM) | Die Beats per Minute (BPM) des angegebenen Tracks (beginnt bei 0). |
String GetTrackComment([in] long lTrack) | void SetTrackComment([in] long lTrack, [in] String sComment) | Ein zusätzliches Kommentarfeld des angegebenen Tracks (beginnt bei 0). |
String GetTrackLyrics([in] long lTrack) | void SetTrackLyrics([in] long lTrack, [in] String sLyrics) | Der Liedtext des angegebenen Tracks (beginnt bei 0). |
long GetTrackYearRecorded([in] long lTrack) | void SetYearRecorded([in] long lYearRecorded) | Das Aufnahmejahr des angegebenen Tracks (z.B. 1997). |
In diesem Abschnitt sind die Fehlercodes und -meldungen beschrieben, die beim Aufruf einer CDArchiv-Funktion auftreten können. Diese werden durch den Aufruf von GetLastError() zurückgeliefert.
Fehlercode | Fehlernummer* | Bemerkungen |
CDARCHIV_ERROR | -1 | Es ist ein Fehler aufgetreten. |
CDARCHIV_ERROR_OK | 0 | Kein Fehler aufgetreten. Alles OK. |
CDARCHIV_ERROR_NO_SESSION | 1 | Die Internet-Session ist nicht verfügbar oder es ist ein
Fehler beim Anlegen der Internet-Session aufgetreten. Mögliche Ursache: Es ist eine alte wininet.dll auf dem System installiert. |
CDARCHIV_ERROR_NO_CONNECTION | 2 | Es ist ein Fehler beim Verbinden zum angegebenen CD-Archiv
Server aufgetreten. Mögliche Ursache: Es ist keine Internetverbindung vorhanden, es wurde ein falscher Proxy angegeben, auf dem angegebenen Server ist kein CD-Archiv vorhanden oder der CD-Archiv Server ist kurzzeitig down. |
CDARCHIV_ERROR_NOT_CONNECTED | 3 | Es besteht keine Verbindung zu einem CDArchive-Server. Benutzen Sie zunächst die Open()-Methode, um eine Verbindung aufzubauen. |
CDARCHIV_ERROR_UNKNOWN_TAG | 4 | Beim Lesen der Server-Statistiken wurde vom Server eine
ungültige Antwort empfangen. Interner Fehler. Setzen Sie sich mit Big 3 Software in Verbindung. |
CDARCHIV_ERROR_REQUEST_ERROR | 5 | Interner Fehler (Server down?). Setzen Sie sich mit Big 3 Software in Verbindung. |
CDARCHIV_ERROR_NO_IDENTITY | 6 | Die CD hat keine Identity. Upload und Download nicht möglich. Sie haben vermutlich vergessen, die Identity in der ICDData-Klasse zu setzen. |
CDARCHIV_ERROR_UPLOAD_ERROR | 7 | Es ist ein interner Übertragungsfehler beim Senden von
CD-Daten aufgetreten (Server down?). Setzen Sie sich mit Big 3 Software in Verbindung. |
CDARCHIV_ERROR_LOGIN | 8 | Die Login-Daten sind nicht korrekt. Mögliche Ursache: Sie haben ein falsches Password oder einen falschen Benutzer angegeben. Bitte überprüfen Sie die Angaben, die Sie bei SetUser() gemacht haben. Möglicherweise haben Sie auch den Aufruf von SetUser() komplett vergessen. |
CDARCHIV_ERROR_VERIFY_IDENTITY | 100 | Das Identity-Feld ist leer (Pflichtfeld). |
CDARCHIV_ERROR_VERIFY_ARTIST | 101 | Das Interpreten-Feld ist leer (Pflichtfeld). |
CDARCHIV_ERROR_VERIFY_TITLE | 102 | Das Titel-Feld ist leer (Pflichtfeld). |
CDARCHIV_ERROR_VERIFY_TOTALLENGTH | 103 | Die Gesamtlänge der CD muss größer als 10000 ms sein (10 Sekunden). |
CDARCHIV_ERROR_VERIFY_TRACKTITLE | 104 | Einer der Track-Titel ist leer (Pflichtfeld). |
* Sie sollten immer den Fehlercode abfragen und nur in Ausnahmefällen die Fehlernummer direkt. Es ist möglich, dass die einzelnen Fehlercodes in einer zukünftigen Version andere Werte haben. Die Fehlercodes sind in der mitgelieferten Header-Datei CDArchivDefines.h definiert. Diese können Sie unter Visual C++ direkt einbinden.
Das folgende Microsoft VC++-Beispiel stellt eine Verbindung zum CD-Archiv Server her und gibt die Anzahl der CDs und das letzte Änderungsdatum aus.
void Test(LPCTSTR sServer) { ICDArchive CDArchiv; CDArchiv.CreateDispatch("CDArchive.CDArchive.1"); long lRet; lRet = CDArchiv.Open(m_sServerName, NULL, 0, 0); if (!lRet) return; // Fehler long lNumberOfCDs; DATE dtLastModified; lRet = CDArchiv.Info(&lNumberOfCDs, &dtLastModified); if (!lRet) { CString str; str.Format("Error: %d\n\n%s", CDArchiv.GetLastError(), CDArchiv.GetLastErrorMessage()); AfxMessageBox(str); return; } lRet = CDArchiv.Close(); if (!lRet) return; // Fehler aufgetreten CString str; COleDateTime dtMod(dtLastModified); CString sLastModified = dtMod.Format("%c"); str.Format("CDArchiv successfully connected!\n\nNumber of CDs: %d\nLast modified: %s", lNumberOfCDs, sLastModified); AfxMessageBox(str); }
Auf dem CD-Archiv Server finden Sie in der "Developer"-Sektion ein umfangreiches Beispielprogramm, welches die CDArchive Klassenbibliothek benutzt. Wir empfehlen Ihnen, dieses Beispielprogramm in Ruhe anzuschauen, um einen kompletten Überblick über das CDArchive und die Benutzung dieser Bibliothek zu bekommen.
Wir erheben keinerlei Gebühren für die Benutzung unseres CD-Archivs und Sie müssen keinen Vertrag unterzeichnen oder sonstige Verpflichtungen eingehen. Wir versprechen Ihnen außerdem, dass dies auch in Zukunft so bleiben wird!
Falls Sie Entwickler eines CD-Spielers oder eines anderen Programms sind und
auf unser CD-Archiv zugreifen möchten, können Sie dies gerne tun. Die einzige
Voraussetzung ist, dass Sie uns dies miteilen. Benutzen Sie hierzu das
Anmeldeformular auf dem CD-Archiv Server. Sie erhalten dann einen Benutzernamen
und ein Kennwort, um auf die CD-Datenbank zugreifen zu können.
Außerdem möchten wir die Programmierer bitten, irgendwo im Programm (am besten
in der About-Box) einen kleinen Hinweis auf unser CD-Archiv zu geben. Wie
gesagt, dies ist keine Pflicht, wir würden uns aber sehr darüber freuen. Wir
haben mir der Pflege und Erweiterung des CD-Archivs eine Menge Arbeit, und ich
denke, dass ein kleiner Hinweis und/oder eine URL in Ihrem Programm wohl nicht
zu viel verlangt ist, oder? :-)
Für ganz Eilige hier ein kurzer Text, der einfach mit "Copy&Paste" übernommen werden kann:
Das CD-Archiv ist ein kostenloser Dienst von Big 3 Software, Gebr. Schmitz GbR. Weitere Informationen zum CD-Archiv erhalten Sie unter www.cdarchiv.de.