![]() |
copiar un array mas grande en otro mas chico
Hola amigos, tengo el siguiente problema:
En un procedimiento defino lo siguiente:
Gracias y espero haberme explicado. |
No queda muy claro el planteamiento, pero quizá sirva de algo aclarar que la función SizeOf no regresa el tamaño de una matriz (número de elementos) sino el monto de bytes que ocupa una variable o tipo de dato. Las variables de tipo matriz dinámica (como rbuf y fbuf, en tu código) son simples punteros hacia la región de memoria donde se almacena la matriz en sí. Y, como todo puntero estándar, su tamaño es de 32 bits (4 bytes).
Si quieres obtener la cantidad de elementos de una matriz, usa la función Length.
Saludos. :) Al González. |
Como complemento al comentario de Al:
Hay, también, dos funciones que devuelven los límites de un vector (lista o array) que son High y Low. Es decir, Low devuelve el índice del primer elemento y High devuelve el índice al último. Funciona con cualquier tipo de vector, tanto dinámico como estático, lo que facilita mucho el trabajo cuando tienes que recorrer listas de las que no sabes cuántos elementos tienen o cuál es elemento inicial (ya sabes que en Pascal puedes elegir el índice del primer elemento). Por ejemplo: Nota: Estoy en la oficina y no tengo ni Delphi ni FreePascal para probar el código anterior, pero debería funcionar. Nota2: No confundir con las funciones Hi y Lo. Estas devuelven el octeto alto o el bajo de un entero. Nota3: High y Low también permiten conocer los límites de un tipo de dato. Por ejemplo, si "Variable" es un entero, entonces "High (Variable)" te devolverá el valor máximo que puede almacenar. También puede usarse con tipos (por ejemplo "Low (INTEGER)") pero no con todos ellos. |
Gracias Al y Nuño.
La solución fue lo sugerido por Al, usar Length:
Gracias. |
| La franja horaria es GMT +2. Ahora son las 19:59:32. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi