• Viernes 3 de Mayo de 2024, 05:58

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 - phobos

Páginas: [1]
1
C++ Builder / Re: Refrescar la pantalla en C++ Builder
« en: Miércoles 1 de Julio de 2009, 12:11 »
Hola.

Prueba con la función Repaint (this->Repaint()).

Saludos.

2
C++ Builder / Re: explorador de archivos
« en: Viernes 24 de Abril de 2009, 12:35 »
Hola.

En Vista, debido al UAC (User Account Control), determinadas carpetas están "blindadas". Cuando se intenta acceder a ellas o escribir, pide elevación de permisos. Si tu programa no tiene en cuenta que cuando el sistema requiera elevación se la pida al usuario, o directamente por código se la otorgue, es posible que el sistema deniegue la petición y genere un error en tiempo de ejecución. Prueba a ejecutar el programa con la opción del botón derecho "Ejecutar como administrador". Si te funciona de esta manera, deberás modificar tu programa para que se solicite elevación (o avisar que siempre se ejecute como administrador).
Consulta este link: msdn.microsoft.com/en-us/library/bb530410.aspx
Una de las soluciones es generar un fichero manifest adecuado, pero con C++Builder 6 no se puede. Sinceramente te digo que intentar manejar a nivel de código el UAC, sin las herramientas adecuadas es un infierno.

Saludos.

3
Visual C++ / Re: Utilizar string como nombre de objeto
« en: Jueves 9 de Abril de 2009, 15:41 »
Hola.

Prueba con printf(" %sn",a);

Saludos.

4
C/C++ / Re: C++ frente a Java
« en: Lunes 6 de Abril de 2009, 11:37 »
Hola.

A todo lo anterior me gustaría añadir un par de reflexiones:
Si la intención es confeccionar un programa con entorno visual (en ventanas) y que sea independiente de la plataforma, Java tiene claras ventajas. En este caso C/C++ está en desventaja porque cada plataforma utiliza su propia api y en general si compilas para una, no sirve para otra. Por desgracia la estandarización de c++ aquí no se extiende y en general, cada uno va por su lado. El desarrolo en Java en este caso se rentabilizará más al tener que mantener un sólo código.
No hay que olvidar que Java nació para ser multiplataforma y que es un lenguaje claramente orientado a un entorno visual. El precio que debemos pagar por el "Write Once, Run Anywhere" es justamente el tener que necesitar mecanismos intermedios (máquina virtual) para finalmente poder ejecutar el código. Esos mecanismos intermedios incrementan el consumo de recursos y hacen que la ejecución del aplicativo sea más lenta (el código precompilado finalmente se acaba interpretando). Podemos compilar directamente en el código máquina de la plataforma, pero entonces perdemos portabilidad y nos encontramos en el mismo caso que c++. Debido a todo esto es raro encontrar aplicaciones de propósito general desarrolladas en Java (aunque su api lo permita) y los fabricantes prefieren mantener dos o tres versiones para dos o tres plataformas diferentes. Quizás en un futuro, los intérpretes de bytecode harán que la diferencias se acorten, aunque debido a la naturaleza de java, no creo que se igualen nunca las prestaciones.
Otro precio que se debe pagar es el renunciar a trabajar a "bajo nivel", o sea, interactuar con los aspectos más cercanos a la máquina. Esto que es así, en el fondo, va un poco en contra de la "filosofia" java. El propósito de java es "rescatarte" del tedioso trabajo que implica pelearte con la api del sistema operativo, proporcionándote una artillería de clases que encapsulan todo esto, no para facilitarte el trabajo, sino para hacerlo portable. El punto débil es que el resultado no es tan "potente" ni tan eficiente como el obtenido con c++, y es, volvemos a lo mismo, el precio a pagar por la portabilidad.
Finalmente, si el propósito es crear una aplicación de consola, creo que todo el mundo coincidirá en que proporciona muchísimas más ventajas crear código en c/c++ estándar y compilar en cada plataforma. En este caso también podremos decir lo de "Write Once, Run Anywhere" (y sí, ya sé que si nos empeñamos seremos también capaces de crear en c/c++ estándar una aplicación en ventanas, pero la inversión en tiempo es muchísimo más elevada, la depuración más complicada y posiblemente las frustaciones y los  :hitcomp:  más frecuentes).

Saludos.

5
C/C++ / Re: ¿Cómo vuelco un array en un archivo de texto?
« en: Jueves 2 de Abril de 2009, 12:57 »
Hola.

Supongo que vpeli es una estructura que contiene los campos del registro y que tam es el tamaño del vector de la estructura. Diría que si es así, lo estás haciendo bien.

Saludos.

6
C++ Builder / Re: componentes delphi en builder
« en: Jueves 2 de Abril de 2009, 12:21 »
Hola.

