Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-08-2007
waremovil waremovil is offline
Miembro
 
Registrado: ago 2007
Ubicación: Zaragoza
Posts: 78
Poder: 17
waremovil Va por buen camino
Problema con punteros

Hola a todos, esta es la primera vez que posteo en este foro, aunque llevo mucho tiempo realizando consultas.

Aunque programo en varios lenguajes, hace poco que estoy programando en c++ (en concreto el de borland)

es un poco difícil acostumbrarme al uso de punteros y aunque voy trabajando con ellos, hoy me he topado con una dificultad... tengo una función de tipo estructura que devuelve un puntero pero no soy capaz de trabajar con el resultado...

El código sería así(resumido):

//LA ESTRUCTURA
struct EstructElto {
AnsiString Indice;
AnsiString Valor;
};


//LA FUNCIÓN
EstructElto ProcesaListas(AnsiString Lista){
int long,pos;
AnsiString NombreLista,Aux;
EstructElto *MatrizLista;

... etc etc etc...

MatrizLista = new EstructElto[contador];
for(int i=0;i<x;i++){
long = MatrizLista[i].Valor.Length();
pos = MatrizLista[i].Valor.AnsiPos(":");
MatrizLista[i].Indice = MatrizLista[i].Valor.SubString(0,pos - 1);
MatrizLista[i].Valor = MatrizLista[i].Valor.SubString(pos+1,long - pos);
}
ShowMessage(MatrizLista[1].Valor);
return *MatrizLista;
}



//LA LLAMADA A FUNCIÓN
EstructElto *Puntero;

...etc etc etc ....

Tarifas = Comando(txt_login->Text,txt_pw->Text,"tarifas",1,IdHTTP1);
Puntero = &ProcesaListas(Tarifas);
ShowMessage(Puntero[1].Valor);





Como vereis dentro de la función está el puntero MatrizLista, cuando hago showmessage(MatrizLista[1].Valor) me muestra el valor correctamente
pero en la llamada a dicha función hago ShowMessage(Puntero[1].Valor) y sin embargo no me muestra nada, me da un resultado vacío
¿no se supone que la variable Puntero apunta a MatrizLista tras la llamada a función?

espero que alguien con la cabeza algo mas clara que yo me pueda echar una mano, porque llevo un rato dandole vueltas y no doy con el problema

gracias, un saludo

Última edición por waremovil fecha: 18-08-2007 a las 18:41:43.
Responder Con Cita
  #2  
Antiguo 17-08-2007
Avatar de AntonioG
AntonioG AntonioG is offline
Miembro
 
Registrado: jun 2007
Posts: 17
Poder: 0
AntonioG Va por buen camino
Hola,

Asi rapido veo que la declaracion de la funcion "ProcesaListas" deberia ser:
EstructElto *ProcesaListas(AnsiString Lista) (con el *, para regresar un puntero a estrcutura)
y lo que regresa esta funcion deberia ser
return MatrizLista; (sin el *)

Ademas la llamada a la funcion deberia ser:
Puntero = ProcesaListas(Tarifas); (sin el &)

Saludos
Responder Con Cita
  #3  
Antiguo 18-08-2007
waremovil waremovil is offline
Miembro
 
Registrado: ago 2007
Ubicación: Zaragoza
Posts: 78
Poder: 17
waremovil Va por buen camino
Muchísimas gracias AntonioG me lo has solucionado, a la primera, te estoy muy agradecido

ya de paso me aprovecho un poco mas, ¿sabes de algún tutorial que sea completo y claro sobre punteros, estructuras, asignación dinámica, etc...?
me iría muy bien... el libro que uso de referencia (c++ builder 2006 de Anaya) hace una explicación muy escueta a mi parecer sobre punteros y asignación dinámica, y deseo aclarar un poco esos conceptos


todo esto me cuesta mucho trabajo, y no lo entiendo, hace años programé en Java y los punteros eran importantísimos... pero al no practicar y volver a las malas costumbres de programación, después de unos años he perdido todas las nociones (estoy demasiado viciado al visual basic)

gracias, un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
uso de punteros David OOP 19 14-12-2009 09:48:37
Punteros davitcito Varios 2 25-04-2005 22:46:24
Problema con el manejo de punteros? chavetaz Internet 8 25-01-2004 23:35:09
Punteros rafadrover OOP 8 18-09-2003 10:09:47


La franja horaria es GMT +2. Ahora son las 08:32:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi