Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

C++ Builder 2009
Ir a página 1, 2  Siguiente
 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: C++ Builder 2009 Responder citando

Bien amigos del Foro, no recuerdo en que parte leí que _Leo comentaba que despues de la versión 6 del BCB la versión que mas le ha llamado la atención de las que han salido es la nueva Version del BCB2009.


Bien me di a la tarea de bajarme el archivo de la pagina de CodeGear, (creo que no puedo poner el enlace), pero me ha llevado mas de 4 hrs con una conexión de 1024/128 ADSL, pues el archivo en su totalidad pesa 1.9 Gb.

Me puse a recompilar el primer proyecto, realizado en versiones anteriores desde la BCB6 pasando por BDS2006 y BCB2007 ahora CGCB2009 ( CodeGear C++ Builder 2009) y cual ha sido mi sorpresa que agradezco y seguire agradeciendo el NO usar componentes, pues despues de las 400 mil líneas de código que me ha arrojado la compilación solo tuve que modificar las siguientes lineas de mi aplicación.

Anteriormente:
Código:
TResourceStream((int)ccsgDll, "ccWait", RT_RCDATA).SaveToFile(Ruta+"ccWait.ani");


por esta otra:

Código:
TResourceStream((int)ccsgDll, L"ccWait", (wchar_t*) RT_RCDATA).SaveToFile(Ruta+"ccWait.ani");



Dándome asi una satisfacción muy grande pues pense que tendria miles de errores, por el tipo de datos UnicodeString pero a pasado sin pena ni gloria.

Comparto el comentario de _Leo, que esta versión en su mayoría tiene una gran mejora a la VCL, pero también he de ver que se ha favorecido completamente el Acceso a las bases de datos, usando los componentes de Interbase 2009, mismos que he usado con Firebird Ver. 2.1 y han funcionado de manera excelente.

Lamentablemente mi versión es de 14 dias prueba, pero me ha dado un gran sabor de boca, el saber que las nuevas versiones de CGCB2009 están mucho mas confiables y por ende mucho mejor que el hermano menor Delphi aun que la VCL se siga basando en el código del hermano de C++ que mas que hermano, lo veo como una herramienta para realizar las MISMAS operaciones pero mas sencillas.

Un saludo y me es grato compartir mi experiencia que ha sido bastante satisfactoria en cuanto al NO usar componentes y saber que puedo emigrar y regresar mis proyectos de una versión a otra.

PD: no digo que los componentes NO sean buenos, pero prefiero por muchas razones no usarlos y una de ellas es la transparencia que tienen las aplicaciones en casi la totalidad de versiones del C++ Builder.

Saludos.
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Jue 08 Ene, 2009 10:39 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola Cesar. No se te ocurra actualizar al SP1. Ahí es donde están los errores que yo posteé.
En verdad el 2009 es de lo mejorcito que he visto hasta la fecha. De hecho a mi me dieron 30 días y lo estuve usando con gran alegría. El problema vino cuando vi que habían sacado un parche. A partir de ese momento no he sido capaz de compilar ningún proyecto nuevo (hecho con 2009) o viejo debido a la gran cantidad de errores que había

Saludos, Bosoft
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Ok, gracias por el aporte pues ya pensaba hacerlo aun que no esta demás confirmar los datos que tu me has dado asi podré dar un diagnostico mas amplio sobre ¿Qué? o ¿Cuáles? Son las funciones que merecen antención.

Saludos y gracias, por la información y como siempre a seguir colaborando.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Ya me regañaran en el foro por lo que digo, pero que quede claro , es con mi vieja filosofia de que todo debe compartirse, algo tonto de mi parte pero me da mas alegrias que molestias
yo soy de cuba, ya deben saber los problemas con el vecino de enfrente que tengo , pero como toda desventaja tiene su ventaja esta no es una exepcion y nada me cuesta ni un centavo, y todo es pirateado ( no es secreto para nadie que el 99.99 % -quizas me quede por debajo-, de los programas aca en mi pais es pura crakeo ) y nada para no darle mas pita al asunto...
yo tengo el builder2009 con ..."todos los archivos necesarios para que no sea trial " y mi propia clave ... si alguien esta interesado mandeme un email y servidor al que desea que se lo suba y listo
a los moderadores y administrador ( perdonenme si este mensaje causa molestias, solo pretendo compartir lo que tengo con la comunidad como han hecho uds cuando esoty con la unica neurona que me trajeron al mundo ) gracias y mis respetos
_________________
Todos somos ignorantes, lo que no todos ignoramos lo mismo...
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

ifrit, no he dicho que este mal o bien compartir copias de material de pago, solo he dicho que este no es el lugar. Y por supuesto que puedes compartir cosas en el foro, como por ejemplo algo hecho por ti.


