Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
Sorteo

Hola chi@s.. Bueno, les comento.. Estoy haciendo el fixture del mundial (obviamente tiene que ser valido para cualquier mundial!).. Voy por la parte del sorteo..
Para explicarles un poco como lo pense les cuento que hay dos librerias diferentes:
*LibreriaEnlace
*LibreriaCola
Con la LibreriaEnlace realizo todo lo que es la carga de los paises que van a participar en el mundial (es la primer instancia del programa). Entre todas las cosas que tiene el registro contenido en la libreria, tiene un campo llamado "PuestoAnterior" en el cual se almacena la posicion en que el pais salio en el ultimo lugar.. Esto me sirve para despues a la hora de hacer el sorteo de los grupos no se crucen entre ellos y para que, hasta el puesto 8, se coloque uno en cada grupo. Ejemplo:
PuestoAnterior: 8 Entonces China va a quedar en el Grupo H
Pais: China
Aca es donde tengo el problema. La primer parte (del ejemplo que acabo de dar) ya lo hice, pero me falta repartir los 24 paises restantes en los grupos, y nose muy bien como usar el random.. Se que hay que usar el randomize para que varie la secuencia, pero realmente nose como realizar el sorteo.. Les dejo parte del procedimiento que tengo hecho para que se les haya mas facil explicarme.

Código Delphi [-]
procedure TForm5.Button1Click(Sender: TObject);
var
  pos: TipoPosicion;          Eq1:TipoRegEquipo1; Eq2:TipoRegEquipo2;
  RD: TipoRegDatos;           Eq3:TipoRegEquipo3;Eq4:TipoRegEquipo4;
  RC: TipoRegControl;         Eq5:TipoRegEquipo5;Eq6:TipoRegEquipo6;
  RDC: TipoRegColaD;          Eq7:TipoRegEquipo7;Eq8:TipoRegEquipo8;
  RCC: TipoRegColaC;          Control: Cadena;Puesto: TipoPuesto;
  Dato: Cadena;
begin
CrearMeEquipo1(Equipo1);
CrearMeEquipo2(Equipo2);
CrearMeEquipo3(Equipo3);
CrearMeEquipo4(Equipo4);
CrearMeEquipo5(Equipo5);
CrearMeEquipo6(Equipo6);
CrearMeEquipo7(Equipo7);
CrearMeEquipo8(Equipo8);
AbrirMe (Me);
//Primero ordeno los primeros 8 puestos distribuyendolo en los grupos
//El puesto nro 1 va en el grupo A, el 2 en el grupo B......
for Puesto:= 1 to _Ultimo do
  begin
    case Puesto of //El puesto, una vez que sale del for, se va modificando de acuerdo al
      1: begin     //sorteo
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq1.Pais:= RD.Pais;
            Eq1.Clave:= RD.Clave;
            Eq1.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo1(Equipo1,Eq1);
            Dato:= 'Grupo_A.Dat';
            Control:= 'Grupo_A.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      2: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq2.Pais:= RD.Pais;
            Eq2.Clave:= RD.Clave;
            Eq2.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo2(Equipo2,Eq2);
            Dato:= 'Grupo_B.Dat';
            Control:= 'Grupo_B.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      3: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq3.Pais:= RD.Pais;
            Eq3.Clave:= RD.Clave;
            Eq3.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo3(Equipo3,Eq3);
            Dato:= 'Grupo_C.Dat';
            Control:= 'Grupo_C.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      4: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq4.Pais:= RD.Pais;
            Eq4.Clave:= RD.Clave;
            Eq4.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo4(Equipo4,Eq4);
            Dato:= 'Grupo_D.Dat';
            Control:= 'Grupo_D.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      5: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq5.Pais:= RD.Pais;
            Eq5.Clave:= RD.Clave;
            Eq5.Pos:=Puesto;
            RC.Sortiado:= true;  
            InsertarInfo5(Equipo5,Eq5);
            Dato:= 'Grupo_E.Dat';
            Control:= 'Grupo_E.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      6: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq6.Pais:= RD.Pais;
            Eq6.Clave:= RD.Clave;
            Eq6.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo6(Equipo6,Eq6);
            Dato:= 'Grupo_F.Dat';
            Control:= 'Grupo_F.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      7: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq7.Pais:= RD.Pais;
            Eq7.Clave:= RD.Clave;
            Eq7.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo7(Equipo7,Eq7);
            Dato:= 'Grupo_G.Dat';
            Control:= 'Grupo_G.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
      8: begin
          BuscarPuesto (Me,Puesto,pos);
          seek (Me.C,pos);
          read (Me.C,RC);
          if RC.Sortiado=false
          then
           begin
            seek (Me.D,pos);
            read (Me.D,RD);
            Eq8.Pais:= RD.Pais;
            Eq8.Clave:= RD.Clave;
            Eq8.Pos:=Puesto;
            RC.Sortiado:= true;
            InsertarInfo8(Equipo8,Eq8);
            Dato:= 'Grupo_H.Dat';
            Control:= 'Grupo_H.Con';
            CrearCola(Cola,Dato,Control);
           end;
         end;
    end;
  end;
