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 

RAD2010 y Windows Server 2003

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: RAD2010 y Windows Server 2003 Responder citando

Hola,

Estoy haciendo las primerar pruebas de instalar el programa que he migrado de Builder 6 a RAD2010, y me funciona bien en WXP, W7, WVista... pero al instalarlo en un W2003 Server me salen cosas muy raras, donde algunos textos me aparecen con caracteres extraños (No se si tendrá que ver con Unicode)

Me estoy volviendo loco con esta migracion Wink

Muchas gracias
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Bueno pues me contesto a mi mismo...

He leido por ahí un mensaje de _Leo donde dice que recomienda deshabilitar la opcion Dynamic RTL Libraries, lo he hecho, y funciona perfectamente.

No entiendo muy bien que diferencia una cosa de la otra, pero la verdad es que me ha funcionado. Rolling Eyes
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

MENSAJE ELIMINADO POR EL AUTOR

Ultima edición por rockman2003 el Mar 27 Abr, 2010 12:28 pm, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Añado al comentario anterior, que aparte de modificar esa opción, me he dado cuenta que el problema no viene de ahí.

Es por las famosas corrupciones de cadenas de texto, al utilizar char *.
He cambiado el codigo, utilizando wchar_t y ahora si que me funciona perfectamente.

Lo que me llama la atención, es que este problema se me ha producido solamente en Windows Server 2003 (Probado en dos ordenadores).
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Hola Foro!!

Os planteo una solución a un problema con el Unicode que me estaba matando, y me gustaría ver si alguien me puede explicar porque puede ocurrir esto (Por no perder la cordura más que nada).

Tal y como os planteo en este hilo, compilo un programa con RAD2010, y me funciona correctamente, pero lo copio en otro ordenador (Al final no tiene nada que ver con Windows 2003, ocurre con cualquiera), y me salen caracteres extraños en ciertas operaciones donde se utiliza la funcion t_str().

Por ejemplo:

Yo tengo un STRINGGRID donde coloreo sus filas. A modo de ejemplo, haciendo esto:

Código:

void __fastcall Tframe_grid_normal::tablaDrawCell(TObject *Sender,
     int ACol, int ARow, const TRect &Rect, Grids::TGridDrawState State)
{
TStringGrid* Grid = dynamic_cast<TStringGrid>(Sender);

Grid->Canvas->Font->Name = "Small Fonts";
Grid->Canvas->Font->Size = 7;

Grid->Canvas->Brush->Color = clInactiveCaption;
Grid->Canvas->FillRect(Rect);
Grid->Canvas->Font->Color = clWhite;
String texto = Grid->Cells[ACol][ARow];

DrawText(Grid->Canvas->Handle, texto.t_str(),
             texto.Length(), &Rect, DT_EDITCONTROL | DT_WORDBREAK | DT_VCENTER);
}


... se corrompen las cadenas.

Pero si paso un String a wchar_t y de ahí a char *, se soluciona el problema

Código:

void __fastcall Tframe_grid_normal::tablaDrawCell(TObject *Sender,
     int ACol, int ARow, const TRect &Rect, Grids::TGridDrawState State)
{
TStringGrid* Grid = dynamic_cast<TStringGrid>(Sender);

Grid->Canvas->Font->Name = "Small Fonts";
Grid->Canvas->Font->Size = 7;

Grid->Canvas->Brush->Color = clInactiveCaption;
Grid->Canvas->FillRect(Rect);
Grid->Canvas->Font->Color = clWhite;
String texto = Grid->Cells[ACol][ARow];

wchar_t* wstr = texto.c_str();
char* ascii = new char[wcslen(wstr) + 1];
wcstombs( ascii, wstr, wcslen(wstr) );

DrawText(Grid->Canvas->Handle, ascii,
             texto.Length(), &Rect, DT_EDITCONTROL | DT_WORDBREAK | DT_VCENTER);
}



¿Tiene sentido esto?[/b]
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Siento no poder ser de mucha ayuda, ya que por curiosidad lo he probado en los siguientes sistemas y no he conseguido que falle (tengo el C++Builder 2010 Pro, con todas las actualizaciones que han salido):

- Windows XP Pro SP3

- Windows Vista Home Basic

- Windows Server 2003 R2

- Windows 7 Pro 64 bits (en este lo he compilado)

(He creado 4 ejecutables para probar, dos en modo Ansi y dos en modo Unicode, debug y release. He usado un TStringGrid y lo he rellenado en el constructor, he usado tu primer código en el evento OnDrawCell, y al ejecutarlo edito las celdas varias veces manualmente)

Si quieres mandarme algún proyecto con el mínimo código posible que te falle y el ejecutable para ver si a mi me falla. Quizás no lo estoy probando igual que tu …
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Muchas gracias _Leo por tu apoyo,

Yo estoy sospechando que esto vaya por los siguientes caminos:

1.- No he probado instalar el programa en un ordenador limpio donde no estuvieran las librerias del Builder 6.0 antes.

2.- Algun parametro del .cbproj. Iba a generarlo de cero (Esta generado desde la importación Builder 6.0) pero son tantos los formularios, que me da pereza, si te digo la verdad.

3.- No he probado a compilar el proyecto desde otro sitio (Que esto si que lo haré en breve y te comento)

Pero lo que me esta comiendo las entrañas, no es que ocurra el fallo, es no saber porque lo soluciono con este código.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
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.