En principio, si estás trabajando con Rad Studio, sí. En este entorno tienes la personalidad Delphi y la personalidad C++builder. A la hora de compilar un componente Delphi desde la personalidad delphi, debería poder verse luego en los paquetes instalados desde la personalidad c++builder. Pero la realidad es que no se ve. Debes usar un truco. Cuando compilas el componente delphi desde la personalidad delphi, hay que activar la opción "Generate C++ object files" dentro de la opción "Linker" de las "Options..." del proyecto. Entonces al instalar el componente en la personalidad delphi, también se ve en la personalidad c++builder.
En caso de estar trabajando con un entorno en que sólo te permite iniciar proyectos en c++, debes consiguir el componente para c++builder (paquetes bpk en lugar de dpk, que son para delphi).
 
Saludos.

7
C++ Builder / Re: C++ y BASE DE DATOS (Firebird) No reconoce las tablas
« en: Jueves 2 de Abril de 2009, 11:51 »
Hola.

Code Gear considera obsoleto BDE. Quizás deberías utilizar otro controlador como dbExpress. Aquí tienes un enlace que te muestra diversas opciones para conectarte a una base de datos Firebird:

firebirdfaq.org/cat9/

Saludos.

8
C/C++ / Re: ¿Cómo vuelco un array en un archivo de texto?
« en: Jueves 2 de Abril de 2009, 10:25 »
Hola.

Deberías cerrar el stream con un fclose.

Saludos.

9
C/C++ / Re: Dar forma a un Array Bidimensional
« en: Miércoles 1 de Abril de 2009, 11:52 »
Hola.

En las lineas donde haces los cout, aparte del dígito también estás enviando un final de linea (endl), lo que provoca un salto de linea.
Prueba a poner "cout<<endl" fuera de los bucles.

Saludos.

10
C++ Builder / Re: empaquetar mi programa
« en: Martes 31 de Marzo de 2009, 16:38 »
Hola.

TRod intuye lo mismo que yo. Si tu programa es un exe normal, para que funcione en cualquier máquina debes recompilarlo con las siguientes opciones:

De la barra de menú, elige "Projects"->"Options" y en la pestaña "Packages" desmarca "Build with runtimes packages".
En la pestaña "Linker" desmarca "Use Dynamic RTL".

Saludos.

11
C++ Builder / Re: como crear una carpeta, c++builder
« en: Martes 31 de Marzo de 2009, 16:24 »
Hola.

Échale un vistazo a:

msdn.microsoft.com/en-us/library/bb762180(VS.85).aspx

explica el uso de la función SHGetFolderLocation.

Saludos.

EI: juntando mensajes.

Se me olvidaba, para crear directorios, consulta:

msdn.microsoft.com/en-us/library/aa363855.aspx

explica la función createdirectory.

Saludos.

12
C++ Builder / Re: Dibujar linea sobre un TImage
« en: Martes 31 de Marzo de 2009, 15:56 »
Hola.

Puede ser un problema con la versión del componente, porque he hecho la prueba con tu código y me ha funcionado muy bien (con y sin comentar Image2->Picture->Bitmap->TransparentColor=clBlack). He usado c++builder 2007. Me gustaría insertar un pantallazo para demostrártelo, pero no sé cómo hacerlo.
Lo único que has de tener en cuenta es que para que funcione, el TImage debe contener un bitmap (un jpg genera error).
Siento no poder concretar más y decirte por qué no te está funcionando a ti.

Saludos.

13
C/C++ / Re: como imprimo esta cadena?
« en: Viernes 20 de Marzo de 2009, 12:41 »
Hola.

Prueba con esto:

"<?xml version="1.0" encoding="UTF-8"?>"

o sea substituye " por " .

Saludos.

14
C/C++ / Re: Problemas con Herencia y Poliformismo
« en: Jueves 19 de Marzo de 2009, 17:01 »
Hola.

El problema son los métodos get que estás implementando. No estás devolviendo la variable miembro, sino una constante:

int StudentCraft::getClassRoom(){return classroom=0;}             // Devuelve siempre 0.
int StudentCraft::getEnergy(){return energy = MAX_ENERGY;}    // Devuelve siempre MAX_ENERGY.
int StudentCraft::getKnowledge(){return knowledge=0;}             // Devuelve siempre 0.

Prueba devolviendo sólo las variables miembro:

int StudentCraft::getClassRoom(){return classroom;}
int StudentCraft::getEnergy(){return energy;}
int StudentCraft::getKnowledge(){return knowledge;}

Saludos.

15
C/C++ / Re: Problemas con Herencia y Poliformismo
« en: Jueves 19 de Marzo de 2009, 13:57 »
Hola.