//Sortear el resto de los paises
end;

Desde ya MUCHAS GRACIAS por su tiempo..
Saludos =)
Responder Con Cita
  #2  
Antiguo 17-08-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por favor, Valee, para otras ocasiones recuerda poner títulos descriptivos a tus preguntas, gracias
Responder Con Cita
  #3  
Antiguo 21-08-2014
matias.blanco matias.blanco is offline
Registrado
NULL
 
Registrado: ago 2014
Posts: 3
Poder: 0
matias.blanco Va por buen camino
Sorteo

Hola Valee!

Tendrias el codigo de la libreria LibreriaCola que mencionas en el post?
De esa forma podría ver como esta programada y como ayudarte con el random.

Saludos.
Responder Con Cita
  #4  
Antiguo 22-08-2014
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
Cita:
Empezado por Valee Ver Mensaje
...
Aca es donde tengo el problema. La primer parte (del ejemplo que acabo de dar) ya lo hice, pero me falta repartir los 24 paises restantes en los grupos, y nose muy bien como usar el random.. Se que hay que usar el randomize para que varie la secuencia, pero realmente nose como realizar el sorteo..
...
Hola Valee.

A fin de simplificar te pongo un ejemplo que prescinde del uso de archivos :
Código Delphi [-]
...
implementation

type
  TEquipos = record
    Nomb: string;
    Posi: Integer;
    Check: Boolean;
  end;

var
  Equi: array[0..31] of TEquipos;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Equi[0].Nomb := 'Alemania'     ; Equi[0].Posi:=   1; Equi[0].Check:= False;
  Equi[1].Nomb := 'Argentina'    ; Equi[1].Posi:=   2; Equi[1].Check:= False;
  Equi[2].Nomb := 'Holanda'      ; Equi[2].Posi:=   3; Equi[2].Check:= False;
  Equi[3].Nomb := 'Brasil'       ; Equi[3].Posi:=   4; Equi[3].Check:= False;
  Equi[4].Nomb := 'Colombia'     ; Equi[4].Posi:=   5; Equi[4].Check:= False;
  Equi[5].Nomb := 'Bélgica'      ; Equi[5].Posi:=   6; Equi[5].Check:= False;
  Equi[6].Nomb := 'Francia'      ; Equi[6].Posi:=   7; Equi[6].Check:= False;
  Equi[7].Nomb := 'Costa Rica'   ; Equi[7].Posi:=   8; Equi[7].Check:= False;
  Equi[8].Nomb := 'Chile'        ; Equi[8].Posi:=   9; Equi[8].Check:= False;
  Equi[9].Nomb := 'México'       ; Equi[9].Posi:=  10; Equi[9].Check:= False;
  Equi[10].Nomb:= 'Suiza'        ; Equi[10].Posi:= 11; Equi[10].Check:= False;
  Equi[11].Nomb:= 'Uruguay'      ; Equi[11].Posi:= 12; Equi[11].Check:= False;
  Equi[12].Nomb:= 'Grecia'       ; Equi[12].Posi:= 13; Equi[12].Check:= False;
  Equi[13].Nomb:= 'Argelia'      ; Equi[13].Posi:= 14; Equi[13].Check:= False;
  Equi[14].Nomb:= 'EEUU'         ; Equi[14].Posi:= 15; Equi[14].Check:= False;
  Equi[15].Nomb:= 'Nigeria'      ; Equi[15].Posi:= 16; Equi[15].Check:= False;
  Equi[16].Nomb:= 'Ecuador'      ; Equi[16].Posi:= 17; Equi[16].Check:= False;
  Equi[17].Nomb:= 'Portugal'     ; Equi[17].Posi:= 18; Equi[17].Check:= False;
  Equi[18].Nomb:= 'Croacia'      ; Equi[18].Posi:= 19; Equi[18].Check:= False;
  Equi[19].Nomb:= 'Bosnia'       ; Equi[19].Posi:= 20; Equi[19].Check:= False;
  Equi[20].Nomb:= 'C. Marfíl'    ; Equi[20].Posi:= 21; Equi[20].Check:= False;
  Equi[21].Nomb:= 'Italia'       ; Equi[21].Posi:= 22; Equi[21].Check:= False;
  Equi[22].Nomb:= 'España'       ; Equi[22].Posi:= 23; Equi[22].Check:= False;
  Equi[23].Nomb:= 'Rusia'        ; Equi[23].Posi:= 24; Equi[23].Check:= False;
  Equi[24].Nomb:= 'Ghana'        ; Equi[24].Posi:= 25; Equi[24].Check:= False;
  Equi[25].Nomb:= 'Inglaterra'   ; Equi[25].Posi:= 26; Equi[25].Check:= False;
  Equi[26].Nomb:= 'Corea del Sur'; Equi[26].Posi:= 27; Equi[26].Check:= False;
  Equi[27].Nomb:= 'Irán'         ; Equi[27].Posi:= 28; Equi[27].Check:= False;
  Equi[28].Nomb:= 'Japón'        ; Equi[28].Posi:= 29; Equi[28].Check:= False;
  Equi[29].Nomb:= 'Australia'    ; Equi[29].Posi:= 30; Equi[29].Check:= False;
  Equi[30].Nomb:= 'Honduras'     ; Equi[30].Posi:= 31; Equi[30].Check:= False;
  Equi[31].Nomb:= 'Camerún'      ; Equi[31].Posi:= 32; Equi[31].Check:= False;

  with StringGrid1 do
  begin
    ColCount:= 8;
    RowCount:= 5;
    for i:= 0 to 7 do
    begin
      Cells[i, 0]:= 'GRUPO '+Chr(Ord('A')+i); // Títulos de celda
      Cells[i, 1]:= Equi[i].Nomb; // llenar 1ro ~ 8vo
      Equi[i].Check:= True;
    end;
  end;

  Randomize;
