Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-04-2015
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Intercambiar posiciones de varias imágenes

Hola ahí. Estoy haciendo un algoritmo para intercambiar al azar posiciones de imágenes. Ya sé hacerlo pero me gustaría automatizarlo para cualquier número o posición de ellas. Lo consigo a medias.
El caso es que dándole vueltas he llegado a la conclusión que necesito saber cómo obtener los datos de un TStringList o de un TMemo de forma progresiva para pasarlos a un Array.
Lo que tengo, de momento, es ésto y lo que quiero es sacar los datos. A ver qué atajos podéis ver... Y muchas gracias.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Const
  ImgLeftPos_A : Array[1..8] of Integer = ( 34, 74, 114, 154, 184, 192, 204, 544);
Type
 aTSL = TStrings;
Var
   SL : aTSL;
   I, N, nAzar : Integer; // N es el nº de posiciones Left.
   sAzar : String;
   ImgLeftAzar_A : Array of Integer;
begin
   N:= 8;
   SetLength(ImgLeftAzar_A, 8);
   SL := TStringList.Create;
   Memo1.Clear;
   SL := TStringList.Create;
   repeat
            nAzar := RandomFrom( ImgLeftPos_A ) ;
            sAzar := IntToStr( nAzar ) ;
            if SL.IndexOf(sAzar) = -1  then
                begin
                SL.Add( sAzar ) ;
                Memo1.Lines.Add( sAzar ) ;
                end;
    until Memo1.Lines.Count = N ;
    SL.Free;
end;
Responder Con Cita
  #2  
Antiguo 25-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 bulc.

A ver si lo que buscas es algo como este ejemplo:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    FImgArray: array of TImage;
    procedure MergeImages();
  public
  end;
var
  Form1: TForm1;

implementation 

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Randomize;
  for i:= 0 to ComponentCount-1 do
    if Components[i].ClassType = TImage then
    begin
      SetLength(FImgArray, Length(FImgArray)+1);
      FImgArray[i] := TImage(Components[i]);
    end;
end;

procedure TForm1.MergeImages();
var
  i, a, b: Integer;
  aux: TPoint;
begin
  for i:= Low(FImgArray) to High(FImgArray) shr 1 do
  begin
    a:= Random(High(FImgArray)+1);
    b:= Random(High(FImgArray)+1);
    aux:= Point(FImgArray[a].Left, FImgArray[a].Top);
    FImgArray[a].Left:= FImgArray[b].Left;
    FImgArray[a].Top := FImgArray[b].Top;
    FImgArray[b].Left:= aux.X;
    FImgArray[b].Top := aux.Y;
  end;
end;

procedure TForm1.btnMergeClick(Sender: TObject);
begin
  MergeImages()
end;
...

Muestra:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 25-04-2015 a las 20:20:11.
Responder Con Cita
  #3  
Antiguo 25-04-2015
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Sofisticado y aprovechable

Hola ecfisa.
Claro que me sirve. No es lo que quería, pero lo aprovecharé. Lo que si quiero aprender es a extraer los datos de un TMemo o un StringList y pasarlos a un Array. He visto que el TMemo tiene una prop. Count y las lìneas responden con Line[0], osea que ya lo veo. ¿Se puede hacer algo parecido con un StringList. Quiero decir recorrerlo y extraer sus datos... en un Array?
Mucha gracias por tu trabajo.
bulc

Última edición por bulc fecha: 25-04-2015 a las 20:25:11.
Responder Con Cita
  #4  
Antiguo 25-04-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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 bulc.
Cita:
Empezado por bulc Ver Mensaje
Lo que si quiero aprender es a extraer los datos de un TMemo o un StringList y pasarlos a un Array.
...
A yo pensé que el problema se trataba de intercambiar las imágenes.

Un ejemplo:
Código Delphi [-]
implementation

type
  TArrayString = array of string;

// unas líneas al memo
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Memo1.Clear;
  ListBox1.Clear;
  for i := 1 to 10 do
    Memo1.Lines.Add( Format('Linea %d', [i]) );
end;

// Strings -> array of string
procedure StringsToArrayStrings(const Str: TStrings; var ArrayStr: TArrayString);
var
  i: Integer;
begin
  SetLength( ArrayStr, Str.Count );
  for i:= 0 to Str.Count-1 do
    ArrayStr[i] := Str[i];
end;

// array of string -> Strings
procedure ArrayStringsToStrings(const ArrayStr: TArrayString; Str: TStrings);
var
  i: Integer;
begin
  for i:= Low( ArrayStr ) to High( ArrayStr ) do
    Str.Add( ArrayStr[i] );
end;

// llamada ej.
procedure TForm1.Button1Click(Sender: TObject);
var
  v: TArrayString;
begin
  StringsToArrayStrings( Memo1.Lines, v );
  ArrayStringsToStrings( v, ListBox1.Items );
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 25-04-2015 a las 20:50:01. Razón: agregar comentarios
Responder Con Cita
  #5  
Antiguo 25-04-2015
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Eso es lo que buscaba...

Muchas gracias. No estabas errado. Ambas respuestas me interesan, pero especialmente la última.
Muy bien, como siempre. No sé qué haría sin tu ayuda... me despido y hasta otra.
bulc
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
Funcion para unir varias imagenes png look OOP 10 09-12-2013 15:35:15
Mostrar varias imagenes en miniatura en bmp o jpg verdu Windows 1 29-06-2006 04:47:21
Guardar varias imagenes en una sola maravert Gráficos 2 28-02-2005 17:19:29
Arrastrar y soltar varias imagenes maravert Gráficos 1 15-11-2004 21:14:06
mostrar varias imagenes JoseQ Impresión 0 12-08-2004 13:23:29


La franja horaria es GMT +2. Ahora son las 11:15:04.


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