|
1811
|
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/
|
|
|
1812
|
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
|
|
|
1813
|
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
|
|
|
1814
|
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.
|
|
|
1816
|
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>
|
|
|
1817
|
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>
|
|
|
1818
|
Sistemas Operativos / Windows / Re: Error con windows a la hora de copiar o escribir.
|
en: 30 Enero 2019, 23:44 pm
|
- Por lo que he estado viendo ese Programa si re-mapea teclas: Help > Navigating the Software > Use the Keyboard http://www.plcdev.com/book/export/html/507, reomiendo acceder al programa y buscar las opciones que permitan cambiar o desactivar el mapeo de teclas (atajos de teclado o Keyboard Shortcuts) o cerrar el programa utilizando la interfáz del mismo o desde el administrador de tareas. -- Esperemos que su instalación no se muy intrusiva y no se haya instalado como driver, o haya puesto más "cosas", será cosa de que rub'n haga memoria. -- Por ejemplo los Drives de nVidia mapean algunas teclas como Ctrl + Alt + (UP DOWN LEFT RIGHT), y lo hace como driver, esto es un problema porque entra en conflicto con SublimeText porque no se puede usar esos Atajos de Teclado, sin embargo desde la interfáz del controlador de nVidia se puede cambiar/desactivar ese mapeo sin problemas.
|
|
|
|
|
|
|