end;

// Aquí se generan los 24 equipos restantes de forma aleatoria
procedure TForm1.btnGenerarClick(Sender: TObject);
var
  c, f, e, Done: Integer;
begin
  // Inicializar arreglo
  for e:= 8 to 31 do Equi[e].Check:= False;

  // Llenar las 24 posiciones restantes  al azar
  Done:= 0;
  for f:= 0 to 2 do
  begin
    for c:= 0 to 7 do
    begin
      repeat
        e:= 31-Random(24);
      until not Equi[e].Check or (Done = 24);
      Equi[e].Check:= True;
      Inc(Done);
      StringGrid1.Cells[c, 2+f]:= Equi[e].Nomb; // Mostrar
    end;
  end;
end;
...

Salida:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 25-08-2014
matias.blanco matias.blanco is offline
Registrado
NULL
 
Registrado: ago 2014
Posts: 3
Poder: 0
matias.blanco Va por buen camino
Sorteo

Hola Valee!

Ecfisa te aporto una excelente aproximación a la resolución de tu problema, si estas dispuesta, al igual que en el otro hilo que abriste, subi todo tu proyecto para que te pueda ayudar a generar el sorteo levantando los países desde los archivos, que es donde tengo entendido, que almacenas la info.

Saludos.!!
Responder Con Cita
  #6  
Antiguo 25-08-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
Gracias Chicos! Al sorteo lo pude realizar.
Ahora tengo otra duda con el mismo trabajo. Resulta que el profesor nos hizo crear la cola mandandole el nombre del archivo, de la siguiente forma:
CrearCola(var Cola: TipoCola;Nombre: string);
De ser así, en cada proceso dentro de la librería, se tiene que poner el nombre¿? Porque ahora lo estoy necesitando y nose si se puede, o como hacerlo.. Como hago para entrar al GrupoA, o al GrupoD¿? ahí les mando la librera:

Código Delphi [-]
unit LibCola;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

Const
  _Ruta = ' ';
  _PosNula= -1;
  _Nulo= 0;
  _Ultimo= 8;

Type
  TipoPosicion= longint;
  TipoClave= string[3];
  Cadena= string[20];
  TipoCantidad= longint;
  TipoRegColaD= record
                  LocalClave: TipoClave;
                  EquipoLocal: Cadena;
                  GolesLocal: TipoCantidad;
                  VisitanteClave: TipoClave;
                  EquipoVisitante: Cadena;
                  GolesVisitante: TipoCantidad;
                  PuntosLocal: TipoCantidad;
                  PuntosVisitante: TipoCantidad;
                  Jugado: boolean;
                  Enlace: TipoPosicion;
                end;
  TipoArchivoColaD= file of TipoRegColaD;

  TipoRegColaC = Record
                     Primero:TipoPosicion;
                     Ultimo:TipoPosicion;
                     Borrados:TipoPosicion;
                     Cantidad: TipoCantidad;
                     Editable: boolean;
                   end;
  TipoArchivoColaC = File of TipoRegColaC;

  TipoCola= record
              D: TipoArchivoColaD;
              C: TipoArchivoColaC;
            end;

Procedure CrearCola ( var Cola: TipoCola; Dato:string; Control:string);
Procedure AbrirCola (var Cola:TipoCola);
Procedure CerrarCola (var cola:TipoCola);
Procedure Encolar (var Cola: TipoCola; Reg: TipoRegColaD);
Procedure Decolar (var Cola:TipoCola);
Procedure Frente (var Cola:TipoCola; var Reg: TipoRegColaD);
Function ColaVacia (var Cola:TipoCola): boolean;
Function Ultimo (var Cola: TipoCola): TipoPosicion;

