• Jueves 2 de Mayo de 2024, 18:52

Mostrar Mensajes

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

Páginas: 1 [2]
26
C++ Builder / Re: Duda Sobre Combobox
« en: Miércoles 4 de Julio de 2007, 23:15 »
:hola:

Cambia la propiedad Style a csDropDownList


 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

27
C++ Builder / Re: Como Leo En La Unit1 Un Puntero De La Unit2??
« en: Miércoles 4 de Julio de 2007, 12:19 »
OK. Prueba esto:

Código: Text
  1.  
  2. //---------------------------------------------------------------------------
  3.  
  4. #ifndef Unit2H
  5. #define Unit2H
  6. //---------------------------------------------------------------------------
  7. #include <Classes.hpp>
  8. #include <Controls.hpp>
  9. #include <StdCtrls.hpp>
  10. #include <Forms.hpp>
  11. #include   <inifiles.hpp>
  12.  
  13. //---------------------------------------------------------------------------
  14. class TForm2 : public TForm
  15. {
  16. __published:  // IDE-managed Components
  17. private:  // User declarations
  18.         TIniFile *ini;
  19.  
  20. public:    // User declarations
  21.     __fastcall TForm2(TComponent* Owner);
  22.         void obtener(AnsiString seccion, AnsiString variable, AnsiString valor)
  23.         {
  24.         ini = new TIniFile("C:\\ARCHIVO.ini");
  25.         ini->WriteString(seccion, variable, valor);
  26.         }
  27. };
  28. //---------------------------------------------------------------------------
  29. extern PACKAGE TForm2 *Form2;
  30. //---------------------------------------------------------------------------
  31. #endif
  32.  
  33.  

Observa que lo que he hecho es agregar en el encabezado la línea:
Código: Text
  1.  
  2. #include   <inifiles.hpp>
  3.  
  4.  

Luego, declaro el puntero ini.. (En private:)
Código: Text
  1.  
  2.         TIniFile *ini;
  3.  
  4.  

Y finalmente, creo una función pública:
Código: Text
  1.  
  2.         void escribir(AnsiString seccion, AnsiString variable, AnsiString valor)
  3.         {
  4.         ini = new TIniFile("C:\\ARCHIVO.ini");
  5.         ini->WriteString(seccion, variable, valor);
  6.         }
  7.  
  8.  

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...
Código: Text
  1.  
  2. #include "Unit2.h"
  3.  
  4.  

y la llamas....
Código: Text
  1.  
  2. Form2->escribir("Seccion", "Variable", "3");
  3.  
  4.  

Esto tendría que servirte... :hola:

 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

28
C++ Builder / Re: Como Leo En La Unit1 Un Puntero De La Unit2??
« en: Lunes 2 de Julio de 2007, 09:27 »
Hola...


Utiliza la búsqueda, esa consulta se ha hecho varias veces ya...

Aquí tienes un enlace a una de esas búsqueda, aquí tienes otro...


Saludos  :hola:

 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

29
C++ Builder / Re: Programa Borland C++
« 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....  :hola:

30
C++ Builder / Re: Que Puedo Hacer
« en: Viernes 29 de Junio de 2007, 21:18 »
Hay cosas que se pueden hacer al respecto, aunque deberías dar más detalles de que es lo que quieres hacer...

Además creo que deberías poner la nueva consulta en otro hilo...

 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

31
Hardware / Re: Windows Xp En Un Sata
« en: Viernes 29 de Junio de 2007, 13:52 »
Aunque un poco tarde.... :whistling: pero lo pongo, por si a alguien más le sirve...

Windows XP trae controladores para los SATA pero no valen para todas las MainBoard, de hecho son raras las que si funcionan...

Algunos modelos traen un Diskette con los drivers (las menos), en otras tienes que crear el diskette cargando los drivers desde el CD (es un arhcivo .OEM que tiene que quedar en raíz, más las carpetas de los distintos S. O.). En un último caso (muy raro) tienes que descargarte los drivers de la web del fabricante.

Y como apuntaba Eternal Idol al iniciar tienes que apretar F6 (te indica el momento) y luego te pedirá el diskette con los drivers...


 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

32
C++ Builder / Re: Que Puedo Hacer
« en: Viernes 29 de Junio de 2007, 11:38 »
Citar
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)

Citar
como guardo un archivo .ini para que se guarde la configuracion realizada???

Prueba este código:

Código: Text
  1.  
  2. TIniFile *iniFile = new TIniFile("C:\\ARCHIVO.ini");
  3. iniFile->WriteString("Seccion", "Clave", "Hola");
  4.  
  5.  

Ah, no te olvides de incluir el inifiles.hpp:

Código: Text
  1.  
  2. #include   <inifiles.hpp>
  3.  
  4.  

33
C++ Builder / Re: Que Puedo Hacer
« 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 :P  Claro que te sirve un ini, en tu caso la estructura del mismo sería algo así:

Código: Text
  1.  
  2. [Configuracion]
  3. Platillos=P
  4. Tambor=G
  5. Otro=E
  6.  
  7.  

Guardarías la configuración de teclas que elije el usuario y la cargarías al iniciar el programa...

 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

34
C++ Builder / Re: Que Puedo Hacer
« 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:

Código: Text
  1.  
  2. [Configuration]
  3. firstmnu=2810
  4. PanelsVertical=0
  5. [left]
  6. path=A:\
  7. ShowAllDetails=1
  8. show=1
  9. sortorder=0
  10. negative Sortorder=0
  11. [right]
  12. ShowAllDetails=1
  13. show=1
  14. sortorder=0
  15. negative Sortorder=0
  16.  
  17.  

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:

Código: Text
  1.  
  2.      TIniFile *iniFile = new TIniFile("C:\\RUTA\\ARCHIVO.ini");
  3.  
  4.  

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:  

Código: Text
  1.  
  2. nombremetodo("nombre seccion","nombre variable","valor")
  3.  
  4.  

Eso si, en el caso de ReadString debes dejar el valor así: "".

Espero que te sea de ayuda....

 :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:  :comp:

35
C++ Builder / Re: Eaccess Violation Ibxpress60.bpl
« 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
C++ Builder / Re: Eaccess Violation Ibxpress60.bpl
« 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:

Código: Text
  1.  
  2. DataModule1->base->Close();
  3. TIniFile *archivoIni = new TIniFile("C:\\DIRECTORIO\\Base.ini");
  4. DataModule1->base->DatabaseName=archivoIni->ReadString("Database", "Path", "");;
  5. DataModule1->base->Open();
  6.  
  7.  

37
C++ Builder / Eaccess Violation Ibxpress60.bpl
« 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
C++ Builder / Re: Installshield Express Borland Free Edition
« 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
C++ Builder / Re: Installshield Express Borland Free Edition
« en: Martes 19 de Junio de 2007, 12:56 »
:hola:

¿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
C++ Builder / Re: Dar Valor A Variable De Una A Otra Forma
« 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:

Código: Text
  1.  
  2. Form2->opc="";
  3.  
  4.  

Saludos....

41
C++ Builder / Re: Conexion A Bd Cuya Ruta Se Desconoce Al Compilar
« en: Miércoles 13 de Junio de 2007, 17:56 »
Vaya! Al fin lo he logrado. :D

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  :comp:  )

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:

Código: Text
  1.  
  2.      DataModule1->base->Close();
  3.      TIniFile *archivoIni = new TIniFile("C:\\DIRECTORIO\\Base.ini");
  4.      DataModule1->base->DatabaseName=archivoIni->ReadString("Database", "Path", "");;
  5.      DataModule1->base->Open();
  6.  
  7.  

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.

 :hola:  :hola:  :hola:  :hola:

42
C++ Builder / Conexion A Bd Cuya Ruta Se Desconoce Al Compilar
« 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....  :hola:

:comp:

43
C++ Builder / Re: Problema Con If Else End If
« 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
C++ Builder / Re: Llamar A Aplicación Y Esperar Que Termine Para Seg
« en: Viernes 1 de Junio de 2007, 11:27 »
Gracias Eternal Idol!!!!    :hola:

Lo he probado tal como dijiste y funciona perfecto. Después con calma probaré el CreateProcess también.

Aquí va el código  :comp:  (con la espera incluida):

Código: Text
  1.  
  2. SHELLEXECUTEINFO sInfo;
  3. ZeroMemory(&sInfo, sizeof(SHELLEXECUTEINFO));
  4. sInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  5. sInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
  6. sInfo.lpVerb = &#34;open&#34;;
  7. sInfo.lpFile = &#34;notepad.exe&#34;;
  8. sInfo.nShow = SW_SHOWDEFAULT;
  9. ShellExecuteEx(&sInfo);
  10. WaitForSingleObject(sInfo.hProcess, INFINITE);
  11. Application-&#62;MessageBox(&#34;Este mensaje aparecerá al finalizar la plicación&#34;, &#34;Información&#34;, MB_OK);
  12.  
  13.  

45
C++ Builder / Re: Llamar A Aplicación Y Esperar Que Termine Para Seg
« 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  :P

Veré que me dice y lo probaré...

De todas maneras si alguien tiene una idea sigue siendo úitl.... :hola:

46
C++ Builder / Llamar A Aplicación Y Esperar Que Termine Para Seg
« en: Miércoles 30 de Mayo de 2007, 19:43 »
Hola!!  :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:

Citar
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
C++ Builder / Re: Html En C++ Builder 6
« 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.... :hola:

48
C++ Builder / Re: Html En C++ Builder 6
« en: Martes 15 de Mayo de 2007, 10:46 »
Cita de: "Max_D"
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!!! :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.

Páginas: 1 [2]