Pascal/Turbo Pascal - necesito ayuda para realizar un diccionario en español en pascal! utilizando archivos y registro!

 
Vista:

necesito ayuda para realizar un diccionario en español en pascal! utilizando archivos y registro!

Publicado por jtcle (2 intervenciones) el 15/02/2012 22:39:21
hola! necesito ayuda para crear un diccionario en pascal, utilizando archivos y registro! tiene q ser un diccionario en español de la manera mas sencilla! gracias por su apoyo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

necesito ayuda para realizar un diccionario en español en pascal! utilizando archivos y registro!

Publicado por ramon (2158 intervenciones) el 16/02/2012 22:35:52
{Tal como pides programa corto tienes dos formas de entrar datos la activa es la mejor bajo mi punto de vista pero tu elije si te gusta la otra cambia lo espero sea esto lo que querías}

program dicionar;
uses
crt;
type
regdiccionario = record
palabra : string[20];
significado : string;
end;

var
dicci : array[1..100] of regdiccionario;
fdic : file of regdiccionario;
tecla : char;
cont : integer;


function entradadatos(d : char) : string;
var
long, i, x, y : integer;
datext : string;
begin
if (d = 'p') or (d = 'P') then
begin
gotoxy(4,4);write('Entre Palabra : ');
x := 20;
y := 4;
long := 20;
end;
if (d = 's') or (d = 'S') then
begin
gotoxy(4,5);write('Entre Significado : ');
x := 24;
y := 5;
long := 255;
end;
i := 1;
gotoxy(x,y);
repeat
tecla := readkey;
if tecla in[#29..#126,#164,#165] then
begin
datext[i] := tecla;
datext[0] := chr(i);
gotoxy(x,y);write(datext[i]);
i := i + 1;
x := x + 1;
if i > long then
i := long;
if x > 65 then
begin
y := y + 1;
x := 4;
end;
end;
if tecla = #8 then
begin
i := i - 1;
if i < 1 then
i := 1;
x := x - 1;
datext[i] := ' ';
datext[0] := chr(i);
gotoxy(x,y);write(datext[i]);
end;
until tecla = #13;
entradadatos := copy(datext,1,length(datext));
end;

function entradaread(d : char) : string;
var
long, i, x, y : integer;
datext : string;
begin
if (d = 'p') or (d = 'P') then
begin
gotoxy(4,4);write('Entre Palabra : ');
x := 19;
y := 4;
long := 20;
end;
if (d = 's') or (d = 'S') then
begin
gotoxy(4,5);write('Entre Significado : ');
x := 24;
y := 5;
long := 255;
end;
readln(datext);
if length(datext) > long then
entradaread := copy(datext,1,long)
else
entradaread := copy(datext,1,length(datext));
end;

procedure entradasdiccionario;
var
salir : boolean;
tec : char;
sa : integer;
begin
cont := 1;
salir := false;
repeat
gotoxy(2,2);write('Entrada datos al Diccionario [Enter Final Entrada]');
dicci[cont].palabra := entradadatos('p'); {entradaread('p');}
dicci[cont].significado := entradadatos('s'); {entradaread('s');}
gotoxy(4,10);write('Desea Entrar mas Datos [S/N]');
repeat
tec := readkey;
until tec in['s','S','n','N'];
if tec in['n','N'] then
salir := true
else
begin
salir := false;
cont := cont + 1;
if cont > 100 then
begin
assign(fdic,'dicciona.dic');
{$I-} reset(fdic); {$I+}
if ioresult <> 0 then
begin
rewrite(fdic);
for sa := 1 to cont do
begin
seek(fdic,sa - 1);
write(fdic,dicci[sa]);
end;
close(fdic);
cont := 1;
end
else
begin
for sa := 1 to cont do
begin
seek(fdic,filesize(fdic) + sa - 1);
write(fdic,dicci[sa]);
end;
close(fdic);
cont := 1;
end;
end;
end;
clrscr;
until salir = true;
gotoxy(4,10);write('Desea Guardar los Datos [S/N]');
repeat
tec := readkey;
until tec in['s','S','n','N'];
if tec in['s','S'] then
begin
assign(fdic,'dicciona.dic');
{$I-} reset(fdic); {$I+}
if ioresult <> 0 then
begin
rewrite(fdic);
for sa := 1 to cont do
begin
seek(fdic,sa - 1);
write(fdic,dicci[sa]);
end;
close(fdic);
cont := 1;
end
else
begin
for sa := 1 to cont do
begin
seek(fdic,filesize(fdic) + sa - 1);
write(fdic,dicci[sa]);
end;
close(fdic);
cont := 1;
end;
end;
end;

procedure buscarpalabra;
var
palab : string[20];
tama, i : longint;
encont : boolean;
tt : char;
begin
clrscr;
gotoxy(4,2);write('Busqueda Palabra');
gotoxy(4,5);write('Palabra : ');
gotoxy(14,5);readln(palab);
if length(palab) > 20 then
delete(palab,20,length(palab));
assign(fdic,'dicciona.dic');
{$I-} reset(fdic); {$I+}
if ioresult <> 0 then
begin
writeln('Archivo < diccona.dic > no Encontrado');
exit;
end
else
begin
tama := filesize(fdic) - 1;
i := 0;
encont := false;
repeat
seek(fdic,i);
read(fdic,dicci[1]);
if dicci[1].palabra = palab then
encont := true;
i := i + 1;
until (i > tama) or (encont = true);
if encont = true then
begin
clrscr;
gotoxy(4,2);write('La Palabra Fue [ ',palab,' ]');
gotoxy(4,4);write(dicci[1].palabra);
gotoxy(4,5);write(dicci[1].significado);
gotoxy(4,8);write('<< Pulse Enter >>');
repeat
tt := readkey;
until tt = #13;
end;
end;
close(fdic);
end;

procedure verdicionario;
var
puls : char;
iv, lonv : longint;
begin
assign(fdic,'dicciona.dic');
{$I-} reset(fdic); {$I+}
if ioresult <> 0 then
begin
writeln('Archivo < diccona.dic > no Encontrado');
exit;
end
else
begin
lonv := filesize(fdic) - 1;
iv := 0;
repeat
seek(fdic,iv);
read(fdic,dicci[1]);
clrscr;
writeln(' Use la Teclas [ ',chr(24),chr(25),' ] O Enter Salir');
writeln;
writeln(' ',dicci[1].palabra);
writeln(' ',dicci[1].significado);
puls := readkey;
if puls = #80 then
begin
iv := iv + 1;
if iv > lonv then
iv := lonv;
end;
if puls = #72 then
begin
iv := iv - 1;
if iv < 0 then
iv := 0;
end;
until puls = #13;
close(fdic);
end;
end;

procedure ordenardiccionario;
var
hl, il, len : longint;
tempo : regdiccionario;
begin
assign(fdic,'dicciona.dic');
{$I-} reset(fdic); {$I+}
if ioresult <> 0 then
begin
writeln('Archivo < diccona.dic > no Encontrado');
exit;
end
else
begin
len := filesize(fdic) - 1;
for il := 0 to len do
begin
seek(fdic,il);
read(fdic,dicci[1]);
for hl := len downto il do
begin
seek(fdic,hl);
read(fdic,dicci[2]);
if dicci[1].palabra > dicci[2].palabra then
begin
tempo.palabra := dicci[1].palabra;
tempo.significado := dicci[1].significado;
dicci[1].palabra := dicci[2].palabra;
dicci[1].significado := dicci[2].significado;
dicci[2].palabra := tempo.palabra;
dicci[2].significado := tempo.significado;
seek(fdic,il);
write(fdic,dicci[1]);
seek(fdic,hl);
write(fdic,dicci[2]);
end;
end;
end;
close(fdic);
end;
end;

procedure menu;
var
tl : char;
sal : boolean;
begin
sal := false;
repeat
clrscr;
gotoxy(4,2);write('*** MENU GENERAL ***');
gotoxy(4,4);write(' 1 = Entrada Datos');
gotoxy(4,5);write(' 2 = Busca Palabra');
gotoxy(4,6);write(' 3 = Ver Diccionario');
gotoxy(4,7);write(' 4 = Ordenar Diccionario');
gotoxy(4,8);write(' 5 = Salir');
tl := readkey;
if tl in[#49..#53] then
begin
clrscr;
case tl of
#49 : entradasdiccionario;
#50 : buscarpalabra;
#51 : verdicionario;
#52 : ordenardiccionario;
#53 : sal := true;
end;
end;
until sal = true;
end;


begin
clrscr;
menu;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

necesito ayuda para realizar un diccionario en español en pascal! utilizando archivos y registro!

Publicado por jtcle (2 intervenciones) el 17/02/2012 01:02:14
muchas gracias! justo asi lo necesitaba! le cambiare unas cosas nada mas! saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar