| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Lun 13 May, 2019 10:11 am Asunto: el tema de sintonizador emisoras shoutcast Leo |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 13 May, 2019 3:36 pm Asunto: |
|
|
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 |
|
 |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mar 14 May, 2019 2:54 pm Asunto: |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 15 May, 2019 2:05 pm Asunto: |
|
|
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 |
|
 |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mie 15 May, 2019 6:20 pm Asunto: |
|
|
perfecto Leo..... ahora si que funciona de nuevo
Gracias por responder rapido !! |
|
| Volver arriba |
|
 |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mie 05 Jun, 2019 10:02 am Asunto: |
|
|
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 |
|
 |
Alpinador Lt Cmdr

Registrado: 21 Abr 2014Mensajes: 123
|
Publicado: Mie 05 Jun, 2019 2:28 pm Asunto: |
|
|
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 |
|
 |
|