Club Delphi  
    Paypal   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 20-11-2016
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
estructura que da la lata

necesito de nuevo ayuda..... Ecfisa si estas por aqui Maestro

mirad...... tengo la siguiente estructura donde exceptuando los 2 primeros campos que son AnsiString...el resto son enteros..... lo tengo en un array de 30 posiciones

Código PHP:
struct mapp {
              
AnsiString Nombre_Sector;
              
AnsiString Created_By;
              
int objetos;
              
int tipo_objeto;
              
int coordX_objeto;
              
int coordY_objeto;
              
int rutas_inicio_X;
              
int rutas_fin_X;
              
int rutas_inicio_Y;
              
int rutas_fin_Y;
mapita[30]; 

entonces....guardo informacion en el array sin problemas.....el problema es que utilizo un combo box donde voy almacenando los tipos de objeto (si es Planeta, Station, Ruta o Asteroides) el caso, es que cuando selecciono un elemento de ese combo....al principio coinciden con la ordenacion de los elementos del array de la estructura pero si borro un elemento del combo ya no coinciden y en fin....necesito una forma de "compactar" la estructura de forma que no queden huecos entre los registros para que cuando seleccione un elemento del combo, este sea un "casillero" de la estructura que apunte al objeto en cuestion......alguien me entiende?

esto es el codigo de DELETE object

Código PHP:
void __fastcall TForm1::sButton4Click(TObject *Sender)
{
 
// Inicializamos todo a cero.
 
int contador 0;


    
// Borramos el objeto de la estructura y el combobox
  
contador combo_object;

    
mapita[contador].Nombre_Sector "";
    
mapita[contador].Created_By "";
    
mapita[contador].coordX_objeto 0;
    
mapita[contador].coordY_objeto 0;
    
mapita[contador].rutas_fin_X 0;
    
mapita[contador].rutas_fin_Y 0;
    
mapita[contador].rutas_inicio_X 0;
    
mapita[contador].rutas_inicio_Y 0;
    
mapita[contador].objetos 0;
    
mapita[contador].tipo_objeto 0;

    
ComboBox_Object->Items->Clear();
    
ComboBox_Object->Text "";

  for(
int contador4 0contador4 30contador4++)
  {
    if(
mapita[contador4].objetos >= 1)
     {

        if(
mapita[contador4].objetos <= 500ComboBox_Object->Items->Add("Planet");
        if(
mapita[contador4].objetos == 600ComboBox_Object->Items->Add("Route");
        if(
mapita[contador4].objetos == 700 || mapita[contador4].objetos == 701 ComboBox_Object->Items->Add("Belt-Asteroids");
        if(
mapita[contador4].objetos  1000)
       {
        
ComboBox_Object->Items->Add("Station");
       }

     }
  }





Última edición por Snaked fecha: 20-11-2016 a las 16:45:54.
Responder Con Cita
  #2  
Antiguo 20-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Snaked.

Te soy sincero, no sé si termino de entender el planteo de tu problema. Pero por lo que creo haber interpretado, podrías prescindir del arreglo y almacenar tu estructura en el combo eliminándo el ítem y datos directamente desde él.

Ejemplo:
Código PHP:
//...
#include <ctime>

const OBJECTS_TYPE 4// Planet, Station, Route, Asteroids

struct stMapp {
  
String Nombre_Sector;
  
int objetos;
  
int tipo_objeto;
  
//...
} *mapp;

// Cargar struct de "demo" en el ComboBox
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
String objType[4] = { "Planet""Station""Route""Asteroids" };

  
srandtime(NULL) );
  
ComboBox1->Items->Clear();

  for ( 
int i 030i++ ) {
    
mapp = new stMapp;
    
mapp->Nombre_Sector = (String)"Sector " rand()%30;
    
mapp->objetos rand() % 15;
    
mapp->tipo_objeto rand() % OBJECTS_TYPE ;
    
String s1 mapp->Nombre_Sector String": " );
    
ComboBox1->AddItem(s1 objType[rand()%4], (TObject*)mapp );
  }
  
ComboBox1->Sorted true;
  
ComboBox1->ItemIndex 0;
}

// Borrar item seleccionado
void __fastcall TForm1::btnDeleteClick(TObject *Sender)
{
  if (
ComboBox1->ItemIndex != -)
    
ComboBox1->Items->Delete(ComboBox1->ItemIndex);
}

// Mostrar datos struct de item seleccionado
void __fastcall TForm1::btnShowClick(TObject *Sender)
{
  
stMappmp = (stMapp*) ComboBox1->Items->Objects[ComboBox1->ItemIndex];
  
Memo1->Lines->Add(mp->Nombre_Sector);
  
Memo1->Lines->Add(mp->objetos);
  
Memo1->Lines->Add(mp->tipo_objeto);
}

//...

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  
delete mapp;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 20-11-2016
Snaked Snaked is offline
Baneado
NULL
 
Registrado: sep 2016
Posts: 102
Poder: 0
Snaked Va por buen camino
no te preocupes ecfisa.....ya lo he solucionado, un error de estos que son de implementacion donde utilizaba un mismo contador para pasar datos de una estructura a otra, donde se copiaban los datos cuando habia objetos.....la cuestion es que al utilizar un "cont3" en el bucle de la "asignacion" de campos, clonaba las 2 estructuras con todos los registros incluidos los que estaban a 0..... y lo que habia que hacer era meter una variable de conteo y comprobar si mapita[...].objetos tenia algun valor para dentro del bloque, incrementar el valor de dicho contador para al copiar los campos, solo copiase los que tenian alguna informacion (no estaban a 0)

te pongo el código al que me refiero (el fallo estaba donde pongo cont_item que ponia cont3)

Código PHP:

int cont_item 
= -1;

for(
int cont30cont3 <= 29cont3++)
  {
    if(
mapita[cont3].objetos 0)
     {
     
cont_item++;
    
mapita2[cont_item].Nombre_Sector mapita[cont3].Nombre_Sector;
    
mapita2[cont_item].Created_By mapita[cont3].Created_By;
    
mapita2[cont_item].coordX_objeto mapita[cont3].coordX_objeto;
    
mapita2[cont_item].coordY_objeto mapita[cont3].coordY_objeto;
    
mapita2[cont_item].rutas_fin_X mapita[cont3].rutas_fin_X;
    
mapita2[cont_item].rutas_fin_Y mapita[cont3].rutas_fin_Y;
    
mapita2[cont_item].rutas_inicio_X mapita[cont3].rutas_inicio_X;
    
mapita2[cont_item].rutas_inicio_Y mapita[cont3].rutas_inicio_Y;
    
mapita2[cont_item].objetos mapita[cont3].objetos;
    
mapita2[cont_item].tipo_objeto mapita[cont3].tipo_objeto;

       }
  } 
Responder Con Cita
  #4  
Antiguo 21-11-2016
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Para futuros mensjes, no olvides por favor, poner títulos descriptivos a tus preguntas, gracias
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
Estructura .pak JORGE13 Tablas planas 3 17-12-2010 14:13:15
Estructura BD mjjj SQL 12 14-12-2009 13:12:34
Imprimir Estructura DBF's izar Tablas planas 1 14-11-2008 15:33:27
Estructura de un CD david duarte Varios 4 27-10-2005 17:48:50
Actualizar estructura Garada Firebird e Interbase 2 15-10-2004 08:34:40


La franja horaria es GMT +2. Ahora son las 22:44:18.


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
Copyright 1996-2007 Club Delphi