4 Unidad General para utilizar con los programas que utilicen el archivo de comandos
\r
5 Tambien incluye algunas funciones y procedimientos utiles para la manipulacion de datos.
\r
11 GRAL, DOS, CRT, TABLA;
\r
18 Movimiento: string[1];
\r
19 DNI_hasta: string[8];
\r
21 ID_COMANDO = ( INS, INSO, ORDEN, BC, BR, LS, LC, BO, MO, LI, DESC );
\r
23 T_ARCHIVO_COMANDOS = file of T_COMANDO;
\r
25 {----------------------------------------------------------------------------}
\r
26 {- Procedimiento: Muestra un mensaje de bienvenida al programa
\r
27 {----------------------------------------------------------------------------}
\r
28 procedure mensajeDeEntrada( descripcion: String );
\r
30 {----------------------------------------------------------------------------}
\r
31 {- Funcion: verifica si existe un archivo.
\r
32 {----------------------------------------------------------------------------}
\r
33 function existeArchivo( nombre: String ): boolean;
\r
35 {----------------------------------------------------------------------------}
\r
36 {- Procedimiento: Procesa los parametros de la ejecucion del programa
\r
37 {----------------------------------------------------------------------------}
\r
38 procedure procesarParametros( var archivoEntrada: T_ARCHIVO_COMANDOS; var archivoSalida: text; var error: boolean );
\r
40 {----------------------------------------------------------------------------}
\r
41 {- Procedimiento: Muestra un mensaje de error y la sintaxis del programa.
\r
42 {----------------------------------------------------------------------------}
\r
43 procedure errorParametros;
\r
45 {----------------------------------------------------------------------------}
\r
46 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
47 {----------------------------------------------------------------------------}
\r
48 procedure intro( var f: text );
\r
50 {----------------------------------------------------------------------------}
\r
51 {- Funcion: Convierte un dato del tipo T_MOVIM en un string
\r
52 {----------------------------------------------------------------------------}
\r
53 function movimToStr( m: T_MOVIM): string;
\r
55 {----------------------------------------------------------------------------}
\r
56 {- Funcion: Convierte un dato del tipo ID_COMANDO en un string
\r
57 {----------------------------------------------------------------------------}
\r
58 function comandoToStr( c: ID_COMANDO ): string;
\r
60 {----------------------------------------------------------------------------}
\r
61 {- Funcion: Convierte un string en un dato del tipo ID_COMANDO
\r
62 {----------------------------------------------------------------------------}
\r
63 function strToComando( s: string ): ID_COMANDO;
\r
65 {----------------------------------------------------------------------------}
\r
66 {- Funcion: Convierte un string en un dato del tipo T_MOVIM
\r
67 {----------------------------------------------------------------------------}
\r
68 function strToMovim( s: string; var error: boolean ): T_MOVIM;
\r
70 {----------------------------------------------------------------------------}
\r
71 {- Procedimiento: Agrega el texto de un comando a ejecutar en el archivo de salida
\r
72 {----------------------------------------------------------------------------}
\r
73 procedure agregaComando( var f: text; c: T_COMANDO );
\r
75 {----------------------------------------------------------------------------}
\r
76 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
77 {----------------------------------------------------------------------------}
\r
78 procedure agregaError( var f: text; cmd, msg: string );
\r
80 {----------------------------------------------------------------------------}
\r
81 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
82 {----------------------------------------------------------------------------}
\r
83 procedure agregaRegistro( var f: text; cmd: string; r: T_REGISTRO );
\r
88 {----------------------------------------------------------------------------}
\r
89 {- Procedimiento: Muestra un mensaje de bienvenida al programa
\r
90 {----------------------------------------------------------------------------}
\r
91 procedure mensajeDeEntrada( descripcion: String );
\r
95 writeln( 'ALGORITMOS Y PROGRAMACION II - Trabajo Practico n. 1' );
\r
96 writeln( 'GRUPO 22 - Primer Cuatrimestre 2000' );
\r
98 writeln( descripcion );
\r
102 {-- Fin del Procedimiento --}
\r
104 {----------------------------------------------------------------------------}
\r
105 {- Funcion: verifica si existe un archivo.
\r
106 {----------------------------------------------------------------------------}
\r
108 function existeArchivo( nombre: String ): boolean;
\r
110 { funcion extrida de la ayuda del Turbo Pascal 7 }
\r
117 Assign( arch, nombre );
\r
118 FileMode := 0; { Solo lectura }
\r
122 ExisteArchivo := (IOResult = 0) and (nombre <> '');
\r
125 {-- Fin de la Funcion ExisteArchivo --}
\r
127 {----------------------------------------------------------------------------}
\r
128 {- Procedimiento: Procesa los parametros de la ejecucion del programa
\r
129 {----------------------------------------------------------------------------}
\r
131 procedure procesarParametros( var archivoEntrada: T_ARCHIVO_COMANDOS; var archivoSalida: text; var error: boolean );
\r
134 if ( paramcount = 2 ) then begin
\r
135 if ( existeArchivo( paramstr( 1 ) ) ) then begin
\r
136 assign( archivoEntrada, paramstr( 1 ) );
\r
137 reset( archivoEntrada );
\r
138 assign( archivoSalida, paramstr( 2 ) );
\r
139 rewrite( archivoSalida );
\r
149 {-- Fin del Procedimiento procesarParametros --}
\r
151 {----------------------------------------------------------------------------}
\r
152 {- Procedimiento: Muestra un mensaje de error y la sintaxis del programa.
\r
153 {----------------------------------------------------------------------------}
\r
155 procedure errorParametros;
\r
163 fsplit( paramstr( 0 ), dir, fname, ext );
\r
166 writeln( 'ERROR: No se pudieron abrir los archivos o numero de parametros incorrectos.' );
\r
167 writeln( ' Verifique que el archivo de comandos exista y que el archivo de salida no.' );
\r
168 writeln( ' Ademas asegurese de que tenga permiso de escritura en la unidad que desee' );
\r
169 writeln( ' guardar el archivo de salida.' );
\r
171 writeln( 'Modo de uso:' );
\r
172 writeln( ' ', fname, ' archivo_entrada archivo_salida' );
\r
176 {-- Fin del Procedimiento errorParametros --}
\r
178 {----------------------------------------------------------------------------}
\r
179 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
180 {----------------------------------------------------------------------------}
\r
182 procedure intro( var f: text );
\r
187 writeln( f, 'Archivo de Comandos : ', ParamStr( 1 ) );
\r
188 writeln( f, 'Archivo de Informacion : ', ParamStr( 2 ) );
\r
192 {-- Fin del Procedimiento --}
\r
194 {----------------------------------------------------------------------------}
\r
195 {- Funcion: Convierte un dato del tipo T_MOVIM en un string
\r
196 {----------------------------------------------------------------------------}
\r
198 function movimToStr( m: T_MOVIM): string;
\r
213 {-- Fin del Procedimiento --}
\r
215 {----------------------------------------------------------------------------}
\r
216 {- Funcion: Convierte un dato del tipo ID_COMANDO en un string
\r
217 {----------------------------------------------------------------------------}
\r
219 function comandoToStr( c: ID_COMANDO ): string;
\r
224 comandoToStr := 'IN';
\r
226 comandoToStr := 'IO';
\r
228 comandoToStr := 'OR';
\r
230 comandoToStr := 'BC';
\r
232 comandoToStr := 'BR';
\r
234 comandoToStr := 'LS';
\r
236 comandoToStr := 'LC';
\r
238 comandoToStr := 'BO';
\r
240 comandoToStr := 'MO';
\r
242 comandoToStr := 'LI';
\r
244 comandoToStr := 'DE';
\r
248 {-- Fin del Procedimiento --}
\r
250 {----------------------------------------------------------------------------}
\r
251 {- Funcion: Convierte un string en un dato del tipo ID_COMANDO
\r
252 {----------------------------------------------------------------------------}
\r
254 function strToComando( s: string ): ID_COMANDO;
\r
257 if ( ( s = 'IN' ) or ( s = 'in' ) or ( s = 'In' ) or ( s = 'iN' ) ) then
\r
258 strToComando := INS
\r
259 else if ( ( s = 'IO' ) or ( s = 'io' ) or ( s = 'Io' ) or ( s = 'iO' ) ) then
\r
260 strToComando := INSO
\r
261 else if ( ( s = 'OR' ) or ( s = 'or' ) or ( s = 'Or' ) or ( s = 'oR' ) ) then
\r
262 strToComando := ORDEN
\r
263 else if ( ( s = 'BC' ) or ( s = 'bc' ) or ( s = 'Bc' ) or ( s = 'bC' ) ) then
\r
265 else if ( ( s = 'BR' ) or ( s = 'br' ) or ( s = 'Br' ) or ( s = 'bR' ) ) then
\r
267 else if ( ( s = 'LS' ) or ( s = 'ls' ) or ( s = 'Ls' ) or ( s = 'lS' ) ) then
\r
269 else if ( ( s = 'LC' ) or ( s = 'lc' ) or ( s = 'Lc' ) or ( s = 'lC' ) ) then
\r
271 else if ( ( s = 'BO' ) or ( s = 'bo' ) or ( s = 'bO' ) or ( s = 'Bo' ) ) then
\r
273 else if ( ( s = 'MO' ) or ( s = 'mo' ) or ( s = 'mO' ) or ( s = 'Mo' ) ) then
\r
275 else if ( ( s = 'LI' ) or ( s = 'li' ) or ( s = 'Li' ) or ( s = 'lI' ) ) then
\r
278 strToComando := DESC;
\r
281 {-- Fin del Procedimiento --}
\r
283 {----------------------------------------------------------------------------}
\r
284 {- Funcion: Convierte un string en un dato del tipo T_MOVIM
\r
285 {----------------------------------------------------------------------------}
\r
287 function strToMovim( s: string; var error: boolean ): T_MOVIM;
\r
291 if ( ( s = 'P' ) or ( s = 'p' ) ) then
\r
292 strToMovim := T_MOVIM_primero
\r
293 else if ( ( s = 'U' ) or ( s = 'u' ) ) then
\r
294 strToMovim := T_MOVIM_ultimo
\r
295 else if ( ( s = 'A' ) or ( s = 'a' ) ) then
\r
296 strToMovim := T_MOVIM_anterior
\r
297 else if ( ( s = 'S' ) or ( s = 's' ) ) then
\r
298 strToMovim := T_MOVIM_siguiente
\r
300 strToMovim := T_MOVIM_primero;
\r
305 {-- Fin del Procedimiento --}
\r
307 {----------------------------------------------------------------------------}
\r
308 {- Procedimiento: Agrega el texto de un comando a ejecutar en el archivo de salida
\r
309 {----------------------------------------------------------------------------}
\r
311 procedure agregaComando( var f: text; c: T_COMANDO );
\r
319 write( f, '>>> ', comandoToStr( strToComando( c.comando ) ) ); { Para que aparezca en mayusculas }
\r
320 write( f, ' ; ', c.dni );
\r
321 write( f, ' ; ', c.nombre );
\r
322 m := movimToStr( strToMovim( c.Movimiento, err ) );
\r
323 if ( err ) then begin
\r
324 if ( c.movimiento = '*' ) then
\r
329 write( f, ' ; ', m ); { Para que aparezca en mayusculas }
\r
330 write( f, ' ; ', c.dni_hasta );
\r
334 {-- Fin del Procedimiento --}
\r
337 {----------------------------------------------------------------------------}
\r
338 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
339 {----------------------------------------------------------------------------}
\r
341 procedure agregaError( var f: text; cmd, msg: string );
\r
344 writeln( f, ' * ' + comandoToStr( strToComando( cmd ) ) + ' ERROR: ' + msg );
\r
347 {-- Fin del Procedimiento --}
\r
350 {----------------------------------------------------------------------------}
\r
351 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
352 {----------------------------------------------------------------------------}
\r
354 procedure agregaRegistro( var f: text; cmd: string; r: T_REGISTRO );
\r
360 s1 := ' @ ' + comandoToStr( strToComando( cmd ) ) + ' REGISTRO: Clave = ';
\r
361 s2 := ' | Nombre = ' + r.nombre;
\r
362 writeln( f, s1, r.dni, s2 );
\r
365 {-- Fin del Procedimiento --}
\r