implementation

Procedure CrearCola ( var Cola: TipoCola; Dato:string; Control:string);
var
  i:TipoPosicion;
  RC: TipoRegColaC;
begin
for i:=1 to _Ultimo do
  begin
    case i of
      1: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      2: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      3: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      4: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      5: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      6:begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      7: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
      8: begin
          assign (Cola.D, _Ruta+Dato);
          reset (Cola.D);
          if (IORESULT <> 0)
          then
            rewrite (Cola.D);
          assign (Cola.C, _Ruta+Control);
          reset (Cola.C);
          if (IORESULT <> 0)
          then
            begin
              rewrite (Cola.C);
              RC.Primero:= _PosNula;
              RC.Ultimo:= _PosNula;
              RC.Cantidad:= _Nulo;
              RC.Borrados:= _PosNula;
              RC.Editable:= true;
            end;
         end;
    end;
  end;
  close (Cola.D);
  close (Cola.C);
end;

Procedure AbrirCola (var Cola:TipoCola);
begin
  reset (Cola.D);
  reset (Cola.C);
end;

Procedure CerrarCola (var cola:TipoCola);
begin
  close (Cola.D);
  close (Cola.C);
end;

Procedure Encolar (var Cola: TipoCola; Reg: TipoRegColaD);
var
  RC: TipoRegColaC;
  RD: TipoRegColaD;
  PosNueva: TipoPosicion;
  RAux: TipoRegColaD;
begin
  seek (Cola.C, _Nulo);
  read (Cola.C, RC);
  if RC.Borrados<>_PosNula //Recupero celula entre los borrados
  then
    begin
      PosNueva:= RC.Borrados;
      seek (Cola.D, PosNueva);
      read (Cola.D, RD);
      RC.Borrados:= RD.Enlace;
    end
  else
    begin
      PosNueva:= filesize (Cola.D);
      if RC.Primero= _PosNula //Inserto en cola nueva o al final
      then
        begin
          RC.Primero:= PosNueva;
          RC.Ultimo:= PosNueva;
          Reg.Enlace:= _PosNula;
        end
      else
        begin
          seek (Cola.D, RC.Ultimo);
          read (Cola.D, RAux);
          RAux.Enlace:= PosNueva;
          seek (Cola.D, RC.Ultimo);
          write (Cola.D, RAux);
          RC.Ultimo:= PosNueva;
          Reg.Enlace:= _PosNula;
        end;
    end;
  RC.Cantidad:= RC.Cantidad+1;
  seek (Cola.C, _Nulo);
  write (Cola.C, RC);
  seek (Cola.D, PosNueva);
  write (Cola.D, Reg);
end;

Procedure Decolar (var Cola:TipoCola);
var
  RC: TipoRegColaC;
  RD: TipoRegColaD;
  PosBorrado: TipoPosicion;
begin
  seek (Cola.C, _Nulo);
  read (Cola.C, RC);
  if RC.Primero= RC.Ultimo //Elimino y paso a cola vacia
  then
    begin
      PosBorrado:= RC.Primero;
      seek (Cola.D, RC.Primero);
      read (Cola.D, RD);
      RD.Enlace:= RC.Borrados;
      RC.Borrados:= RC.Primero;
      RC.Primero:= _PosNula;
      RC.Ultimo:= _PosNula;
    end
  else
    begin
      PosBorrado:= RC.Primero;
      seek (Cola.D, PosBorrado);
      read (Cola.D, RD);
      RC.Primero:= RD.Enlace;
      RD.Enlace:= RC.Borrados;
      RC.Borrados:= PosBorrado;
    end;
  RC.Cantidad:= RC.Cantidad-1;
  seek (Cola.C, _Nulo);
  write (Cola.C, RC);
  seek ( Cola.D, PosBorrado);
  write (Cola.D, RD);
end;

Procedure Frente (var Cola:TipoCola; var Reg: TipoRegColaD);
var
  RC: TipoRegColaC;
begin
  seek (Cola.C, _Nulo);
  read (Cola.C, RC);
  seek (Cola.D, RC.Primero);
  read (Cola.D, Reg);
end;

Function ColaVacia (var Cola:TipoCola):boolean;
var
  RC: TipoRegColaC;
begin
  seek (Cola.C, _Nulo);
  read (Cola.C, RC);
  if RC.Primero=_PosNula
  then
    ColaVacia:= true
  else
    ColaVacia:= false;
end;

Function Ultimo (var Cola: TipoCola): TipoPosicion;
var
 RC: TipoRegColaC;
begin
  seek (Cola.C,_Nulo);
  read (Cola.C, RC);
  Ultimo:= RC.Ultimo;
end;

end.
Responder Con Cita
  #7  
