Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

el tema de sintonizador emisoras shoutcast Leo

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: el tema de sintonizador emisoras shoutcast Leo Responder citando

Hola leo....lo que hablamos y miramos del parser de JSon y todo aquello del programa sintonizador de emisoras de shoutcast......se fue al cuerno..ya no detecta nada

Has vuelto sobre eso?? ....
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Lo siento, no puedo entretenerme mucho ya que tengo bastante trabajo pendiente. Solo puedo contestar a cosas no me lleven mucho tiempo..

Es lo que tiene cuando no se usa una API oficial y se extrae la información directamente de la web, que estas expuesto a que cambien el diseño y deje de funcionar. Por suerte en este caso solo han cambiado el enlace a otro sitio para cambiar la portada de la web, por lo que en mis ejemplos funciona si cambio el enlace "https://www.shoutcast.com/Home/" por "http://directory.shoutcast.com/Home/".
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

vale, no te preocupes, cuando puedas.... no es urgente

mira, falla en Rad Studio 10.3 lo siguiente....se ve que han tocado el sistema de JSON porque ni lo reconoce

Código:

   TJSONArrayEnumerator* jsonArrayEnum = jsonArray->GetEnumerator();
   while (jsonArrayEnum->MoveNext()) {


      TJSONValue* jsonValue = jsonArrayEnum->Current;
      TListItem* item = ListView->Items->Add();

      item->Caption = jsonValue->GetValue<String>("Name");
      item->SubItems->Add(jsonValue->GetValue<int>(L"Bitrate"));
      item->SubItems->Add(jsonValue->GetValue<int>(L"Listeners"));
      item->SubItems->Add(jsonValue->GetValue<int>(L"ID"));

   }


solo la implementacion del enumerador JSON ....he mirado la pagina de rad studio

http://docwiki.embarcadero.com/Libraries/Rio/en/System.JSON.TJSONArrayEnumerator

y probe con ese codigo de ahi, cambiando el enumerador pero tampoco parece reconocer la declaracion de

Código:
TJSONArrayEnumerator* jsonArrayEnum = jsonArray->GetEnumerator();



ni tampoco la de ejemplo de la documentacion de RadStudio

Código:
TJSONArrayEnumerator* MyJSONArrayIterator = new TJSONArrayEnumerator(MyJSONArray);
while (MyJSONArrayIterator->MoveNext())
{
    TJSONValue* MyJSONValue = MyJSONArrayIterator->Current;
    // …
}


he includo el System.JSON.hpp en los includes pero nada..... se me acaban las opciones.....

me dio por mirar en la carpeta Include->rtl y estos son los ficheros de JSON que aparecen

Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

No lo había probado en la 10.3 ya que no la uso. Ciertamente mirando las cabeceras han quitado "TJSONArrayEnumerator", aunque se les ha olvidado quitarlo de la documentación.

Sustituye la línea:
Código:
TJSONArrayEnumerator* jsonArrayEnum = jsonArray->GetEnumerator();
por:
Código:
TJSONArray::TEnumerator* jsonArrayEnum = jsonArray->GetEnumerator();
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

perfecto Leo..... ahora si que funciona de nuevo

Gracias por responder rapido !!
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

hola de nuevo Leo..... te voy a marear mas que a la perdiz pero mira, creo que esto lo sabras tu mejor...... en la funcion de descarga del stream mp3 (Download Proc) .....

FUNCION:

Código:
void CALLBACK TForm1::DownloadProc(const void *buffer, DWORD length, void *user)
{
   TForm1* frm = reinterpret_cast<TForm1*>(user);

   AnsiString NOMBRE_DE_SESION_mp3;

   NOMBRE_DE_SESION_mp3 = Form1->Edit_SESION_mp3->Text;

   const String mp3 = frm->appPath + "Output\\" + NOMBRE_DE_SESION_mp3;

   if (!frm->of.is_open())
      frm->of.open(mp3.c_str(), std::ios::binary);

   if (!buffer)
      frm->of.close();
   else
      frm->of.write(static_cast<PBYTE>(const_cast<PVOID>(buffer)), length);
}
//---------------------------------------------------------------------------




me da error aqui

Código:
   if (!buffer)
      frm->of.close();
   else
      frm->of.write(static_cast<PBYTE>(const_cast<PVOID>(buffer)), length);


da error en el else......dice:

Cita:
[bcc32c Error] Unit1.cpp(111): cannot initialize a parameter of type 'const char *' with an lvalue of type 'const void *'
ostream(505): passing argument to parameter '_Str' here


se que es por el tipo de dato que son diferentes pero no entiendo muy bien esos temas de casting
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Vale Leo, me he puesto y he dado con la solucion que parece que funciona porque graba el Mp3 en disco bien

he cambiado esto

Código:
      frm->of.write(reinterpret_cast<const char *>(const_cast<PVOID>(buffer)), length);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
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


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.