Autor Tema: Sizeof para tipos definidos  (Leído 2397 veces)

HaCkZJuaNN

  • Full Member
  • ***
  • Mensajes: 179
  • Karma: 5
Sizeof para tipos definidos
« en: Febrero 21, 2009, 05:49:00 pm »
Los que me conozcan ya sabrán que soy el mayor amante de los tipos definidos.

Bien, me disponía a usar por primera vez las matrices dinámicas en bennu, y he descubierto que sí que se puede hacer sizeof(int) pero no sizeof(tipodefinido). He comprobado que el size de un tipo definido es el mismo sea cual sea la variable concreta, sólo depende del tipo que sea, y que además se corresponde a la suma de las variables que abarca, esto es, si tiene 2 ints, sizeof(tipodefinido) = 2*sizeof(int).

Es decir, no es un problema ni lo va a ser pase lo que pase, pero creo que se podría ampliar el alcance de sizeof para que también acepte tipos definidos(el nombre) como parámetro, sin tener que utilizar una variable de prueba.

Un saludo.

EDIT: Vale, ahora sí es un problema. No se pueden hacer matrices dinámicas de tipos definidos??? No me deja hacer alloc.
EDIT2: No he dicho nada en el EDIT xD, es que soy tontito, ya está solucionado.
« última modificación: Febrero 21, 2009, 05:52:43 pm por HaCkZJuaNN »

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Sizeof para tipos definidos
« Respuesta #1 en: Febrero 21, 2009, 06:12:46 pm »
creo que estas equivocado

Código: [Seleccionar]
import "mod_say";

type type1
    int a;
    int b;
    char c;
end


private
    type1 t;

begin

    say (sizeof(type1));
    say (sizeof(t));
end

da esto

Código: [Seleccionar]
splinter@splinter:~/Bennu$ bgdi sizeof
9
9

con respecto al alloc, ok...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

HaCkZJuaNN

  • Full Member
  • ***
  • Mensajes: 179
  • Karma: 5
Re: Sizeof para tipos definidos
« Respuesta #2 en: Febrero 21, 2009, 07:30:51 pm »
Ok, la cagué integralmente, ya sé qué hice mal. Perdón xD

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Sizeof para tipos definidos
« Respuesta #3 en: Febrero 21, 2009, 07:39:30 pm »
np... ;)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5682
  • Karma: 128
    • GECA soft
Re: Sizeof para tipos definidos
« Respuesta #4 en: Diciembre 27, 2010, 11:41:52 am »
Reflote.

Quiero hacer el sizeof de un array de strings, pero no me devuelve el numero de chars que tiene, como tengo que hacer ?
Gracias, y perdonad, que no conteste pero estoy de vacas y vendré sólo en ocasiones :)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Sizeof para tipos definidos
« Respuesta #5 en: Diciembre 27, 2010, 01:24:10 pm »
como ya te comente, no puedes copiar arrays de strings con un memcpy, asi que hacer un sizeof no te sirve de nada, sin descontar que un array de chars es lo mismo que un array de enteros; quizas deberia comentar (aunque muchos ya lo sepan) que un array de strings no se dimensiona por el tamaño de las strings, ya que ningun array puede tener dimensiones de diferente tamaño en sus elementos de una misma dimension, ya que cada vez que cambiaria de tamaño, significaria recalcular y reubicar todo el array.
si la explicacion anterior es un poco complicada, la respuesta simple y resumida es, no se puede hacer sizeof de un array de strings esperando obtener como resultado la suma del strlen de todas las strings, un elemento string no guarda realmente la string, sino un identificador numerico que referencia a la string.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5682
  • Karma: 128
    • GECA soft
Re: Sizeof para tipos definidos
« Respuesta #6 en: Diciembre 27, 2010, 04:51:52 pm »
Pues como podria sumar sus chars para obtener su dimensión ? Con algo que la recorra y me diga el total me vale....

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Sizeof para tipos definidos
« Respuesta #7 en: Diciembre 27, 2010, 08:42:34 pm »
un for con strlen... para que lo queres si puede preguntar?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5682
  • Karma: 128
    • GECA soft
Re: Sizeof para tipos definidos
« Respuesta #8 en: Diciembre 28, 2010, 11:42:03 am »
Pues si, ayer me fije que justo hacia eso en otra parte  ::)
Lo quiero para definir el tamaño del fondo del texto segun su dimension, ya que quiero hacer globos de dialogos  :D

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Sizeof para tipos definidos
« Respuesta #9 en: Diciembre 28, 2010, 12:19:12 pm »
ahh, para eso deberias usar text_width y text_height
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

  • Hero Member
  • *****
  • Mensajes: 5682
  • Karma: 128
    • GECA soft
Re: Sizeof para tipos definidos
« Respuesta #10 en: Diciembre 28, 2010, 12:46:06 pm »
Gracias, ya veo que hay facil solución :)

SplinterGU

  • Hero Member
  • *****
  • Mensajes: 12894
  • Karma: 377
Re: Sizeof para tipos definidos
« Respuesta #11 en: Diciembre 28, 2010, 12:52:26 pm »
Gracias, ya veo que hay facil solución :)

con la pregunta correcta siempre hay solucion...

estas funciones no te van a calcular el tamaño del array, pero si te van a calcular el tamaño en pantalla de una string con un font determinado, con lo que te permitiria dibujar un globo del tamaño necesario.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2