[Back to RECORDS SWAG index] [Back to Main SWAG index] [Original]

    {
     ... would anyone know how-to sort a Record With 5 thing in it one of
     which is "NAME"...I want to sort each Record in the Array by name and
     can't figure it out....my Array name is LabelS and my Record name is
     SofT...
    }

    Program sort_Records;

    Type
      index_Type = 1..100;
      soft_Type = Record
                    name,
                    street,
                    city: String[20];
                    state: String[2];
                    zip: Integer
                  end; { Record }
      Labels_Type = Array[index_Type] of soft_Type;

    Var
      Labels: Labels_Type; { an Array of Records }
      index,
      count: index_Type;
      f: Text; { a File on disk holding your Records, we assume 100 }

    { ******************************************** }
    Procedure get_Records(Var f: Text;
                          Var Labels: Labels_Type); Var
      counter: index_Type;

    begin { get_Records }
      For counter := 1 to 100 do
        begin
          With Labels[counter] do
            readln(f, name, street, city, state, zip);
        end;
    end;  { get_Records }

    { ******************************************** }
    Procedure sort_em(Var Labels: Labels_Type);

    Var
      temp: soft_Type;    { a Single Record }
      counter,
      counter2,
      min_index: Integer;

    begin { sort_em }
      For counter := 1 to 99 do { 99 not 100 }
        begin
          min_index := counter;
          For counter2 := counter + 1 to 100 do
            if Labels[counter2].name < Labels[counter].name
              then
                min_index := counter;
          temp := Labels[min_index];
          Labels[min_index] := Labels[counter];
          Labels[counter] := temp
        end;
    end;  { sort_em }

    { ******************************************** }

    Procedure Write_Labels(Var Labels: Labels_Type;
                           Var f: Text);
    Var
      counter: index_Type;

    begin { Write_Labels }
      For counter := 1 to 100 do
        begin
          With Labels[counter] do
            Writeln(f, name, street, city, state, zip);
        end;
    end;  { Write_Labels }

    { ******************************************** }

    begin { main }
      assign(f, 'DATAFile.DAT'); { or whatever it is on your disk }
      reset(f);
      get_Records(f, Labels);
      sort_em(Labels);
      reWrite(f);
      Write_Labels(Labels, f);
      close(f)
    end. { main }

[Back to RECORDS SWAG index] [Back to Main SWAG index] [Original]