Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Warchief en 06 de Julio de 2005, 04:44:07 AM

Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 06 de Julio de 2005, 04:44:07 AM
 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.
Título: Msvc6 Vs Lemongt?
Publicado por: CoLSoN2 en 06 de Julio de 2005, 07:15:38 AM
 Pásate a Visual C++ 2005 Express beta
Título: Msvc6 Vs Lemongt?
Publicado por: Zaelsius en 06 de Julio de 2005, 10:48:56 AM
 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.
Título: Msvc6 Vs Lemongt?
Publicado por: TheAzazel en 06 de Julio de 2005, 11:14:32 AM
 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!!
Título: Msvc6 Vs Lemongt?
Publicado por: HgH en 06 de Julio de 2005, 11:28:05 AM
 ¿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
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 06 de Julio de 2005, 11:49:27 AM
 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
Título: Msvc6 Vs Lemongt?
Publicado por: zupervaca en 06 de Julio de 2005, 01:00:44 PM
 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
Título: Msvc6 Vs Lemongt?
Publicado por: TheAzazel en 06 de Julio de 2005, 01:03:16 PM
 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....
Título: Msvc6 Vs Lemongt?
Publicado por: CoLSoN2 en 06 de Julio de 2005, 01:34:57 PM
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#.
Título: Msvc6 Vs Lemongt?
Publicado por: zupervaca en 06 de Julio de 2005, 01:58:46 PM
 
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
Título: Msvc6 Vs Lemongt?
Publicado por: CoLSoN2 en 06 de Julio de 2005, 02:14:52 PM
 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).
Título: Msvc6 Vs Lemongt?
Publicado por: zupervaca en 06 de Julio de 2005, 02:28:03 PM
 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
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 06 de Julio de 2005, 09:05:56 PM
 
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.
Título: Msvc6 Vs Lemongt?
Publicado por: TheAzazel en 06 de Julio de 2005, 09:13:56 PM
 la leche... q pedazo de output ;)
Título: Msvc6 Vs Lemongt?
Publicado por: Zaelsius en 06 de Julio de 2005, 10:06:35 PM
 Estoy de mudanza, cuando tenga el PC aquí conectado lo miro.
Título: Msvc6 Vs Lemongt?
Publicado por: ShAq en 06 de Julio de 2005, 10:12:54 PM
 "Zaelsius el MACkero y la super estándar STL"
Título para una peli de terror  :D

Se ha olvidado poner la licencia, pero como pone
en la web:

CitarRemember that the source code is released under the LGPL license.

Es decir, haz lo que quieras menos decir que es tuya :P
Título: Msvc6 Vs Lemongt?
Publicado por: CoLSoN2 en 06 de Julio de 2005, 10:40:16 PM
Cita de: "ShAq"
Es decir, haz lo que quieras menos decir que es tuya :P
Y si alteras el código, públicalo.
Título: Msvc6 Vs Lemongt?
Publicado por: Zaelsius en 07 de Julio de 2005, 12:00:23 AM
 Corregido el error de compilación en VC++.

inifile.h

Le he puesto la licencia zlib/libpng, mucho más permisiva que la LGPL
http://www.opensource.org/licenses/zlib-license.php
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 07 de Julio de 2005, 12:32:36 AM
 De momento, en vc6 ejecuta. Antes de terminar de poner los warnings ya estaba la ventana de la aplicación mostrándose. :D

Warchief Legends.exe - 0 error(s), 198 warning(s)

Probando que realmente lee de ini...


He bajado el 2005, ahora después lo instalo. Si hoy no puedo probarlo, mañana seguramente pueda.
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 07 de Julio de 2005, 12:52:45 AM
 Funciona perfecto (con el msvc6 aún). Además me gusta más que la api anterior, aunque echo en falta el valor por defecto para ahorrar la linea "alto = 480".

Gracias. Muy útil. (mola)




Uhm. Puedo recomendar un:
#ifndef
#define
para incluir sólo 1 vez?
Título: Msvc6 Vs Lemongt?
Publicado por: NeLo en 07 de Julio de 2005, 01:29:39 AM
 O un #pragma once :)

Aunque sólo funcionará en VC, supongo.
Título: Msvc6 Vs Lemongt?
Publicado por: Zaelsius en 07 de Julio de 2005, 01:41:35 AM
 Probando los cambios, en un rato lo subo  :)  
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 07 de Julio de 2005, 01:49:46 AM
 Esta versión del 2005 está capada o qué? Aparte de no poder crear app32 (sin consola), no puedo modificar los directorios de includes, libs, etc.




