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 :)