|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Yañez
26
« en: Miércoles 4 de Julio de 2007, 23:15 »
27
« en: Miércoles 4 de Julio de 2007, 12:19 »
OK. Prueba esto: //--------------------------------------------------------------------------- #ifndef Unit2H #define Unit2H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <inifiles.hpp> //--------------------------------------------------------------------------- class TForm2 : public TForm { __published: // IDE-managed Components private: // User declarations TIniFile *ini; public: // User declarations __fastcall TForm2(TComponent* Owner); void obtener(AnsiString seccion, AnsiString variable, AnsiString valor) { ini = new TIniFile("C:\\ARCHIVO.ini"); ini->WriteString(seccion, variable, valor); } }; //--------------------------------------------------------------------------- extern PACKAGE TForm2 *Form2; //--------------------------------------------------------------------------- #endif
Observa que lo que he hecho es agregar en el encabezado la línea: #include <inifiles.hpp>
Luego, declaro el puntero ini.. (En private:) Y finalmente, creo una función pública: void escribir(AnsiString seccion, AnsiString variable, AnsiString valor) { ini = new TIniFile("C:\\ARCHIVO.ini"); ini->WriteString(seccion, variable, valor); }
Esta última función recibe tres parámetros y escribe en archivo.ini. La puedes modificar a tu gusto para que escriba, lea o haga otras cosas. O si te es más fácil crear una función pública para cada cosa que quieras hacer. Ahora solo tienes que llamarla desde el otro formulario, para ello incluyes el archivo que contiene la función pública... #include "Unit2.h"
y la llamas.... Form2->escribir("Seccion", "Variable", "3");
Esto tendría que servirte...
28
« en: Lunes 2 de Julio de 2007, 09:27 »
29
« en: Lunes 2 de Julio de 2007, 09:17 »
Si quieres aprender a programar en Builder aquí tienes una página interesante y sencilla... Ahhhh, bienvenida al foro....
30
« en: Viernes 29 de Junio de 2007, 21:18 »
31
« en: Viernes 29 de Junio de 2007, 13:52 »
32
« en: Viernes 29 de Junio de 2007, 11:38 »
como se que he creado un archivo .ini???
Porque el archivo estará en la ruta indicada.... Es un archivo que puedes abrir con el Bloc de Notas... (de hecho lo puedes crear con cualquier editor de texto) como guardo un archivo .ini para que se guarde la configuracion realizada???
Prueba este código: TIniFile *iniFile = new TIniFile("C:\\ARCHIVO.ini"); iniFile->WriteString("Seccion", "Clave", "Hola");
Ah, no te olvides de incluir el inifiles.hpp: #include <inifiles.hpp>
33
« en: Jueves 28 de Junio de 2007, 13:49 »
Leyendo con más calma tu mensaje creo que ya he entendido lo que quires hacer  Claro que te sirve un ini, en tu caso la estructura del mismo sería algo así: [Configuracion] Platillos=P Tambor=G Otro=E
Guardarías la configuración de teclas que elije el usuario y la cargarías al iniciar el programa...
34
« en: Jueves 28 de Junio de 2007, 13:44 »
No he entendido bien lo que quieres hacer, pero aquí teines un ejemplo de un archivo ini: [Configuration] firstmnu=2810 PanelsVertical=0 [left] path=A:\ ShowAllDetails=1 show=1 sortorder=0 negative Sortorder=0 [right] ShowAllDetails=1 show=1 sortorder=0 negative Sortorder=0
Las partes entre corchetes [] son las secciones (Section) del ini. Cada sección tiene una o varias variables (Key) y un valor respectivo (Data Value). Builder C++ tiene unas funciones que permiten excribir y leer estos archivos. Lo primero es declarar el objeto de tipo TInifile: TIniFile *iniFile = new TIniFile("C:\\RUTA\\ARCHIVO.ini");
Si consultas la ayuda verás que tiene varios métodos para escribir y leer en el archivo, aunque yo uso WriteString y ReadString La sintaxis de estos métodos es similar: nombremetodo("nombre seccion","nombre variable","valor")
Eso si, en el caso de ReadString debes dejar el valor así: "". Espero que te sea de ayuda....
35
« en: Miércoles 27 de Junio de 2007, 13:44 »
Tal como sospechaba era un problema de la conexión a Interbase...
Verán, cuando hice el cambio para que leyera la base desde el archivo .ini no elimine nada desde el control visual "base", por lo que se conectaba a él, luego (ahora por código) se desconectaba, cambiaba la ruta (leyendo desde el .ini) y se volvía a conectar... Hasta ahí ningún problema...
El problema vino cuando le hice cambios al control "base", concretamente le elimine la ruta a la base de datos y nada más... a partir de ahí me empezo a dar el problema con el módulo... (me imagino que era porque al intentar hacer la primera conexión fallaba pero como después encontraba una conexión no saltaba el problema hasta finalizar el programa)....
Asi que a partir de ahora lo hago todo por código, desde la declaración del control "base" hasta su conexión....
Eso si nunca supe porque cuando le cambiaba el color al formulario me daba ese error y si no se lo cambiaba no lo daba... ¿Cómo influía eso para dara un error de conexión a la base de datos? Caso para "Misterios sin resolver"...
36
« en: Viernes 22 de Junio de 2007, 18:04 »
El nombre del módulo, me sugiere que tiene que ver con InterBase. Tendrá algo que ver con el cambio que hice con la base. Antes la especificaba en tiempo de diseño, y decidí hacerle un cambio para cogiera la ruta desde un ini: DataModule1->base->Close(); TIniFile *archivoIni = new TIniFile("C:\\DIRECTORIO\\Base.ini"); DataModule1->base->DatabaseName=archivoIni->ReadString("Database", "Path", "");; DataModule1->base->Open();
37
« en: Viernes 22 de Junio de 2007, 17:58 »
Hola, de nuevo!!!!
Imagino que si no este problema, alguno parecido habrán tenido alguna vez, ya que a mi no es la primera vez que me pasa y he leído muchos post sobre él.
Hace algún tiempo (como les comentaba) tuve un problema similar, al salir me daba ese error pero en otros módulos. En esa ocasión tenía que ver con la creación y destrucción de formularios.
Pero ahora, no sé que podrá ser. Hoy me dió ese error por primera vez al cambiar el color de fondo de un formulario (??????). Renuncié a hacerlo y seguí haciendo otras cosas hasta que volvió a aparecer, y ahora, por más que deshago cosas en el código no sé lo que lo causa.
Lo curioso es que estos errores no siempre aparecen (a veces si, aveces no), por lo que puede ser algo que has hecho hace tiempo que acusa problemas ahora...
Bueno, después de tanta introducción, mi pregunta: ¿alguien sabe que hace exactamente el ibxpress60.bpl? A ver si así logro dar con el problema...
Les agardezco de antemano la ayuda que me puedan prestar...
38
« en: Martes 19 de Junio de 2007, 22:36 »
Me parece entender que el problema es que su programa no encuentra las dll necesarias...
Puedes buscar en Google, hay unos tutoriales muy buenos con fotos y todo...
En cuanto a otros instaladores está el Inno Setu que es libre también...
39
« en: Martes 19 de Junio de 2007, 12:56 »
¿Has hecho una búsqueda? Hay un hilo sobre ese asunto, sólo que no ha podido incorporarlo al mensaje ya que todavía no tengo los permisos para hacerlo..... Saludos...
40
« en: Viernes 15 de Junio de 2007, 10:48 »
Hola, la variable opc la tienes que crear como pública en el fichero .h del form2. Luego para cambiarle el valor desde el form1 es: Form2->opc="";
Saludos....
41
« en: Miércoles 13 de Junio de 2007, 17:56 »
Vaya! Al fin lo he logrado. Parece que después de todo me estaba complicando mucho la vida... Como no sabía por donde empezar, hice muchas pruebas inútiles y leí mucha información que tampoco era muy útil (aunque no conozco otra forma de aprender que experimentar  ) Al final la guía la encontre en el libro "La Cara Oculta de C++ Builder" aunque tuve que hacer algunos cambios, obviamente. El código final es este: DataModule1->base->Close(); TIniFile *archivoIni = new TIniFile("C:\\DIRECTORIO\\Base.ini"); DataModule1->base->DatabaseName=archivoIni->ReadString("Database", "Path", "");; DataModule1->base->Open();
Cierro la base de datos, cargo la ruta a la base de datos desde un archivo ini y luego la vuelvo abrir. No he hecho ningún cambio en el TIBDatabase que ya estaba en el DataModule1, ya que el resto de los parámetros me valían, sólo cambio la ruta a la base de datos en tiempo de ejecución.
42
« en: Miércoles 13 de Junio de 2007, 11:39 »
Hola a todos, nuevamente !!!! Les cuento mi problema. Tengo un programa (Builder C++) que se conecta a una base de datos de Interbase. Esto lo hago mediante insertar un objeto IBDatabase (de la paleta Interbase) en un DataModule y, luego, al hacer doble clic sobre él me aparece la ventana "Database Component Editor" donde especifico si es una conexión local o remota, la ruta a la base de datos, el usuario, la contraseña y otras cosas... Pero el asunto es que en ocasiones la base de datos puede estar en un equipo local y en otras en un servidor del que desconozco su nombre... y claro, no veo lógico compilar el programa con la configuración distinta de cada caso... Imagino que tiene que haber otra manera de especificar la ubicación de la base de datos que me permita leer de un archivo de texto cualquiera la ubicación para luego ir a buscarla allí, con lo que cada equipo cliente tendría un fichero de texto distinto con su configuración particular. El problema es que no se por donde empezar... de hecho no se ni siquiera como especificar lo de la Bd en tiempo de ejecución en vez del tiempo de diseño como lo hago hasta ahora... Espero no haberme extendido mucho y haber sido claro con mi pregunta... Gracias a todos de antemano....
43
« en: Viernes 8 de Junio de 2007, 12:59 »
Hola matema90!!!
Es un problema de lógica. Revisa las proposiciones de tus if ("lonp<0").
44
« en: Viernes 1 de Junio de 2007, 11:27 »
Gracias Eternal Idol!!!! Lo he probado tal como dijiste y funciona perfecto. Después con calma probaré el CreateProcess también. Aquí va el código  (con la espera incluida): SHELLEXECUTEINFO sInfo; ZeroMemory(&sInfo, sizeof(SHELLEXECUTEINFO)); sInfo.cbSize = sizeof(SHELLEXECUTEINFO); sInfo.fMask = SEE_MASK_NOCLOSEPROCESS; sInfo.lpVerb = "open"; sInfo.lpFile = "notepad.exe"; sInfo.nShow = SW_SHOWDEFAULT; ShellExecuteEx(&sInfo); WaitForSingleObject(sInfo.hProcess, INFINITE); Application->MessageBox("Este mensaje aparecerá al finalizar la plicación", "Información", MB_OK);
45
« en: Miércoles 30 de Mayo de 2007, 19:49 »
Vaya!!! No me había dado cuenta que en la ayuda de ShellExecute hay un enlace para ShellExecuteEx Veré que me dice y lo probaré... De todas maneras si alguien tiene una idea sigue siendo úitl....
46
« en: Miércoles 30 de Mayo de 2007, 19:43 »
Hola!! Tengo una aplicación que llama a archivos de ayuda (.chm) y a aplicaciones java (.jar) con ShellExecute. Pero en el caso de las aplicaciones java, me gustaría que al llamarlas mi aplicación quedara bloqueada, que sólo pueda seguir ocupándola cuando el programa java deje de ejecutarse. Buscando en antiguos post vi un mensaje de Eternal Idol en que decía que se puede hacer con ShellExecuteEx (que devuelve un handle) y luego WaitForSingleObject. Lo pongo textual mejor: Tanto ShellExecuteEx (no ShellExecute) como CreateProcess te devuelven un handle a un proceso y podes hacer un WaitForSingleObject infinito al mismo, este te devolvera el control cuando termine el proceso. El problema es que no he encontrado ayuda para estas funciones. La ShellExecute si me aparece en la ayuda de Builder pero no así la ShellExecuteEx ni la WaitForSingleObject. De antemano, muchas gracias....
47
« en: Miércoles 16 de Mayo de 2007, 14:00 »
Vaya, es la misma que uso yo y el TCppWebBrowser viene justo después del TXMLDocument... Se me ocurren dos cosas... 1º Que tengas escondido el componente. Ve al menú Component - Configure Palette, en el listado de páginas, selecciona [All] para que te los muestre todos. Busca allí si está el TCppWebBrowser y haz clic en Show (Me parece que los escondidos los muestra al final de ese listado). 2º Ve a Component - Install Packages. El paquete que contiene el TCppWebBrowser es "Borland C++Builder Internet Explorer 5 Components Package", verifica que lo tienes instalado. El archivo es bcbie60.bpl. Espero que esto te pueda servir....
48
« en: Martes 15 de Mayo de 2007, 10:46 »
Hola, necesito sacar un texto usando HTML, busque y encontre que lo mejor es usar el componente TCppWebBrowser que lei que esta en la pestaña "Internet", pero yo tengo C++ Builder 6 y no me aparece en esa pestaña ni en otras. En la ayuda si que aparece pero no encuentro el componente y, al declararlo dinamicamente, me da error. Hay alguna otra forma de mostrar codigo HTML? Gracias de antemano. Hola!!! Soy nuevo en este foro, asi que aprovecho de saludarlos a todos... No conozco otra forma de mostrar una página en html aparte de este componente y es la que ocupo yo. Imagino que el que no te aparezca puede ser por la versión que usas ¿?. Yo tengo la enterprise y si me aparece. Es el último icono de la pestaña Internet.
|
|
|