Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Msvc6 Vs Lemongt?

Iniciado por Warchief, 06 de Julio de 2005, 04:44:07 AM

« anterior - próximo »

Warchief

 Creo que voy a mandar el msvc6.0 lejos, muy lejos. (jodía msdnaa, que en el studio .net 2003 falla el CRC)

Misteriosamente me cambia variables al instanciar un objeto Infile de lemongt.
He creado un gif para que se vea mejor.
http://www.telefonica.net/web2/warchief/er...error/error.gif [108.42 KB]
Como veréis, al instanciar el inifile, se carga bpp y alto de un plumazo, rellenándolos con 512 y -65280.

Esta vez no es cosa del debugger (como ya me pasó otras veces), ya que el log de crm32pro escribe los valores que indica el debugger [ · Graficos (-1x-65280x512)]

Según parece lemongt no ha sido probado con msvc6.0, pero ¿este error es normal? (bueno, normal no creo, pero ¿tiene explicación?)

El código del GestorGrafico es: http://rafb.net/paste/results/ROn6C666.html

y es invocado mediante:
GestorGrafico::instancia()->init()


Gracias por leerlo y pensarlo.

CoLSoN2

Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Zaelsius

 Ese comportamiento podría tener algun sentido si el constructor de IniFile hiciese alguna guarrada con la memoria, pero dado el código actual:

CitarIniFile::IniFile()
: m_pFile(0), m_pBuffer(0), m_bSectionsCached(false), m_iSize(0), m_iMaxSize(0),
m_bFlushed(true),m_iExtraMem(512)
{
   // empty
}

No parece que tenga nada que ver.. así que... MSVC 6.0 sux :rolleyes:

Por cierto, estoy preparando una nueva versión de IniFile, multiplataforma de verdad, más ligera, y contenida en un sólo .h ( sin .cpp ). Ahora mismo usa un map(o hash_map) internamente para guardar todas las secciones y entradas, con lo cual al escribir de nuevo el fichero, las secciones se reordenan alfabéticamente. Quizá a alguien le moleste que la clase le cambie el orden, así que seguramente cambiaré el código para que use listas ordenadas en vez de mapas.

Preview totalmente funcional aquí: inifile.h
Documentación: doc.html(como vereis, no hace mucha falta)

Lo de quitar el .cpp es por hacer más fácil aun su utilización, y si Tim Sweeny lo hace, po's yo también B)

Si alguien quiere ir probándola, que me envié comentarios, erroreres, sugerencias... está aun sin testear en Windows, todo sea dicho.

TheAzazel

 uhmm.... ya la estuve mirando anteriormente porque me parecia interesante poder grabar configuraciones en un ini en vez de en un binario pero me parecio un poco larga jeje
ahora he mirado ese .h y es mas compacto... voy a probarlo en Win32 (tira en Linux? si no lo has probado, lo probare..) y quizas lo incluya a CRM32Pro. Puede ser bastante util :)

PD: muy bueno lo de la documentacion.... whats up!!

HgH

 ¿Has probado a cambiar:

IniFile file;
por
IniFile *file;
file = new IniFile();


Tal vez la creación del objeto desborda el stack y machaca las variables. No se cuanto de pesada la clase IniFile, pero yo no declararía objetos locales a un método por si acaso. En su defecto, puntero a objeto y new que te crió :P
gH _ TLOTB
..................
"No queremos estar obligados, por nada ni nadie, a pensar sólo en lo que es más comercial. Siempre seremos, antes que nada, programadores"

- Equipo de Zigurat -

Warchief

 Uhm, cuando llegue a casa pruebo la dinámica. Lo pensé pero no lo probé.

Si no funciona, me pensaré cambiar de IDE (al 2005 pej) o probar con el nuevo IniFile.

@TheAzazel
Estaría bien que lo incluyeras en crm32pro, sí, así no habría tenido que enlazar más librerías, copiar más dlls, etc, etc. ^_^

(Qué pasó con el empaquetador?, no funciona el enlace de la página).

@Zaelsius
m_iExtraMem(512)
Eso me hace sospechar que sobreescribe los valores (es mucha coincidencia que me cambie a 512). No sé, no sé.


Gracias por las respuestas