Antiguo 25-08-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
Van a Notar que en la creación de la cola no están puestos los nombres, es porque yo se lo mando por un procedimiento que cree aparte para realizar el sorteo, ese procedimiento es:

Código Delphi [-]
unit LOAuxSorteo;

interface
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, LibreriaArchivosEnlace, LibCola, LOAux,
  RegEquipo1, Menu_Principal;

Procedure Repartir (var Me: TipoMe; var Eq1:TipoRegEquipo1; Puesto: TipoPuesto);

implementation

Procedure Repartir (var Me: TipoMe; var Eq1:TipoRegEquipo1; Puesto:TipoPuesto);
var
  pos: TipoPosicion;          RD,RAux: TipoRegDatos; RC: TipoRegControl;
  RDC: TipoRegColaD;          RCC: TipoRegColaC; Dato: Cadena;
  Control: Cadena;            Corte: boolean;
  i,j,n,m: TipoPosicion;
begin
m:=4; //cantidad de paises que tiene que haber por equipo
CrearMeEquipo1(Equipo1);
//Primero ordeno los primeros 8 puestos distribuyendolo en los grupos
//El puesto nro 1 va en el grupo A, el 2 en el grupo B......
case Puesto of //El puesto, una vez que sale del for, se va modificando de acuerdo al
  1: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  2: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  3: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  4: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  5: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  6: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  7: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
  8: begin     //sorteo
      BuscarPuesto (Me,Puesto,pos);
      seek (Me.D,pos);
      read (Me.D,RD);
      if RD.Sorteado=false
      then
        begin
          seek (Me.D,pos);
          read (Me.D,RD);
          Eq1.Pais:= RD.Pais;
          Eq1.Clave:= RD.Clave;
          RD.Sorteado:= true;
          Insertar (Me,RD,Pos);
          InsertarInfo1(Equipo1,Eq1);
          Dato:= 'Grupo_A.Dat';
          Control:= 'Grupo_A.Con';
          CrearCola(Cola,Dato,Control);
          m:= m-1;
          //Sortear los 3 paises restantes
          corte:= false;
          n:=1;
          for i:=1 to m do
            begin
              while not corte do
              begin
                j:=Random (24);
                seek (Me.D,j);
                read (Me.D,RD);
                seek (Me.D, RD.Enlace);
                read (Me.D, RAux);
                if RAux.Sorteado= true
                then
                  begin
                    corte:= true;
                    Eq1.Clave:= RD.Clave;
                    Eq1.Pais:= RD.Pais;
                    InsertarInfo1(Equipo1,Eq1);
                    RAux.Sorteado:= true;
                    Insertar (Me,RAux,RD.Enlace);
                  end;
              end;
            end;
        end;
     end;
end;

end;
end.
Responder Con Cita
  #8  
Antiguo 25-08-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
La parte del sorteo concluye en este procedimiento:

Código Delphi [-]
procedure TForm5.Button1Click(Sender: TObject);
var
  Puesto: TipoPuesto; Cola1,Cola2: TipoCola;
  i, fil, col: TipoPos;
  Eq1: TipoRegEquipo1;
  RDC, RDC2: TipoRegColaD;
