 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 23 Jul, 2009 11:02 am Asunto: Más CDDB :-( |
|
|
Vuelvo a la carga con mi obsesión de conectarme a Cddb o a FreeDB. Estaba tratando de adaptar a Builder 5 un código que me pasó XyVy en Builder 6 y me estoy encontrando un problema. El código es este:
| Código: | void __fastcall TfCddb::TcpConnected(TObject *Sender)
{
int i, numTracks;
TOC toc;
memset(cBuffer, '\0', sizeof(cBuffer));
cCadTcp = "cddb hello Angel " + cIp + " MiCddb v.1\r\n";
Tcp->WriteLn(cCadTcp);
cCadTcp = Tcp->ReadLn(EOL, 1000, -1);
Consola->Lines->Add("");
Consola->Lines->Add(Now().FormatString("hh:nn:ss' »»» '") + iif(cCadTcp.IsEmpty(), "Sin conexión a ", "Conectado a ") + Servidor->Text);
if (cCadTcp.IsEmpty())
return;
Consola->Lines->Add(Now().FormatString("hh:nn:ss' '") + cCadTcp);
for (int interfaz = 0; interfaz < NUM_INTERFACE; interfaz ++)
{
// Comprobamos el interfaz vamos a usar SPTI, ASPI o IOCTL
iActiveInterface = interfaz;
AnsiString nombre_interfaz = interfaces[interfaz].name;
if (!interfaces[interfaz].avail)
continue;
int NUM_DRIVES = getNumDrives();
for (int i = 0; i <NUM_DRIVES>Lines->Add(Now().FormatString("hh:nn:ss' '") + "*** Unidad " + cadena + ", no hay CD en dispositivo");
}
else
numTracks = (int)(toc.lastTrack - toc.firstTrack + 1 );
if (numTracks > 0)
{
static char buf[2048];
// calculate the cddbId
getDriveDesc(i, buf, 2048);
char *cad=(char *) malloc (sizeof(char) * 16);
sprintf(cad, "%08lx", genCddbId(&toc));
AnsiString cddb_id = cad;
AnsiString buffer = buf;
Consola->Lines->Add(Now().FormatString("hh:nn:ss' '") + "Unidad " + buffer + ", " + IntToStr(numTracks) + " canciones, cddbid = " + cddb_id);
AnsiString texto = genCddbQuery(&toc, buf, 2048);
consulta = texto;
Consola->Lines->Add(Now().FormatString("hh:nn:ss' '") + "CDDB query:" + texto);
}
}
// El primer interfaz que haya disponible será el que se utilize
if (interfaces[interfaz].avail)
break;
}
Tcp->WriteLn(consulta + "\r\n");
cCadTcp = Tcp->ReadLn(EOL, 1000, -1);
Consola->Lines->Add(Now().FormatString("hh:nn:ss' '") + cCadTcp);
Tcp->Disconnect();
nPos_genero = cCadTcp.AnsiPos(' ');
cEstado = cCadTcp.SubString(1, nPos_genero - 1);
nPos_genero ++;
cCadTcp = cCadTcp.SubString(nPos_genero, cCadTcp.Length() - nPos_genero+1);
}
//--------------------------------------------------------------------------- |
Cuando me conecto al servidor, en el primer ReadLn la máquina me responde con este mensaje:
| Cita: | | 201 mirror1.freedb.org CDDBP server v1.5.2PL0 ready at Thu Jul 23 11:50:21 2009 |
con lo que entiendo que efectivamente hay comunicación con el sistema. Con un disco en la bandeja se genera en la función genCddbQuery este texto:
| Cita: | | cddb query 280d5d14 20 150 13906 26200 36980 56103 72116 83592 96654 107629 118099 128431 141748 154372 170556 180049 194293 208114 219637 232189 241689 3423 |
que se envía al servidor en el último WriteLn que hay; pero a este envío el sistema contesta con:
donde, evidentemente, no está la lista de canciones del disco. ¿Me falta algo o alguien puede echarme una mano. Estoy usando, además de Builder 5, Indy 9.
Por otra parte tengo el código, manuales y documentación originales que facilita Gracenote parea acceder a Cddb; incluye código en Visual Basic, VBScript, MFC, Win32, Java y JavaScript. El problema es que no sé que habría de coger de todo esto; imagino que debería ser el código MFC o Win32.
Muchas gracias por todo. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Dom 26 Jul, 2009 9:29 am Asunto: |
|
|
| _Leo escribió: | | La adaptación del ejemplo de Gracenote de hace dos años no te sirvió ? |
¡Sabía que estab en algún sitio guardada! En este tiempo cambié de PC, de discos... Y en medio se perdió el fichero. Gracias Leo. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|