[Delphi] Baza danych na klasie

Witam mam pewne problemu które pewnie dla niektórych okażą się banalne a więc najpierw treść zadania:

Zdefiniować rekord KIEROWCA o następujących polach:

Dane(imię, nazwisko, adres)

samochód(marka, nr rejestracyjny)

kursy(tablica zawierająca liczby określające ilość przejechanych kilometrów)

Utwórz bazę danych przechowującą informację o zadanej liczbie kierowców. Napisz procedury wczytywania i wyświetlania danych zawartych w tym rekordzie (wykorzystaj instrukcję WITH). Dodaj funkcję obliczającą wynagrodzenie dla kierowcy, przyjmując stawkę 0.80 zł/km. Dodaj funkcję obliczającą ilość kilometrów przejechanych przez wszystkich kierowców z bazy.

I takie rekord mamy przekształcić w taki o to sposób

-Zamiast rekordu dac klase

-Zamiast tablic statycznych dac dynamicza

-Zapis do pliku

-Odczyt z pliku

-Dodac konstruktor

Część większą juz zrobiłem ale mam problem z funkcją liczącą ilośc wszystkich km przejechanych przez kierowców do zapisu/odczytu jeszcze nie doszedłem

Zamieszczam mój kod jakby był ktoś miły i rzucił na to okiem i powiedzial co gdzie jak było by fajnie

program Projekt;


{$APPTYPE CONSOLE}


uses

  SysUtils;


type Tsamochod=record

         marka:string[20];

         nr_rej:byte;

       end;


    type TDane=record

         imie:string[20];

         nazwisko:string[40];

         adres:string[50];

       end;


    type Tkursy_tab=array of integer;


      type Tkierowca=class

      private

           Dane_wlasciciela:TDane;

           Samochod:Tsamochod;

           Kursy:Tkursy_tab;

           ilosc_kurs:integer;

          public

          procedure wczytaj();

          procedure wyswietl();

          function oblicz():real;


          procedure sumak(var A:TKierowca);

      end;


        type TKierowcy=array of TKierowca;




       function Tkierowca.oblicz(): real;

       var

       i:integer; S:real; stawka:real;

       const b=0.80;

          begin

               S:=0;

               for i:=0 to ilosc_kurs-1 do

                          begin

                 S:=S+Kursy[i];

                 end;

                 stawka:=S*b;

                 result:=stawka;



          end;


procedure Tkierowca.sumak(var A: TKierowca);

              var S:real; i:integer;

       begin

           for i:=0 to ilosc_kier -1 do





       end;


procedure Tkierowca.wczytaj;

var i:integer;

begin

                writeln('Podaj imie');

            readln(Dane_wlasciciela.imie);


            writeln('Podaj nazwisko');

                  readln(Dane_wlasciciela.nazwisko);


                  writeln('Podaj adres');

                  readln(Dane_wlasciciela.adres);


               writeln ('Podaj marke');

               readln(Samochod.marka);


               writeln('Podaj nr_rej');

               readln(Samochod.nr_rej);



                writeln('Podaj ilosc kursow');

                readln(ilosc_kurs);

                setlength(Kursy,ilosc_kurs);

                for i := 0 to ilosc_kurs-1 do

                begin

                              writeln('Podaj ilosc km');

                        readln(Kursy[i]);

                      end;

end;


procedure Tkierowca.wyswietl;

var

i:integer;

begin


  writeln('Imie wlasciciela ',Dane_wlasciciela.imie);

          writeln('Nazwisko wlasciciela ',Dane_wlasciciela.nazwisko);

          writeln('Adres wlasciciela ',Dane_wlasciciela.adres);

          writeln('Marka ', Samochod.marka);

          writeln('Nr.Rej ', Samochod.nr_rej);

          for i:=0 to ilosc_kurs-1 do

          writeln('Ilosc Km ', Kursy[i]);




end;



        var Baza:TKierowcy;

        ilosc_kier:integer;

        i:integer;

        opcja,pom:integer;

        k:real;

        { Tkierowca }

begin

writeln ('Wczytac z pliku [1] czy z klawiatury [2]');

                  readln(pom);

               if pom=1 then

                  begin


                  end


         else

             begin

               writeln('Podaj ilosc kierowcow');

        readln(ilosc_kier);

        setlength(Baza,ilosc_kier);

        for i:=0 to ilosc_kier-1 do

        Baza[i]:=TKierowca.Create;

           for i:=0 to ilosc_kier-1 do


         begin

         writeln('Kierowca nr',i+1);

         Baza[i].wczytaj;

         end;

           end;











   begin



          repeat

         writeln('[1] - Wczytaj baze');

         writeln('[2] - Wypisz');

         writeln('[3] - Koniec');

         writeln('[4] - zmien kierowce');

         writeln('[5] - ktorego kierowce chcesz wypisac');

         writeln('[6] - Oblicz wynagrodzenie');

         readln(opcja);

         case opcja of

         1:begin

           writeln ('Wczytac z pliku [1] czy z klawiatury [2]');

                  readln(pom);

               if pom=1 then

                  begin


                  end


         else

             begin

               writeln('Podaj ilosc kierowcow');

        readln(ilosc_kier);

        setlength(Baza,ilosc_kier);

        for i:=0 to ilosc_kier-1 do

        Baza[i]:=TKierowca.Create;

           for i:=0 to ilosc_kier-1 do


         begin

         writeln('Kierowca nr',i+1);

         Baza[i].wczytaj;

         end;

           end;

         end;


         2:begin


            for i:=0 to ilosc_kier-1 do


         begin

         writeln('Kierowca nr',i+1);

         Baza[i].wyswietl;

         end;

            end;

            4: begin

              writeln ('ktorego kierowce chcesz zmienic');

              readln(pom);

              writeln('kierowca nr',pom);

              baza[pom-1].wczytaj;

            end;

            5: begin


                   begin

              writeln ('ktorego kierowce chcesz wypisac');

              readln(pom);

              baza[pom-1].wyswietl;

                   end;

            end;

               6: begin

               writeln ('Wynagrodzenie dla kierowcy numer?');

               readln(pom);




               writeln(baza[pom-1].oblicz:3:10);


             end;

         3:begin

           writeln('KONIEC PROGRAMU :(');

         end;


                 end;




       until opcja=3;

       readln;





      end;

  { TODO -oUser -cConsole Main : Insert code here }

end.

Nie powiedziałeś jaki problem masz z tą (właściwie już metodą)?

szczerze to nie mam pojęcia jak ją napisać próbowałem prawie że na każdy sposób i jedyne do czego udało mi się dojśc to zrobić ze liczy sumę km każdego kierowcy z osobna…

I bardzo dobrze tylko dodaj pętle po kierowcom i sumuj to co zwrócą te metody dla każdego osobno.