bosoft escribió:
No se te ocurra actualizar al SP1. Ahí es donde están los errores que yo posteé

Sería interesante que fueras posteando los errores que te encuentras, así podríamos ir aprendiendo de una manera práctica como adaptarnos a los nuevos cambios.

Yo hasta ahora no he encontrado ningún problema que no se solucionase de manera sencilla. Quizás porque antes ya había leído un montón de artículos en la web de CodeGear sobre los cambios que se iban a producir. La mayoría de las adaptaciones de código viejo que he tenido que hacer son por el uso de Unicode por defecto para las cadenas.

Y el sentido de que tengas más problemas para compilar código viejo después del Update1 es que precisamente en esta actualización han corregido algunos detalles importantes que aun usaban Ansi.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Si, son problemas de UniCode. Pero si tienes 2 o 3 proyectos que te funcionan bien y te pasas al 2009 y te da tantos errores, al final te desmoralizas y mas cuando esos proyectos funcionaban bien en 2007/2009 SP0.

En uno de mis proyectos estuve casi 2 horas cambiando código, poca cosa, pero fueron casi 2 horas y cuando logré hacerlo arrancar saltaban errores por todos los sitios. Como solo había corregido los errores del 2009, simplemente restaure la copia de seguridad que hice justo antes y volví al 2007

No os puedo ayudar en mas cosas, pero este es el post que puse https://cppbuilder.es/viewtopic.php?t=13283&highlight=2009

Saludos, Bosoft
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Por eso decía de ir publicando trozos de código concreto que fallen para ver de manera práctica como adaptarlos para que funcionen en todas las versiones.

Lo que decías en el otro post sobre "fopen" realmente no ha cambiado nada. Las funciones de la librería estándar de C y las de C++ siguen siendo iguales, ya existían versiones para Ansi y para Unicode antes de la versión 2009. Como prueba, esto sigue funcionando igual en todas las versiones:
Código:
    AnsiString file = "d:\\prueba.txt";
    FILE* fp = fopen(file.c_str(), "rt");
    char linea[90];
    fgets(linea, sizeof(linea), fp);
    ShowMessage(linea);
    fclose(fp);

Quizas te haya pasado usando "String" que antes estaba definido como "AnsiString" y ahora como "UnicodeString".
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

... y siguiendo con las compilaciones de código esta otra Linea tambien ha sufrido modificaciones.

De:this->Perform(WM_NEXTDLGCTL, false, false);

A:this->Perform(WM_NEXTDLGCTL,0,0);

Asi como algunos pasos de parametros que anteriormente eran const char * ahora he tenido que cambiarlos por --> const LPCTSTR, por citar un ejemplo
Antes:WinInet(const char *Agent, DWORD accessType)
Despues:WinInet(const LPCTSTR Agent, DWORD accessType)
_________________
Cool


Ultima edición por Cesar C. Salazar Gonzalez el Vie 09 Ene, 2009 12:40 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Si _Leo, eso funciona, pero cuando tienes esto...
Código:
char file[40] = "d:\\prueba.txt";
    FILE* fp = fopen(file, "rt")

Ya no funciona. Y así muchas llamadas de código que incluyan char
A eso me refiero. Si empiezas desde cero con 2009-SP1 todo correcto, pero de momento no me es rentable pegarme esa paliza para corregir código, ya que arrastro proyectos desde builder 4
Una cosa es cambiar unas cuantas sentencias y otra es esto. Creo que deberían haber hecho algo "mas compatible"

saludos, Bosoft
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

César C. Salazar González escribió:
this->Perform(WM_NEXTDLGCTL, false, false);

O bien: this->Perform(WM_NEXTDLGCTL, FALSE, FALSE);

bosoft escribió:
eso funciona, pero cuando tienes esto...

El ejemplo que pones a mi me funciona. Los casos en que "char" no sirve es con las funciones de la VCL, pero las funciones de la librería estándar de C siguen siendo iguales.

De todas formas si quisieras usar la versión de "fopen" Unicode (_wfopen) o la versión Ansi (fopen) cuando estés en un modo u otro puedes usar algo como lo siguiente:
Código:
    #include<stdio.h>
    #include<tchar.h>

    TCHAR file[40] = TEXT("d:\\prueba.txt");
    FILE* fp = _tfopen(file, TEXT("rt"));
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Hola Bosoft, he compilado el ejemplo que has mencionado y efectivamente marca un error, imágino que la sentencia de apertura del archivo es erronea, pero he realizado esto dentro de un botón.

y ha funcionado correctamente.

Código:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   char file[40] = "d:\\prueba.txt";