begin
AbrirMe (Me);
for Puesto:=1 to _ultimo do
  begin
    Repartir (Me,Eq1,Puesto);
    AbrirCola(Cola);
    Decolar (Cola);
    for i:=1 to _RangoSup do        //Primeras dos jugadas--> Pais1 VS Pais2
    begin                                               //--> Pais3 VS Pails4
      case i of
        1: begin
            CapturarInfo1 (Equipo1,i,Eq1);
            RDC.LocalClave:= Eq1.Clave;
            RDC.EquipoLocal:= Eq1.Pais;
           end;
        2: begin
            CapturarInfo1(Equipo1,i,Eq1);
            RDC.VisitanteClave:= Eq1.Clave;
            RDC.EquipoVisitante:= Eq1.Pais;
            Encolar(Cola,RDC);
           end;
        3: begin
            Decolar (Cola);
            CapturarInfo1 (Equipo1,i,Eq1);
            RDC.LocalClave:= Eq1.Clave;
            RDC.EquipoLocal:= Eq1.Pais;
           end;
        4: begin
            CapturarInfo1 (Equipo1,i,Eq1);
            RDC.VisitanteClave:= Eq1.Clave;
            RDC.EquipoVisitante:= Eq1.Pais;
           end;
      end;
    end;
    Decolar (Cola1);
    Decolar (Cola2);
    for i:=1 to _RangoSup do //Jugadas 3 y 4. Queda:
    begin                    //Pais1 VS Pais3
      if i=1                 //Pais2 VS Pais3
      then
        begin
          CapturarInfo1 (Equipo1,i,Eq1);
          RDC.LocalClave:= Eq1.Clave;
          RDC.EquipoLocal:= Eq1.Pais;
        end
      else
        if i=2
        then
          begin
            CapturarInfo1(Equipo1,i,Eq1);
            RDC2.LocalClave:= Eq1.Clave;
            RDC2.EquipoLocal:= Eq1.Pais;
          end
        else
          if i=3   //Queda siempre como visitante
          then
            begin
              CapturarInfo1 (Equipo1,i,Eq1);
              RDC.VisitanteClave:= Eq1.Clave;
              RDC2.VisitanteClave:= Eq1.Clave;
              RDC.EquipoVisitante:= Eq1.Pais;
              RDC2.EquipoVisitante:= Eq1.Pais;
            end
          else
            begin
              Encolar(Cola1,RDC);
              Encolar(Cola2,RDC2);
            end;
    end;
    Decolar (Cola1);
    Decolar (Cola2);
    i:= 4;
    while i>=_RangoInf do  // Pais4 VS Pais2
      begin                // Pais4 VS Pais1
        if i=4
        then  //Queda siempre como Local
          begin
            CapturarInfo1 (Equipo1,i,Eq1);
            RDC.LocalClave:= Eq1.Clave;
            RDC2.LocalClave:= Eq1.Clave;
            RDC.EquipoLocal:= Eq1.Pais;
            RDC2.EquipoLocal:= Eq1.Pais;
          end
        else
          if i=2
          then
            begin
              CapturarInfo1(Equipo1,i,Eq1);
              RDC.VisitanteClave:= Eq1.Clave;
              RDC.EquipoVisitante:= Eq1.Pais;
            end
          else
            if i=1
            then
              begin
                CapturarInfo1(Equipo1,i,Eq1);
                RDC2.VisitanteClave:= Eq1.Clave;
                RDC2.EquipoVisitante:= Eq1.Pais;
              end;
        i:= i-1;
      end;
      Encolar (Cola1,RDC);
      Encolar (Cola2,RDC2);
  end;

//Mostrar en el Formulario

StringGrid1.Cells[0, 0]:= 'Local';
StringGrid1.Cells[1, 0]:= 'Visitante';
StringGrid2.Cells[0, 0]:= 'Local';
StringGrid2.Cells[1, 0]:= 'Visitante';
StringGrid3.Cells[0, 0]:= 'Local';
StringGrid3.Cells[1, 0]:= 'Visitante';
StringGrid4.Cells[0, 0]:= 'Local';
StringGrid4.Cells[1, 0]:= 'Visitante';
StringGrid5.Cells[0, 0]:= 'Local';
StringGrid5.Cells[1, 0]:= 'Visitante';
StringGrid6.Cells[0, 0]:= 'Local';
StringGrid6.Cells[1, 0]:= 'Visitante';
StringGrid7.Cells[0, 0]:= 'Local';
StringGrid7.Cells[1, 0]:= 'Visitante';
StringGrid8.Cells[0, 0]:= 'Local';
StringGrid8.Cells[1, 0]:= 'Visitante';

i:=1;
Fil:=1;
while i<=8 do
begin
  Decolar (Cola);
  case i of
    1: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid1.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid1.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    2: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid2.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid2.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    3: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid3.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid3.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    4: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid4.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid4.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    5: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid5.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid5.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    6: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid6.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid6.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    7: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid7.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid7.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
    8: begin
        while fil<= Ultimo(Cola) do
        begin
          col:= 0;
          while col<=1 do
          begin
            if col= 0
            then
              Stringgrid8.Cells[col,fil]:= RDC.EquipoLocal
            else
              Stringgrid8.Cells[col,fil]:= RDC.EquipoVisitante;
            col:= col+1;
          end;
          fil:=fil+1;
        end;
       end;
  end;
  RDC.PuntosLocal:=0;
  RDC.PuntosVisitante:=0;
  Encolar (Cola,RDC);
  i:= i+1;
end;
Edit1.Clear;
Edit1.SetFocus;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
Edit9.Clear;
Edit10.Clear;
Edit11.Clear;
Edit12.Clear;
Edit13.Clear;
Edit14.Clear;
Edit15.Clear;
Edit16.Clear;
Edit17.Clear;
Edit18.Clear;
Edit19.Clear;
Edit20.Clear;
Edit21.Clear;
Edit22.Clear;
Edit23.Clear;
Edit24.Clear;
Edit25.Clear;
Edit26.Clear;
Edit27.Clear;
Edit28.Clear;
Edit29.Clear;
Edit30.Clear;
Edit31.Clear;
Edit32.Clear;
Edit33.Clear;
Edit34.Clear;
Edit35.Clear;
Edit36.Clear;
Edit37.Clear;
Edit38.Clear;
Edit39.Clear;
Edit40.Clear;
Edit41.Clear;
Edit42.Clear;
Edit43.Clear;
Edit44.Clear;
Edit45.Clear;
Edit46.Clear;
Edit47.Clear;
Edit48.Clear;
Edit49.Clear;
Edit50.Clear;
Edit51.Clear;
Edit52.Clear;
Edit53.Clear;
Edit54.Clear;
Edit55.Clear;
Edit56.Clear;
Edit57.Clear;
Edit58.Clear;
Edit59.Clear;
Edit60.Clear;
Edit61.Clear;
Edit62.Clear;
Edit63.Clear;
Edit64.Clear;
CerrarMe (Me);
CerrarCola(Cola);
end;

