|
1801
|
Programación / Programación C/C++ / Re: Es posible usar ( como expresion regular? c++ <regex>
|
en: 2 Febrero 2019, 23:49 pm
|
Saludos, - Anda! en ninguno de mis libros en español he encontrado algo sobre expresiones regulares en C++ , he tenido de echar mano de este otro buen libro en Inglés The C++ Standard Library 2nd Edition: https://www.mica.edu.vn/perso/Vu-Hai/EE3490/Ref/The%20C++Standard%20Library%20-%202nd%20Edition.pdf pág 717 (Chapter 14 Regular Expressions) Wow, la verdad está explicado muy bien, fácil de entender, bastante ejemplificado y práctico, comparándolo con los enigmáticos libros de Bjarne Stroustrup, pues puede ser el creador y todo pero sus libros no son sencillos de comprender name Turing key (31) name Pepe key (54) name Vlad key (12)
#include <iostream> #include <fstream> #include <regex> using namespace std; int main() { ifstream file("example.txt"); regex n("(^name\\s)(\\w+)"); regex k("(^key\\s\\()(\\d+)(\\))"); smatch m; string line; while ( getline(file, line) ) { if ( regex_search(line, m, n) ) { cout << m[2] << endl; } else if ( regex_search(line, m, k) ) { cout << m[2] << endl; } } file.close(); return 0; }
C:\Users\EdSon\Desktop>g++ regex.cpp -o regex.exe && regex.exe Turing 31 Pepe 54 Vlad 12 C:\Users\EdSon\Desktop>
|
|
|
1802
|
Media / Multimedia / Re: descargar videos
|
en: 2 Febrero 2019, 21:02 pm
|
Saludos, - Que raro, Machacador es fiel usuario de Internet Download Manager (IDM), es extraño que no lo mencione. IDM trabaja como Aplicación y Plugin, la aplicación configura al plugin, el plugin funciona en todos los navegadores y tiene un filtro de extensiones de ficheros para los cuales ofrece descargarlos cuando se carguen en el navegador. - Por defecto IDM no ofrece descarga de los ficheros flash (SWF), pero se puede configurar fácilmente abriendo aplicación e ir al menú: Descargas >Opciones > General > Personalizar panel de descarga de IDM (Editar) > Para reproductores web > Añadir, y tipear: SWF > Aceptar a todo. -- Luego abrir la página me muestra el FLASH e IDM lo detectará y ofrecerá descargarlo. - PERO los Flash suelen tener ciertas protecciones, por ejemplo un Flash que llama a otro Flash utilizando parámetros determinados, un Flash que hace uso de recursos alojados en otro sitio, etc. Sería cosa de probar y ver si funcionan sin Internet. https://www.internetdownloadmanager.com/download.html- Supongo que hay cientos de plugins gratuitos y de pago, con spam y sin spam, que permitan hacer lo mismo que IDM, yo prefiero siempre IDM
|
|
|
1804
|
Programación / Desarrollo Web / Re: Duda cargando CSS bootstrap.
|
en: 1 Febrero 2019, 13:53 pm
|
Saludos, - Solo has cambiado ese .css, no has cambiado nada más? Bootstrap trabaja además con jQuery, ambas versiones deben de ser compatibles. Veo que usas una versión antigua de Bootstrap, revisa que tu jQuery sea compatible, esto lo ves en la web de Bootstrap > Bootstrap CDN > Examples, por ejemplo: <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- jQuery (necessary for Bootstrap's javascript plugins) --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <!-- Latest compiled and minified javascript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
-- Me parece que tu versión de Bootstrap es compatible con el viejo jQuery 1.12.4: https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js-- Aparte de otros recursos más que usa Bootstrap, como fuentes y temas: bootstrap/ ├── css/ │ ├── bootstrap.css │ ├── bootstrap.css.map │ ├── bootstrap.min.css │ ├── bootstrap.min.css.map │ ├── bootstrap-theme.css │ ├── bootstrap-theme.css.map │ ├── bootstrap-theme.min.css │ └── bootstrap-theme.min.css.map ├── js/ │ ├── bootstrap.js │ └── bootstrap.min.js └── fonts/ ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── glyphicons-halflings-regular.woff2-- Recomiendo utilizar la última versión del producto: https://getbootstrap.com/docs/4.2/getting-started/download/
|
|
|
1805
|
Programación / Programación C/C++ / Re: Funcion que devuelva un array
|
en: 1 Febrero 2019, 03:17 am
|
Saludos, - Yo suelo solicitar al usuario el tamaño del array y crearlo en vivo: #include <stdio.h> int main() { int cantidad; printf("Indique la cantidad de elementos del Array: "); int array[cantidad]; for (int i = 0; i < cantidad; i++) { array[i] = i; } for (int i = 0; i < cantidad; i++) { } return 0; }
- Sin embargo he estado leyendo varios libros de programación en C y veo que casi ninguno habla de lo que hago. Es bastante sencillo utilizar el método que expongo, pero por lo que he leído, esto no es Estándar y muchos compiladores darán error. -- Yo uso MinGW (gcc, g++, 6.3.0) y nunca me ha dado problemas al respecto así que ni enterado. - La mayoría de los libros solo hablan de Arrays estáticos (int array[5], #define SIZE 5; int array[SIZE], int array[] = {1, 2, 3, 4, 5}), luego pasan directamente a Arrays dinámicos con punteros y malloc, free y NULL. - Recomiendo este libro gratuito en español que justo trato el tema: Vectores Estáticos (pág. 63), Memoria Dinámica (pág. 213): https://openlibra.com/es/book/introduccion-a-la-programacion-con-c-3-- Y este par más que son bastante prácticos con varios ejemplos con malloc y free: https://openlibra.com/es/book/fundamentos-de-programacion-en-chttps://openlibra.com/es/book/apuntes-de-la-materia-de-programacion-basica
|
|
|
1806
|
Programación / Programación C/C++ / Re: tinyXML c++
|
en: 1 Febrero 2019, 00:21 am
|
Saludos, - Si te fijas lo has estado haciendo bien, Sibling es Hermano o Campañero, pRoot no tiene ningún hermano o compañero, esto lo tienes que hacer sobre pBodys tal como lo vienes haciendo con pParm = pParms->FirstChildElement("Input");- Usa: pBodys = pBodys->NextSiblingElement("Test");
- También corrige: (int)count->Attribute("cont") en tu FOR, esto devuelve un Puntero y lo que conviertes a INT es el Puntero, no el valor. Mejor usa: count->IntAttribute("cont") en su lugar: #include <iostream> #include "tinyxml2.cpp" #include "tinyxml2.h" using namespace std; using namespace tinyxml2; int main() { XMLDocument doc; doc.LoadFile("example.xml"); XMLElement *pRoot, *pBodys, *pParms, *pParms2, *pProcess, *pApp, *pLineFormat, *pParm, *pParm2, *count; pRoot = doc.FirstChildElement("Tests"); if (pRoot) { count = pRoot->FirstChildElement("count"); cout << "cont = " << count->Attribute("cont") << endl; pBodys = pRoot->FirstChildElement("Test"); for (int i = 0; i < count->IntAttribute("cont"); i++) { cout << "id = " << pBodys->Attribute("id") << endl; if (pBodys) { pParms = pBodys->FirstChildElement("Inputs"); if (pParms) { pParm = pParms->FirstChildElement("Input"); while (pParm) { cout << "port = " << pParm->Attribute("port") << " "; cout << "value = " << pParm->Attribute("value") << endl; pParm = pParm->NextSiblingElement("Input"); } } pParms2 = pBodys->FirstChildElement("Outputs"); if (pParms2) { pParm2 = pParms2->FirstChildElement("Output"); while (pParm2) { cout << "port = " << pParm2->Attribute("port") << " "; cout << "value = " << pParm2->Attribute("value") << endl; pParm2 = pParm2->NextSiblingElement("Output"); } } } pBodys = pBodys->NextSiblingElement("Test"); } } return 0; }
<Tests> <count cont="2"></count> <Test id="test0"> <Inputs> <Input port="A" value="1" /> <Input port="B" value="4.56" /> <Input port="C" value="7" /> </Inputs> <Outputs> <Output port="D" value="10" /> </Outputs> </Test> <Test id="test1"> <Inputs> <Input port="K" value="3" /> <Input port="L" value="9.56" /> </Inputs> <Outputs> <Output port="P" value="6" /> </Outputs> </Test> </Tests>
C:\Users\EdSon\Desktop>g++ xmlreader.cpp -o xmlreader.exe && xmlreader.exe cont = 2 id = test0 port = A value = 1 port = B value = 4.56 port = C value = 7 port = D value = 10 id = test1 port = K value = 3 port = L value = 9.56 port = P value = 6 C:\Users\EdSon\Desktop>
- Documentación TinyXML-2: http://leethomason.github.io/tinyxml2/classtinyxml2_1_1_x_m_l_element.html
|
|
|
1807
|
Programación / Scripting / Re: Cambiar directiorio variable en Batch
|
en: 31 Enero 2019, 23:24 pm
|
- Fácil entonces, basta con el CD y un comodín: C:\Windows\system32 >cd /d %appdata%\Mozilla\Firefox\Profiles\*.default C:\Users\EdSon\AppData\Roaming\Mozilla\Firefox\Profiles\kgbyg00t.default>
-- %appdata% es equivalente a C:\Users\EdSon\AppData\Roaming, claro que depende de cada Usuario, en mi caso es esa equivalencia.
|
|
|
1809
|
Programación / Desarrollo Web / Re: [Pregunta]: Detectar un click sobre un elemento
|
en: 31 Enero 2019, 05:05 am
|
- Por otro lado, yo estoy entiendo de que quieres usar un bucle for para indexar cada botón que tenga una clase específica. Dicho índice es el número de botón procesado el el bucle para agregarle el evento click, y que dicho evento debe mostrar ese índice. https://jsbin.com/layunogihu/edit?html,output <div id="botones"> <button class="btn">boton 1</button> <button class="btn">boton 2</button> <button class="btn">boton 3</button> <button class="btn">boton 4</button> </div> <div id="log"></div> <script> let botones = document.querySelectorAll('.btn'); let index = 1; for (let boton of botones) { let mensaje = `Click en el botón: ${index}`; boton.addEventListener('click', () => alert(mensaje)); index++; } </script>
|
|
|
1810
|
Programación / Scripting / Re: Cambiar directiorio variable en Batch
|
en: 30 Enero 2019, 23:57 pm
|
Saludos, - Dependerá de como puedes identificar a dicha carpeta, quizá está sola, quizá tiene en su nombre algunos caracteres definidos, quizá tienen un tamaño, fecha de creación, etc, etc, etc. - Detalla un poco más y/o puedes poner un ejemplo sencillo. -- Por ejemplo yo puedo acceder a mi escritorio utilizando CD con comodines: D:\ >cd /d u*\e*son\d?skto? C:\Users\EdSon\Desktop>
|
|
|
|
|
|
|