(º)   FILE* fp = fopen(file, "a+"); //Crea y/o abre el archivo
(º)   FILE* fp = fopen(file, "rt");// DEBE existir el archivo (1)

   // escribiendo un numero
   float Numero = 12.34;
   fwrite(&Numero,sizeof(float),1,fp);

   // Escribiendo una cadena
   char Cad[20] = "Una cadena";
   fwrite(&Cad,sizeof(Cad),1,fp);
   fclose(fp);
}
//---------------------------------------------------------------------------


y el CGCB2009 no ha marcado ningun error, de echo en la ayuda del mismo viene que la utilización de las sentencias sigue siendo igual.

(1): en la sentencia FILE* fp = fopen(file, "rt");, es necesario que el archivo exista, para que no marque el error que se menciona, pero he compilado de las dos maneras y ha funcionado.

(º): cabe mencionar que por ende solo una de las 2 sentencias debe usarse.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Pues a mi me saltaba error en fopen, al igual que en otras lineas donde el parámetro era char.
Lo instalaré de nuevo, aunque mi periodo de prueba ya ha pasado, pero mantendré la 2007

Ya os digo algo

Saludos, Bosoft
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Siguiendo con las compilaciones, se me ocurre agregar al proyecto el famoso archivo .rc para los temas de WindowsXP y Vista respectivamente, y ha salido un error como el siguiente.

Código:
[BRCC32 Error] WindowsXP.rc(1): Error Could not open input file C:files\codegear\rad.RC


La manera de corregirlo es quitar las rutas de la siguiente parte dentro del CGCB2009 Project > Options > Resource Compiler > Additional Options

Tal y como indica la siguiente página de CodeGear

También menciona que si es necesario deben establecerse las rutas en el siguiente apartado --> Project > Options > Resource Compiler > Include Path.

(A mi con quitar las rutas se ha solucionado el problema)
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

... Siguiendo con las pruebas de compilaciones ahora voy con una Dll con los resultados siguientes.

A) La primera vez que ejecuté la Compilacion para la Dll no obtuve ningun error ( pues la desinstalación del BCB2007, no fue del todo correcta).

B) En la segunda vez obtuve los siguientes errores
Cita:
[ILINK32 Error] Error: Unresolved external '__fastcall
Strhlpr::UnicodeFree(System::UnicodeString&)' referenced from C:\PROGRAM
FILES\CODEGEAR\RAD STUDIO\6.0\LIB\DEBUG\VCLE.LIB|ustring.

[ILINK32 Error] Error: Unresolved external 'Typinfo::BooleanIdents'
referenced from C:\PROGRAM FILES\CODEGEAR\RAD
STUDIO\6.0\LIB\DEBUG\VCLE.LIB|vclinit


Aclaro que esta segunda compilación lo hice usando una instalación límpia del CGCB2009 (un equipo formateado y sin haber instalado ninguna version anterior del C++ Builder).

Para corregir este error que es casi impertercible pues el IDE me mostró un mensaje donde indicaba que NO encontraba los siguientes archivos vcl.lib y rtl.lib en mensajes separados respectivamente, los cuales asumí que existian en el directorio Lib de la instalacíon, lo cual no es asi pues estos archivos se encuentran en: C:\Program Files\CodeGear\RAD Studio\6.0\lib\debug, no mostrandose nuevamente este error pero si mostrando los errores arriba mencionados, lo unico que hice fue buscar dentro de la Dll alguna referencia a la VCL dentro de un #include y ponerle un comentario, proceder a re-compilar con Shift-F9 y que el IDE me mostrara nuevamente la falta de estos archivos, esta vez realicé la búsqueda dentro del disco para ubicar los archivos y la Dll ha vuelto a funcionar como si nada hubiera pasado.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

He instalado el Service pack 1 de Builder para seguir con las opciones de compatibilidad dando algunas referencias.

Como dice _Leo c_str() por --> t_str();

Antes: String Ruta = ExtractFilePath( ::Application->ExeName );
Ahora: LPCSTR Ruta = ExtractFilePath( ::Application->ExeName ).t_str();

También me he dado cuenta que el cambio de AnsiString a String es mucho mas favorable pues evita muchos tropiezos de compatibilidad

uso de sprintf()
Esto:
String sTmp;
sTmp.sprintf( "\\StringFileInfo\\%04x%04x\\FileVersion", *wTmp, *(wTmp + 1));


por Esto:
String sTmp;
sTmp.sprintf( L"\\StringFileInfo\\%04x%04x\\FileVersion", *wTmp, *(wTmp + 1));


En mi caso eso fue todo usando el Service Pack 1 para Builder.

un Saludo y espero que los demas que tengan la oportunidad de probar el nuevo IDE queden satisfechos.
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.