Hay también un BuscarPuesto, que acá se los mando aparte:

Código Delphi [-]
function BuscarPuesto(Var Me:TipoMe;Torneo_anterior:TipoPuesto;Var PosAnterior:TipoPosicion):Boolean;
Var
   Enc,Corte:Boolean;
   RC:TipoRegControl;
   RD:TipoRegDatos;
   Primero:Tipoposicion;
Begin
     Seek(Me.C,_Nulo);
     Read(Me.C,RC);
     Enc:=False;
     Corte:=False;
     PosAnterior:=_PosNula;
     Primero:=RC.Primero;
     While (Not Enc) and (Not Corte) and (Primero<>_PosNula) do
     Begin
          Seek(Me.D,Primero);
          Read(Me.D,RD);
          If (RD.Puesto_Anterior= Torneo_anterior) Then
                 Enc:=True
              else
                 If RD.Puesto_Anterior > Torneo_anterior then
                      Corte:=True
                   else
                    Begin
                         PosAnterior:=Primero;
                         Primero:=RD.Enlace;
                    End;
     End;
     BuscarPuesto:=Enc;
End;

El problema ahora es que hay que cargar los goles, que lo hace el usuario. Y ahí caí en la cuenta que nose si se esta haciendo bien, porque no tengo la posibilidad de saber que grupo (archivo) estoy manipulando, porque no están encadenados..
Desde ya muchas gracias!!! =)
Responder Con Cita
  #9  
Antiguo 25-08-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Poder: 0
Valee Va por buen camino
Me falto aclarar que realice un registro sin archivo, solo para poder separar los países elegidos en un registro aparte, y una vez almacenado en la cola se vuelve a reescribir dicho registro.. acá se los dejo

Código Delphi [-]
unit RegEquipo1;

interface

const
  _RangoInf= 1;
  _RangoSup=4;

type
  TipoPos= _RangoInf-1.. _RangoSup;
  RangoVector= _RangoInf.._RangoSup;
  TipoCad= string[20];
  TipoClave= string[3];

  TipoRegEquipo1= record
                    Clave: TipoClave;
                    Pais: TipoCad;
                  end;

  TipoVectorE1= array [RangoVector] of TipoRegEquipo1;

  MeEquipo1= record
              Vector1: TipoVectorE1;
              Ultimo: TipoPos;
              Maximo: TipoPos;
            end;

  procedure CrearMeEquipo1 (var Equipo1:MeEquipo1);
  procedure InsertarInfo1 (var Equipo1:MeEquipo1; Reg:TipoRegEquipo1);
  procedure EliminarInfo1 (var Equipo1:MeEquipo1; Pos:TipoPos);
  function Buscar1 (var Equipo1:MeEquipo1; clave:TipoClave;var Pos:tipoPos):boolean;
  function EstructuraLlena1 (var Equipo1:MeEquipo1):Boolean;
  function EstructuraVacia1 (var Equipo1:MeEquipo1):Boolean;
  Function PrimerElemento1 (var Equipo1:MeEquipo1):TipoPos;
  Function UltimoElemento1 (var Equipo1:MeEquipo1):TipoPos;
  Function ProximoElemento1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
  function ElementoAnterior1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
  procedure CapturarInfo1 (Var Equipo1:MeEquipo1;pos:tipopos;var Reg:TipoRegEquipo1);
  function MeOrdenado1 (var Equipo1:MeEquipo1):boolean;
  procedure OrdenarMe1 (var Equipo1:MeEquipo1);

implementation

procedure CrearMeEquipo1 (var Equipo1:MeEquipo1);
begin
  Equipo1.Ultimo:= _RangoInf-1;
  Equipo1.Maximo:= _RangoSup;
end;

procedure InsertarInfo1 (var Equipo1:MeEquipo1; Reg:TipoRegEquipo1);
begin
  Equipo1.Ultimo:= Equipo1.Ultimo+1;
  Equipo1.Vector1[Equipo1.Ultimo]:= Reg;//Inserta al final
end;

procedure EliminarInfo1 (var Equipo1:MeEquipo1; Pos:TipoPos);
begin
  Equipo1.Vector1[Pos]:= Equipo1.Vector1[Equipo1.Ultimo];
  Equipo1.Ultimo:= Equipo1.Ultimo-1;//Elimino por sustitucion
end;

function Buscar1 (var Equipo1:MeEquipo1; clave:TipoClave;var Pos:tipoPos):boolean;
var
  Enc:boolean;
  pos2:tipopos;
