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.
creo que estas equivocado
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
splinter@splinter:~/Bennu$ bgdi sizeof
9
9
con respecto al alloc, ok...
Ok, la cagué integralmente, ya sé qué hice mal. Perdón xD
np... ;)
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 :)
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.
Pues como podria sumar sus chars para obtener su dimensión ? Con algo que la recorra y me diga el total me vale....
un for con strlen... para que lo queres si puede preguntar?
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
ahh, para eso deberias usar text_width y text_height
Gracias, ya veo que hay facil solución :)
Quote from: FreeYourMind on December 28, 2010, 12:46:06 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.