Tema: Sorteo
Ver Mensaje Individual
  #6  
Antiguo 25-08-2014
Valee Valee is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 19
Reputación: 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