begin
  Enc:= false;
  pos:= _RangoInf;
  while (not Enc) and (Pos<=Equipo1.Ultimo) do
  begin
   if (Equipo1.Vector1[pos].Clave= clave)
   then
    enc:=true
   else
    pos:=pos+1;
  end;
  Buscar1:=Enc;
end;

function EstructuraLlena1 (var Equipo1:MeEquipo1):Boolean;
begin
EstructuraLlena1:= (Equipo1.Ultimo= Equipo1.Maximo);
end;

function EstructuraVacia1 (var Equipo1:MeEquipo1):Boolean;
begin
  EstructuraVacia1:= (Equipo1.Ultimo=_RangoInf-1);
end;

Function PrimerElemento1 (var Equipo1:MeEquipo1):TipoPos;
begin
  if Equipo1.Ultimo=_RangoInf-1
  then
   PrimerElemento1:= _RangoInf-1
  else
   PrimerElemento1:= _RangoInf;
end;

Function UltimoElemento1 (var Equipo1:MeEquipo1):TipoPos;
begin
  UltimoElemento1:= Equipo1.Ultimo;
end;

Function ProximoElemento1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
begin
  if posthen
   ProximoElemento1:=pos+1
  else
   proximoElemento1:=_Rangoinf-1
end;

function ElementoAnterior1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
begin   //Devuelve el elemento anterior de la pos buscada
  ElementoAnterior1:= pos-1;
end;

procedure CapturarInfo1 (Var Equipo1:MeEquipo1;pos:tipopos;var Reg:TipoRegEquipo1);
begin
  Reg:=Equipo1.Vector1[Pos];
end;

function MeOrdenado1 (var Equipo1:MeEquipo1):boolean;
var
  estaordenado: boolean;
  i:tipopos;
begin
  estaOrdenado:= true;
  i:= _Rangoinf;
  while (estaordenado) and (ido
  begin
   if (Equipo1.Vector1[i].clave<=Equipo1.Vector1[i+1].clave)
   then
    i:=i+1
   else
    estaordenado:=false;
   end;
  MeOrdenado1:= estaOrdenado;
end;

procedure OrdenarMe1 (var Equipo1:MeEquipo1);
var
  cantidad, pos,i: tipopos;
  ordenado: boolean;
  Aux: TipoRegEquipo1;
begin
  Ordenado:=false;
  cantidad:=1;

  while (not Ordenado) do
  begin
   pos:=1;
   Ordenado:=true;

   while (i<=Equipo1.Ultimo-cantidad) do
   begin

    if (Equipo1.Vector1[pos].clave>Equipo1.Vector1[pos+1].clave)
    then
      begin
        Aux:= Equipo1.Vector1[pos];
        Equipo1.Vector1[pos]:=Equipo1.Vector1[pos+1];
        Equipo1.Vector1[pos+1]:=aux;
        Ordenado:=false;
      end;
    pos:=pos+1;
   end;
   cantidad:=cantidad+1;
  end;
end;

end.
Responder Con Cita
  #10  
Antiguo 26-08-2014
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
Cita:
Empezado por Valee Ver Mensaje
Ahora tengo otra duda con el mismo trabajo. Resulta que el profesor nos hizo crear la cola mandandole el nombre del archivo, de la siguiente forma:
CrearCola(var Cola: TipoCola;Nombre: string);
De ser así, en cada proceso dentro de la librería, se tiene que poner el nombre¿? Porque ahora lo estoy necesitando y nose si se puede, o como hacerlo.. Como hago para entrar al GrupoA, o al GrupoD¿?
Hola Valee.

Una opción es:
Código Delphi [-]
unit LibCola

interface

...

type
  TipoPosicion= longint;
...

procedure CrearCola (var Cola: TipoCola; aFileName:string);

...

implementation

var
  gFileName: string; // variable global a la unidad

procedure CrearCola (var Cola: TipoCola; aFileName:string);
begin
  gFileName:= aFileName;
  ...
A partir de la asignación, todas las implementaciones de funciones y procedimientos de la unidad podrán acceder a gFileName y no tendrás necesidad de enviarles el nombre de archivo como argumento a cada una (que creo es lo que querías evitar).

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 26-08-2014
matias.blanco matias.blanco is offline
Registrado
NULL
 
Registrado: ago 2014
Posts: 3
Poder: 0
matias.blanco Va por buen camino
Sorteo

Hola Valee!

Creo que va a ser mejor si podes subir el proyecto como ya lo hiciste.
Vamos a poder ayudarte mejor si lo haces.


Saludos.

Matias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Sorteo RAD Studio 2007 Emilio Noticias 170 05-03-2008 23:28:13
Ganador Sorteo RAD Studio 2007 Emilio Noticias 37 18-02-2008 21:37:47


La franja horaria es GMT +2. Ahora son las 01:38:38.


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