SOLUCIONADO
La verdad es que me sirvio mucho la ayuda en cuanto a los temas a leer, sinceramente muchas gracias a todos. Lo solucioné utilizando CDDB, urgando por internet (y entrando a
www.freedb.org) encontré muchisima documentación al respecto. Me base en un pequeño pero efectivo componente diseñado para Delphi, cito en:
http://www.doogal.co.uk/cd_components.php
Es muy util y funcional en Delphi 7 (si es que tienen las mismas librerias de componentes instalados, en mi caso se dió que si).
Al que le interesa, lealo, no consume ni media hora de lectura, y soluciona mucho el dolor de cabeza. Eso si, si quieren diseñar algo sin utilizar internet, se bajan la DB que esta disponible en el FTP de freeDB y hacen que su software trabaje offline (hay un archivo que actualiza la DB, también se puede descargar del FTP).
Les dejo el ensayo que hice, aunque es diferente del procedimiento final, pero como para ver el funcionamiento les alcanza.
Código Delphi
[-]
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, CDInfo, StdCtrls, CDDBConnect , CDDatabase, ComCtrls;
....
private
FGotDetails : Boolean;
FCDEntry : TAccessDBEntry;
procedure ShowCDMessage(AMessage: string);
procedure ShowCDDetails(CDInfo1:TCDInfo);
...
implementation
const
CTrack = 'Pista';
CPosn = 'Posición';
CNoCD = '[No hay CD ]';
CUnknownCD = '[Información no disponible]';
{$R *.dfm}
procedure TForm1.ShowCDDetails(CDInfo1:TCDInfo);
var CDDBConnect1:TCDDBConnect;
begin
FGotDetails := True;
FGotDetails := CDDBConnect1.GetInfoForCurrentCD(FCDEntry);
if FGotDetails then
begin
Edit2.Text := FCDEntry.CDTitle;
Edit3.Text:= FCDEntry.ArtistTitle;
end
else
ShowCDMessage(CUnknownCD);
end;
procedure TForm1.ShowCDMessage(AMessage : string);
begin
Edit2.Text := AMessage;
end;
procedure TForm1.Button1Click(Sender: TObject);
var CD:TCDinfo;
DataBase:TCDDatabase;
Conexion:TCDDBConnect;
Loop,pista : integer;
LListItem : TListItem;
LCDEntry : TAccessDBEntry;
begin
FCDEntry := TAccessDBEntry.Create;
CD:=TCDinfo.Create(self);
DataBase:=TCDDatabase.Create(self);
Conexion:=TCDDBConnect.Create(self);
DataBase.GetRecording(CD.CDDBDiscIDHex,FCDEntry);
if CD.Ready
then begin
Edit1.Text:=IntToStr(CD.TotalTrackCount);
end;
if FCDEntry.CDID <> CD.CDDBDiscIDHex
then begin
FGotDetails := False;
if DataBase.GetRecording(CD.CDDBDiscIDHex, FCDEntry)
then begin
FGotDetails := True;
end
else begin
FGotDetails := Conexion.GetInfoForCurrentCD(FCDEntry);
if FGotDetails then
DataBase.AddRecording(FCDEntry);
end;
end
else begin
ShowCDMessage(CUnknownCD);
end;
Edit2.Text:=FCDEntry.CDTitle;
Edit3.Text:=FCDEntry.ArtistTitle;
Edit4.Text:=FCDEntry.Genre;
Memo1.Clear;
for pista:=1 to DataBase.RecordingCount do
begin
Memo1.Lines.Add(FCDEntry.Tracks.Text);
end;
end;
Saludos