legends\wl_inifile.h(196) : warning C4996: 'strtok' was declared deprecated
1>        c:\desarrollo\visual studio 8.0 (2005)\vc\include\string.h(131) : see declaration of 'strtok'
Título: Msvc6 Vs Lemongt?
Publicado por: Zaelsius en 07 de Julio de 2005, 03:05:15 AM
 Actualizada: inifile.h

PD: Voy a dejar strtok hasta que tenga claro que la mayoria de compiladores soportan strsep().. aunque segun la MSDN, a partir de VS.Net 2005 habrá una "strtok_s" más segura contra desbordamientos de búfers.. :huh: ya veré. Al final acabaré metiendo un #pragma disable warning de esos :P
Título: Msvc6 Vs Lemongt?
Publicado por: CoLSoN2 en 07 de Julio de 2005, 07:51:51 AM
Cita de: "Warchief"Esta versión del 2005 está capada o qué? Aparte de no poder crear app32 (sin consola), no puedo modificar los directorios de includes, libs, etc.




legends\wl_inifile.h(196) : warning C4996: 'strtok' was declared deprecated
1>        c:\desarrollo\visual studio 8.0 (2005)\vc\include\string.h(131) : see declaration of 'strtok'
Lo de los directorios es un bug, pero puedes cambiarlos en las propiedades del proyecto.

Lo de app32, no se porque no te dejan (es cierto). Yo lo que hago es crearla en VC6 o VC2003 y luego abrirla desde el 2005 y dejar que la convierta.
Título: Msvc6 Vs Lemongt?
Publicado por: TheAzazel en 07 de Julio de 2005, 09:44:35 AM
 uhmmm... los que usais el vs2005 y C++... aparte de ser una version gratuita... pq lo utilizais si tiene tantos fallitos? yo la probe y lo quite quedandome con el 2003 :)
ultimamente me esta tirando mas y mas y el gnu c....

Título: Msvc6 Vs Lemongt?
Publicado por: CoLSoN2 en 07 de Julio de 2005, 09:49:35 AM
 A parte de no tener lo de los directorios en Options yo no le veo ningún otro fallo.. lo de aplicaciones win32, teniendo en cuenta que lo hago cada tantos meses, no me supone un problema importante.
Título: Msvc6 Vs Lemongt?
Publicado por: NeLo en 07 de Julio de 2005, 11:46:53 AM
 Yo el 2005 sólo lo uso para aplicaciones en C# y .Net 2.0 (es decir, para el curro).

Para el resto, VS.Net 2003.

y eso que me encanta el nuevo editor de código del 2005, pero paso de que por sus errores tontos pierda tiempo.
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 07 de Julio de 2005, 08:03:41 PM
 
Cita de: "ZaelSiuS"Actualizada: inifile.h

PD: Voy a dejar strtok hasta que tenga claro que la mayoria de compiladores soportan strsep().. aunque segun la MSDN, a partir de VS.Net 2005 habrá una "strtok_s" más segura contra desbordamientos de búfers.. :huh: ya veré. Al final acabaré metiendo un #pragma disable warning de esos :P

Muchas gracias por las modificaciones. (ole)

CitarWarchief Legends.exe - 0 error(s), 456 warning(s)

De momento continuaré con el MSVC6.0. Hasta que consiga el 2003. Para el 2005 ya habrá tiempo.
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 07 de Julio de 2005, 08:56:48 PM
Cita de: "Warchief"De momento continuaré con el MSVC6.0. Hasta que consiga el 2003. Para el 2005 ya habrá tiempo.
Que tendrá que ser pronto porque:

http://support.microsoft.com/default.aspx?...b;EN-US;q167355

Con los #pragma warning
Warchief Legends.exe - 0 error(s), 111 warning(s)


(grrr)  
Título: Msvc6 Vs Lemongt?
Publicado por: Warchief en 09 de Julio de 2005, 04:08:34 PM
 Bueno ya me he mudado al vs7 y he podido quitar el pragma warning. Se ve que el 6.0 ya se está quedando demasiado atrás hasta para las cosas más simples.

Funciona perfecto. Gracias por el cotw.