zupervaca

 todo lo que compiles en c++ 2005 beta 2 solo funcionara a la gente que tenga instalado el ultimo netframework 2.0 en adelante, no te lo recomiendo, el problema que tienes es bien sencillo y conocido, no se lo que hace la clase IniFile, pero es un error comun en muchos programadores, asignar menos memoria a un buffer y luego al escribir sobre el lo sobrepasan y pisan la memoria que va despues, en este caso, el codigo, si haces un new como dicen el problema seguira, pero no pisaras el codigo que va a continuacion siempre y cuando se asigna el nuevo objeto en otro lugar, para ver si es este fallo o no es aumentar el tamaño de los buffers que asignes en la clase IniFile y si sigue fallando en todas las funciones que modifique algun buffer pon un punto de ruptura

saludos

TheAzazel

 warchief, pues menos mal que me has avisado de ese fallito, el link esta mal en la version espanola...la inglesa si funciona bien, voy a cambiarlo luego. por si lo quieres bajar ya..

http://www.megastormsystems.com/download/C...v3.40-Win32.rar

gracias por avisar! si ves algun otro fallito, tu ni lo dudes eh? :)

x cierto, nos han jodio las olimpiadas... fijo q esto ya iba para paris desde hace tiempo....

CoLSoN2

Cita de: "zupervaca"todo lo que compiles en c++ 2005 beta 2 solo funcionara a la gente que tenga instalado el ultimo netframework 2.0 en adelante, no te lo recomiendo
Totalmente falso. Siempre que utilices C++ del de toda la vida, claro. Si usas managed C++  es otra historia, igual que si usas C#.
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

zupervaca

 
Cita de: "CoLSoN2"
Cita de: "zupervaca"todo lo que compiles en c++ 2005 beta 2 solo funcionara a la gente que tenga instalado el ultimo netframework 2.0 en adelante, no te lo recomiendo
Totalmente falso. Siempre que utilices C++ del de toda la vida, claro. Si usas managed C++  es otra historia, igual que si usas C#.
pues he compilado una aplicacion de consola usando c++ de toda la vida y no me ha funcionado en ningun ordenador sin el ultimo framework, lo mejor es usar el .net 2003 o el 2002

saludos

CoLSoN2

 Pues el The Cursed Wheel lo he compilado siempre usando el 2005 y nunca me ha dado problemas de ese tipo en ningún ordenador, incluso con el XP recién instalado (que no lleva ningún .NET Framework).
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

zupervaca

 entonces no hay duda alguna en que me confundi en algo al crear el proyecto de consola, si rula mejor usar el 2005 como te dicen, una cosa, para aquellos que tienen problemas con los paths en las beta 2 pueden indicarlos en las propiedades del proyecto

saludos

Warchief

 
Cita de: "ZaelSiuS"Preview totalmente funcional aquí: inifile.h

/*
*  inifile.h
*
*
*  Created by Julio on 02/07/05.
*  Copyright 2005 LemonTeam.com. All rights reserved.
*
*/


Bajo qué licencia está ese .h?


Al compilar me dice que:
Citar
--------------------Configuration: Warchief Legends - Win32 Debug--------------------
Compiling...
WL_GestorGrafico.cpp
c:\desarrollo\vc98\include\xtree(118) : warning C4786: 'std::_Tree,std::allocator >,std::pair,std::allocator > const ,std::basic_string:char_traits,std::allocator > >,std::map,std::allocator >,std::basic_string,std::allocator >,std::less,st
d::allocator > >,std::allocator,std::allocator > > >::_Kfn,std::less,std::allocator > >,std::allocatorits,std::allocator > > >' : identifier was truncated to '255' characters in the debug information

c:\personales\raul\trabajos\videojuegos\crm32pro\warchief legends\wl_inifile.h(86) : error C2039: 'toupper' : is not a member of 'std'
...
c:\personales\raul\trabajos\videojuegos\crm32pro\warchief legends\wl_inifile.h(338) : error C2039: 'transform' : is not a member of 'std'
c:\personales\raul\trabajos\videojuegos\crm32pro\warchief legends\wl_inifile.h(338) : error C2065: 'transform' : undeclared identifier


edit: demasiada extensión (La salida completa de error son 14 warnings + los 3 errores. En total 276 líneas de texto.

TheAzazel

 la leche... q pedazo de output ;)

Zaelsius

 Estoy de mudanza, cuando tenga el PC aquí conectado lo miro.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.