Pascal/Turbo Pascal - Ordenar Alfabeticamente

   
Vista:

Ordenar Alfabeticamente

Publicado por Edwin B. (7 intervenciones) el 12/08/2010 05:26:40
Hola amigos, estoy adaptando un codigo a mis necesidades y originalmente el codigo ordena un listado pero de acuerdo al numero y lo que kisiera es poder ordenarlo alfabeticamente ya que es un diccionario de terminos.

Este es el codigo que estoy trabajando:
Procedure Listado(TiRegistro:TipoRegistro;var TiArchivo:tipoArchivo);
Var
Contador:integer;
Begin
textattr:=7+0*16;{atributos de pantalla}
Clrscr;
Gotoxy(2,2);write('Termino Significado');
Seek(TiArchivo,0); {Posicionamos al inicio el puntero del archivo}
contador:=3;
While not eof(TiArchivo) do
Begin
Read(TiArchivo,TIRegistro); {Leemos el Registro segun posicion del puntero}
gotoxy(2,contador); Write(TIRegistro.Termino);
gotoxy(17,contador); Write(TIRegistro.significado);
inc(contador);
End;
readkey;
End;
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

RE:Ordenar Alfabeticamente

Publicado por epayan (71 intervenciones) el 15/08/2010 18:58:08
podrias volcar a un lista (apuntadores) el contenido del archivo y ordenarlo de esta forma ordenar la lista seria mas rapido, otra manera es ordenar directamente el archivo pero de esta forma seria mas lento cuanto mas registros tengas en el archivo..

saludos

Procedure OrdenaTermino(Var TAAux:TipoArchivo);
Var
Contador1,contador2,Tamanio:longint;
TmpRAux,R1Auxiliar,R2Auxiliar,RR : TipoRegistro;
Begin
Gotoxy(20,15);Write('Espere un Momento Ordenando Por Termino');

AperturaArchivoProductos(TAAux,"Ruta del Archivo a abrir");
Tamanio:=FileSize(TAAux)-1;
If Tamanio > 1 then
Begin
For Contador1:= 0 to Tamanio do
Begin
Seek(TAAux,Contador1);
Read(TAAux,R1Auxiliar);
For Contador2 := 0 to Tamanio do
Begin
Seek(TAAux,Contador2);
Read(TAAux,R2Auxiliar);
If R1Auxiliar.Termino < R2Auxiliar.Termino then
Begin
Seek(TAAux,Contador1);
Read(TAAux,R1Auxiliar);

TmpRAux:=R1Auxiliar;

Seek(TAAux,Contador2);
read(TAAux,R2Auxiliar);

Seek(TAAux,Contador1);
Write(TAAux,R2Auxiliar);

Seek(TAAux,Contador2);
Write(TAAux,TmpRAux);
End;
End;
End;

End;
Close(TAAux);
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