RE:Matrces, registros...ayuda!!
ok, esperemos que se a lo que buscas o segun entendi
la siguiente es un programita , con un menu , que ejemplifica lo que requieres
saludos
program matrizArchivo;
uses crt;
type
Matriz = array[1..5,1..5] of integer;
Registro = Record
RegistroMatriz:Matriz;
End;
TipoArchivo = file of Registro;
var
Tiporegistro : registro;
TiArchivo:TipoArchivo;
{--------------*------------------*----------------*------------------------}
procedure EliminaciondeArchivo(var AArchivo:Tipoarchivo);
var
Error: Integer;
Tecla:Char;
Begin
Assign(AArchivo,'c:\matriz.dat');
{$I-}
Reset(AArchivo);
Error:=IOResult;
{$I+}
If Error = 0 Then
Begin
Close(AArchivo);
Erase(AArchivo);
End;
gotoxy(1,25);write('Archivo Eliminado ');
End;
{--------------*------------------*----------------*------------------------}
procedure AperturaDeArchivo(var AArchivo:Tipoarchivo);
var
Error: Integer;
Tecla:Char;
Begin
Assign(AArchivo,'c:\matriz.dat');
{$I-}
Reset(AArchivo);
Error:=IOResult;
{$I+}
If Error <> 0 Then
Begin
TextAttr:=14+4*16;
gotoxy(1,25);write('Creando Archivo!! ');
rewrite(AArchivo);
delay(30);
End;
End;
{--------------*------------------*----------------*------------------------}
procedure InicializaRegistro (Var TIRegistro:Registro);
Var
Columna, Renglon:integer;
Begin
For Columna:=1 to 5 do
For Renglon :=1 to 5 do
TIRegistro.RegistroMatriz[Renglon,columna]:= 0;
End;
{--------------*------------------*----------------*------------------------}
procedure LLenaMatrizCarton (Var TIRegistro:Registro );
Var
Valor,Columna, Renglon:integer;
Begin
InicializaRegistro (TIRegistro); {inicializamos la Matriz}
Randomize;{activamos el motor aleatorio}
For Columna:=1 to 5 do
For Renglon :=1 to 5 do
Begin
Valor:= Random(15);
TiRegistro.RegistroMatriz[Renglon,Columna]:= Valor;
End;
End;
{--------------*------------------*----------------*------------------------}
Procedure GuardaRegistroEnArchivo(var TiArchivo:TipoArchivo ; TiRegistro:Registro);
Var
Numero:integer;
Begin
Gotoxy(1,25);Write('Guardando Registro M generado en el Archivo F');
AperturaDeArchivo(TiArchivo);
LLenaMatrizCarton(TiRegistro);
Delay(30);
Seek (TIArchivo,filesize(TIArchivo));{posicionamos el puntero al final del archivo}
Delay(30);
Write(TiArchivo,TiRegistro);{guardamos el registro al final del archivo}
Delay(39);
Close(TiArchivo);
End;
{--------------*------------------*----------------*------------------------}
Procedure ImprimeMatrizPantalla (Var TiArchivo:tipoArchivo; TIRegistro:registro);
Var
salto,Columna, Renglon:integer;
Begin
AperturaDeArchivo(TiArchivo);
Seek(TiArchivo,0); {Posicionamos al inicio el puntero del archivo}
Read(TiArchivo,TIRegistro); {Leemos el Registro segun posicion del puntero}
Close(TiArchivo);
textattr:=2+0*16;
Gotoxy(33,4);Write('M A T R I Z');
textattr:=7+0*16;
Salto:=3;
For Renglon:=1 to 5 do
Begin
For Columna :=1 to 5 do
Begin
gotoxy(27+Columna+salto,6+Renglon); write(' ',TiRegistro.RegistroMatriz[Renglon,Columna],' ');
inc(salto,3);
End;
salto:=3;
End;
Gotoxy(10,15);write('Pulse cualquier tecla, para continuar....');
readkey;
End;
{--------------*------------------*----------------*------------------------}
Procedure Menu(Var TIArchivo:TipoArchivo; TiRegistro:Registro);
Var
Tecla:char;
Begin
textattr:=7+0*16;
clrscr;
Repeat
textattr:=7+0*16;
Clrscr;
Gotoxy(25,10);Write('Carga matriz en M y grabar en F ...[1]');
Gotoxy(25,11);Write('Presenta la Matriz desde M ..[2]');
Gotoxy(25,12);Write('Salir....................[4]');
Tecla:=Readkey;
Case Tecla of
'1':Begin
textattr:=7+0*16;
clrscr;
EliminaciondeArchivo(TiArchivo);
GuardaRegistroEnArchivo(TiArchivo,TiRegistro);
End;
'2':Begin
textattr:=7+0*16;
ImprimeMatrizPantalla (TiArchivo,TIRegistro);
clrscr;
End;
End;{case}
Until Tecla = '3';
End;
{--------------*------------------*----------------*------------------------}
{cuerpo del programa}
Begin
Menu(TIArchivo, TipoRegistro);
End.