Diría que el problema está en que el constructor no inicializa los miembros privados. Al ejecutar, se están creando unos objetos con unos valores para el constructor. El constructor tal como está simplemente no hace nada. El hecho de llamar a la variables igual, no hace que los miembros privados de la clase apunten o tomen ese valor. Están en ámbitos diferenciados. Tal como está ahora el constructor, los miembros después de la instanciación del objeto contienen NULL. Debes explícitamente, en el constructor inicializar los miembros privados:
 this->user = user;
etc...

donde el puntero this indica que este "user" es el miembro, no la variable.

Saludos.

16
C++ Builder / Re: Problema Con Formularios
« en: Miércoles 3 de Octubre de 2007, 12:59 »
Hola.

No sé cómo estás montando el formulario, pero si está derivado de TForm, no deberías tener  esos problemas. Se hereda la gestión del repintado, de forma que en la práctica es transparente para ti. Sólo sabes cuando repinta por el evento OnRepaint.

Saludos.

17
C++ Builder / Re: Duda Componente Updown
« en: Miércoles 3 de Octubre de 2007, 12:31 »
Hola.

Lo sabes por el parámetro TUDBtnType Button que te devuelve el evento OnClick.
Este parámetro toma el valor btNext si se pulsa la flecha de arriba (o la de la derecha) y toma el valor btPrev si se pulsa la flecha de abajo (o la de la izquierda).

Saludos.

18
C++ Builder / Re: Duda Usando Wininet
« en: Miércoles 3 de Octubre de 2007, 11:45 »
Hola.

Sobre el método detallado o directo, decirte que con el método directo, con una sóla función (InternetOpenUrl) consigues acceder a una url y recuperar sus recursos. Internamente esta función llama a otras del método detallado. La diferencia es que el método detallado permite explotar al máximo todas las posibilidades que ofrece el protocolo, mientras que el directo de forma sencilla sólo accede a recursos. Como ves, la principal diferencia es la comodidad. En cuanto a velocidad, supongo que es lo mismo ejecutar una función que llama a su vez a otras 3 (por ejemplo), que ejecutar esas 3 funciones, aunque si quieres puedes probar cual de los dos métodos te funciona mejor.

Si quieres más información, visita esta web, donde encontrarás un excelente artículo de WinInet.

www.lawebdejm.com/prog/win32/index.html

19
C++ Builder / Re: ¡haced La Prueba!
« en: Miércoles 6 de Septiembre de 2006, 16:27 »
Hola.

Desde OnCloseQuery no se puede manejar Action. Se puede resolver el problema desde OnCloseQuery, mandando minimizar el form y evitando que se cierre (CanClose = false). También se puede hacer desde OnClose minimizando y haciendo Action =caNone.  
La lástima es que el camino directo que propone Borland no funciona (¿será porque se han despistado y han copiado directamente la ayuda de Delphi?...jeje).

Saludos!!!!

20
C++ Builder / Re: Icono Animado En La Barra De Tareas
« en: Domingo 27 de Agosto de 2006, 13:44 »
Hola.

Bien, en la paleta de componentes de Builder (al menos en la versión 6 y 2006) existe una pestaña llamada Samples. Aquí hay componentes externos a Borland. Hay uno llamado TTrayIcon. Cuando insertas este componente en un form, se instala un icono en la bandeja de tareas. Este componente no está documentado en la ayuda de Builder (al menos en la versión 6). Tiene varias propiedades entre ellas una llamada Icons, donde debes poner un TImageList con los iconos que deseas que salgan. También dispone de una boolena para activar la animación (Animation) y de otra propiedad, Interval, que define el tiempo que debe pasar entre icono e icono.

Saludos!!!!

21
C++ Builder / ¡haced La Prueba!
« en: Viernes 25 de Agosto de 2006, 18:06 »
Hola a todos.

Me he animado a colarme en este foro para comentaros una cosa curiosa que he descubierto hace poco. Yo utilizo Builder 6 y un día rebuscando en la ayuda descubro un ejemplo de cómo utilizar una función manejadora del evento OnClose. Representa que creando esta función podemos hacer cosas, entre ellas evitar que se cierre el Form.
Bien, el ejemplo es claro y conciso: haz doble clic sobre el evento OnClose y añade el siguiente código de manera que al final debe quedar algo así:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)

{
  if (MessageDlg("Close application ?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo,0) == mrYes)
    Action = caFree;
  else
    Action = caMinimize;
}

Este código permite o bien cerrar el form o bien minimizar. Ni corto ni perezoso lo pruebo. En un proyecto nuevo y pelado copio el código. Y compilo. Y se me abre la boca de asombro al ver que, una vez pulses el botón de cerrar, pulses el botón que pulses del diálogo el resultado es que siempre se cierra el form. ¿Curioso, no? . Eso sí, seguro que en Delphi funciona...

Saludos!!!

Páginas: [1]