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-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
  #2  
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
  #3  
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
  #4  
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
  #5  
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
  #6  
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



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 22:28:13
Ganador Sorteo RAD Studio 2007 Emilio Noticias 37 18-02-2008 20:37:47


La franja horaria es GMT +2. Ahora son las 03:19:55.


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