Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con objetos y Stringlist (https://www.clubdelphi.com/foros/showthread.php?t=67150)

alquimista 01-04-2010 00:11:50

Ayuda con objetos y Stringlist
 
Muy buenas....

Estoy haciendo una aplicacion para mover unos 10 sprites con determinadas secuencias (paro ,arriba,..). Cada secuencia puede tener diferentes recorridos que dibujo con el raton a partir de origen,destino,destino2,..destino n. A su vez cada recorrido se traduce a un movimiento con el tiempo de ese movimiento. Es un poco elaborado pero no se me ocurre otra forma.
ya tengo implementado el añadir,borrar,girar sprite y mas o menos el añadir recorrido con el raton.
Lo que me esta costando es controlar toda la estructura anterior. Uso arrays que puede que no se llenen.
El problema básico es el de manejar la lista de los arrays por si borro, inserto alguna secuencia o recorridos.

Ejemplo de Sprite.-

ListaSprites[i].Secuencia[j].Recorr[k].TradMov[x].Movi


He visto por internet que se pueden usar Stringlist con objetos, con lo que la linea.
Secuencia:Array of TSecuencia; se sustituiria por
Secuencia:Stringlist;
¿Seria mejor utilizar esto en vez de los arrays?



Y en algun sitio inicializar
ListaSprites[i].Secuencia:=TStringlist.Create;

MI pregunta es ,Si tengo que pasar por ese codigo varias veces

¿Como saber si ya he inicializado el Stringlist?
Se puede hacer lo mismo en las lineas marcadas en rojo en el codigo siguiente.


Agradeceria cualquier sugerencia, Luego todo esto lo guardare en algun fichero de texto, ini o lo que sea.

La idea es tener un puñado de secuencias grabadas y utilizarlas para cada sprite y asignarle dichas secuencias o crear nuevas.

Código:

...
var
 ListaSprites: array [1..10] of TSprite;
 ....

CONST
  MAXSEQ=512;
  MAXTRAD=10;
  MAXREC=50;

type
  TSprite = class
  public
    x, y, xAnterior, yAnterior: Integer;
    ColorTransparente: TColor;
    Imagen, Mascara,buffer: TImage;
    Seleccion: integer;
    deltx,delty:integer;
    Orientacion:integer;
    Secuencia:Array of TSecuencia;
    constructor Create;
    destructor Destroy; override;


 type
  TTipoMov=(mvStop,mvAdelante,mvAtras,mvDerecha,mvIzquierda);

    TTradMovil=class
    public
    Movi: TTipoMov;
    TiempoMov : TTime;
    end;

 Tpathmovil = class
  public
    Origenx, Origeny, Destinox, Destinoy : Integer;
    Color: TColor;
    Seleccion: integer;
    TiempoPath: cardinal;
    CteMetro: Cardinal;
    Tradmov: Array [1..MAXTRAD] of TTradMovil;
    constructor Create;
    destructor Destroy; override;
    procedure SetOrigen(x,y:integer);
    procedure SetDestino(x,y:integer);
    procedure SetOrDest(x,y,xx,yy:integer);
    procedure SetColor(ClColor:TColor);
    procedure Dibujar(Canvas:Tcanvas);
    function GetModulo:double;
    function GetAngulo:double;
    function GetTimems:double;
    function GetLonmetros:double;
  end;

  TSecuencia =class
  public
    Numero : integer;
    Nombre :String;
    Descripcion: String;
    Tiempo: cardinal;
    Recorr : Array [1..MAXREC] of TpathMovil;
  end;




PD: Agua....Agua... Vaya rollo que he escrito... Me he quedado seco.
NO llevo muy bien lo de los objetos pero mas o menos me estoy apañando. Aunque me falta mucha base.

jplj 01-04-2010 19:45:15

Hola:

En la revista Síntesis a partir de su nº 3 hay una serie de artículos -Objetos Auxiliares- que tratan sobre TList y sus "derivados".
También podrías emplear un TObjectList para almacenar los objetos.

alquimista 01-04-2010 23:37:44

gracias, mirare la informnación.
Seguramente simplificare la estructura de objetos. ya que me estoy liando con los array y los objetos y no paro de encontrarme con excepciones (por culpa de no inicializar arrays de objetos)

UN saludo y gracias por la ayuda..

Espero alguna sugerencia mas...


La franja horaria es GMT +2. Ahora son las 10:57:39.

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