Ver Mensaje Individual
  #9  
Antiguo 12-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Reputación: 19
MaMu Va por buen camino
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
    { Private declarations }
    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
  //TrackLabel.Caption := CTrack + AMessage;
  //PosnLabel.Caption := CPosn + AMessage;
  //TrackNameLabel.Caption := AMessage;
  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;
    //Pistas
    Memo1.Clear;
    for pista:=1 to DataBase.RecordingCount do
      begin
        Memo1.Lines.Add(FCDEntry.Tracks.Text);
      end;
end;

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;

Última edición por MaMu fecha: 12-04-2008 a las 06:02:22.
Responder Con Cita