Autor Tema: Problema pasando Array en una Funcion  (Leído 1901 veces)

Milton884

  • Full Member
  • ***
  • Mensajes: 190
  • Karma: 3
Problema pasando Array en una Funcion
« en: Agosto 25, 2012, 12:43:59 am »
Estoy haciendo esta funcion, para el uso de Strings en la libreria BennuPlayNet, pero tengo problemas en hacerla.. no puedo , me dice:
Data type not accepted here" , en:
 chrVector=chrArray;


Esta es la funcion. De paso pido que si hay algun otro error de programacion respecto al pasaje de arrays  como parametro, algun corchete de mas o de menos si me lo pueden decir, desde ya gracias.

function BuildString(char chrArray);
private
        int i;
        string strFullString;
        int tope;
        char chrVector[200];                                     
     
   BEGIN
        chrVector=chrArray;
        tope=sizeof(chrVector)/sizeof(chrVector[0]);
     
       for(i=0;i<=tope;i++)
             strFullString=strFullString + chrVector[tope];
       end
     
       return strFullString;
   END
« última modificación: Agosto 25, 2012, 12:53:26 am por Milton884 »

SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #1 en: Agosto 25, 2012, 03:12:57 am »
lo que se hace, y esto se hace incluso en C, es lo siguiente.

function BuildString(char *chrArray, int elems);

y al llamar la funcion

BuildString( array, sizeof(array)/sizeof(array[0]));

o

BuildString( &array[0], sizeof(array)/sizeof(array[0]));

EDIT: Si el array es de tipo char, entonces simplemente es poner sizeof(array)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

gecko

  • Hero Member
  • *****
  • Mensajes: 811
  • Karma: 47
    • Torres Baldi Studio
Re:Problema pasando Array en una Funcion
« Respuesta #2 en: Agosto 25, 2012, 03:31:21 am »
me afano la idea, es muy buena! xD
Torres Baldi Studio
http://torresbaldi.com

Milton884

  • Full Member
  • ***
  • Mensajes: 190
  • Karma: 3
Re:Problema pasando Array en una Funcion
« Respuesta #3 en: Agosto 25, 2012, 05:15:18 am »
entonces no hay forma de pasar un Array por parametro?¿ Pq en mi caso es algo que realmente necesito hacer. Asi si lo puedo pasar:
function string BuildString(char pointer chrArray);


Poniendo pointer , asi se pasa. pero como decis vos como puntero...

SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #4 en: Agosto 25, 2012, 06:14:38 am »
como puntero, si, pero necesitas pasar el tamaño tambien.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Milton884

  • Full Member
  • ***
  • Mensajes: 190
  • Karma: 3
Re:Problema pasando Array en una Funcion
« Respuesta #5 en: Agosto 25, 2012, 05:59:19 pm »
Estoy un poco mareado. me podrian pàsar un ejemplo de una funcion donde se le pasa un vector, el tamaño.. y en una variable se guarde cuantos elementos tiene ese array? Agradeceria mucho. (en mi caso seria un array de tipo Char)

SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #6 en: Agosto 25, 2012, 06:16:44 pm »
un array tipo char si termina en '\0' entonces ya es una string... no necesitas hacer una funcion para eso.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Milton884

  • Full Member
  • ***
  • Mensajes: 190
  • Karma: 3
Re:Problema pasando Array en una Funcion
« Respuesta #7 en: Agosto 25, 2012, 06:25:28 pm »
El tema es que BennuPlayNet no acepta Strings, por eso hice la funcion esa

SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #8 en: Agosto 25, 2012, 06:29:10 pm »
como sea, el tamaño (cantidad de elementos) lo obtenes de la formula que te pase, y ese valor lo das por parametro.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Milton884

  • Full Member
  • ***
  • Mensajes: 190
  • Karma: 3
Re:Problema pasando Array en una Funcion
« Respuesta #9 en: Agosto 25, 2012, 06:34:24 pm »
Joya, ahi entendi perfectamente =) Muchas gracias Splinter

SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #10 en: Agosto 25, 2012, 06:36:20 pm »
pero en esa funcion estas retornando una string...

imagino que lo que le pasas por parametro es lo que te retorna bennuplaynet... pero eso que le pasas por parametro lo podes usar tranquilamente en bennugd como string. no necesitas convertirlo, solo lo necesitarias convertir (pero de string a char[]) si lo necesitaras como parametro de bennuplaynet.

no entiendo que estas haciendo, pero me parece que estas haciendo algo que no es necesario.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #11 en: Agosto 25, 2012, 06:37:14 pm »
Joya, ahi entendi perfectamente =) Muchas gracias Splinter

me alegra que lo hayas entendido, pero me parece que no es necesario, con usar char[] en todo el codigo, ya es suficiente para usarlo en bennuplaynet y en bennugd como string... ademas, es mas rapido.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Milton884

  • Full Member
  • ***
  • Mensajes: 190
  • Karma: 3
Re:Problema pasando Array en una Funcion
« Respuesta #12 en: Agosto 25, 2012, 10:47:13 pm »
sisi me di cuenta que se puede Usar char tranquilamente como si fuese una String, yo pensaba que un array de Char contenia en cada elemento Solo una Letra y que no se podia hacer esto:
arrChar="Este es un texto bla bla bla";


Por eso hice esa funcion. Totalmente inecesaria.




SplinterGU

  • Administrator
  • *****
  • Mensajes: 12994
  • Karma: 379
Re:Problema pasando Array en una Funcion
« Respuesta #13 en: Agosto 26, 2012, 04:04:25 am »
bueno, no te equivocas al decir que cada elemento contiene 1 sola letra, sin embargo el array entero puede ser usado como un string...

esto es valido

char array[10];
string str;

str = "hola mundo";
array = "hola mundo";

str = array;
array = str;
Download Lastest BennuGD Release: http://www.bennugd.org/node/2