Problem z wyborem w menu, problem zmiany typu danych

0

Witam,
mam dwa problemy:
1.
Tworze program, w ktorym dodaje pytania i odpowiedzi na nie do bazy danych, ktora jest plikiem txt.
Napisalem interface do niego. Interface oparty jets na dwoch oknach. z lewej strony mamy MENU GLOWNE, po ktorym poruszami sie strzalkami (strzalka gora\dol, zaznaczamy opcje, w przypadku enter, wchodzimy do niej)
problem w tym ze zrobilem go na tablicy, gdyz wiem ile elementow bedzie w MENU.

ale teraz, w oknie z prawej strony, zrobilem wyswitlanie pytan z pliku tekstowego.
mam pytanie.
jak zrobić takie poruszanie się, nie wiedząc ile jest elementow?
probowalem zrobic na liscie jednokierunkowej.
pytania wczytywane sa do listy.
na oknie z prawej strony (okno wynikowe), powinny sie wyswietlic, a potem moglibysmy przesuwac kursorem i zaznaczalo by nam sie odpowiednie pytanie. ale nie wiem jak to zrobic. Trzeba jeszcze uwzglenic pojemnosc okna.
Probowalem przypisac to do tablicy 5 elemetnowej. i za pomocą sposobu z MENU GLOWNEGEO wyswietlic to. no ale mam pewne problemy.
ponizej podaje funkcje:

procedure rysuj_menu(var wybor: byte);
var
   i: byte;
   x, y: byte;
begin
     x := 4;
     y := 2;

     textcolor(clr_ttxt);              {text ogolny}
     textbackground(clr_bg);

     gotoxy(x,y);
     writeln('MENU GLOWNE: ');

     y := y + 1;

     for i := low(tablica_menu) to high(tablica_menu) do begin
         if (wybor = i) then
         begin
              textbackground(clr_tbg);
              textcolor(clr_ttxt);
         end
         else
         begin
              textbackground(clr_bg);
              textcolor(clr_txt);
         end;
         y := y + 1;
         gotoxy(x,y);
         writeln(tablica_menu[i]);
     end;
end;


procedure wyswietlaj_wybor (var wybor: byte);
var
i: byte;
y,x: byte;
begin
     i:=1;


     x:= 1;
     y:= 1;
     gotoxy(x,y);

     for i := low(tablica_wyb) to high(tablica_wyb) do begin
         if (wybor = i) then
         begin
              textbackground(clr_tbg);
              textcolor(clr_ttxt);
         end
         else
         begin
              textbackground(clr_pbg);
              textcolor(clr_ptxt);
         end;
         gotoxy(x,y);
         writeln(tablica_wyb[i]);
         y := y + 1;
     end;
end;

procedure pokaz_lista_usun (f:wsk_us);
var

   ilosc_na_stronie: byte;        {ile ma sie wyswitlac na stronie}
   przesuniecie: byte;
   koniec: boolean;
   i:byte;
   wybor: byte;
   numer: integer;

begin
     numer:=1;

     i:= 1;

     ilosc_na_stronie:= 6;
     przesuniecie:=ilosc_na_stronie;

     while f<>nil do
     begin

          write(f^.ID_us,'.', f^.dane_us);
          writeln;
          tablica_wyb[i]:=f^.ID_us;

          inc(i);
          f:=f^.next_us;

          if f^.ID_us = ilosc_na_stronie then
          begin

          i:=1;

          koniec:= false;

          { przesuniecie }

          wyswietlaj_wybor(akt_wybor);

          repeat
                while (keypressed) do begin
                      case readkey of
                      #77: begin
                           clrscr;
                           akt_wybor:=1;
                           textcolor(clr_ttxt);
                           textbackground(clr_bg);

                           koniec := true;
                           break;

                      end;
                      #75: begin
                           koniec:=true;
                           exit;
                      end;
                      #80: begin

                           if (akt_wybor <> high(tablica_wyb)) then akt_wybor := akt_wybor + 1;
                           koniec:=false;
                      end;
                      #72: begin
                           if (akt_wybor <> high(tablica_wyb)+1) then akt_wybor := akt_wybor - 1;
                           koniec:=false;
                      end;
                      #13: write(akt_wybor);
                      end;

                wyswietlaj_wybor(akt_wybor);


                end;
          until koniec;

          ilosc_na_stronie:= ilosc_na_stronie + przesuniecie-1;

          end;

     end;
     writeln;
end;


procedure usun_pytanie;
var
   numer: integer;
   znak: char;
   klawisz: char;
   koniec: boolean;
   pytanie: string;
   i: byte;
   m: byte;
   przes: byte;
begin

     okno_prawe;
     window(37,6,78,23);

     Nr_usun:=1;

     numer:= 1;
     i:=5;
     przes:= 5; {ile bedzie pytan na stronie}

     reset(Plik);

     m:=0;

     while not seekeof(Plik) do
     begin
          readln(Plik, znak);                    { wyswietlenie pytanie }
          if znak = '#' then
          begin

               readln(Plik, pytanie);
               readln(Plik, pytanie);
               readln(Plik, pytanie);
               readln(Plik, pytanie);
               readln(Plik, pytanie);

               tworz_lista_usun(first_us, numer, pytanie);

               inc(numer);
          end;
     end;


     close(Plik);
     pokaz_lista_usun(first_us);

     zniszcz_lista_usun(first_us);

     okno_lewe;

end;

mam glupi problem :)
chcialbym przypisac kazdemu pytaniu ID.
ID = aktualnej dacie, godzinie.
jesli mam funkcje getdate(), gettime(). to one pobieraja mi wartosci w WORD'zie
jak moge je przekonwertowac do stringa?

dzieki :)

0

Podałbyś chociaż kompilator...
2:
Mógłbyś spróbować IntToStr.

0

sorry,
TURBO PASCAL 7

0
var
  r,m,d,dt:Word;
  r_s,m_s,d_s:string;
  data_string:string;
//...
  GetDate(r,m,d,dt);
  Str(r,r_s);
  Str(m,m_s); 
  Str(d,d_s);
  data_string:=d_s+'-'+m_s+'-'+r_s;

1 użytkowników online, w tym zalogowanych: 0, gości: 1