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 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 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 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.