Potrzebuję pilnie pomocy z napisaniem programu mającego zapisać dane o fakturze do pliku, a następnie ich wczytanie, wypisanie na ekran i wyszukanie danego rekordu po nazwisku w środowisku Delphi. Program kompiluje się, ale przy wypisywaniu na ekran danych z pliku po wpisaniu nazwiska pojawia się błąd 'invalid numeric input'.
uses
SysUtils;
type x=record
imie:string;
nazwisko:string;
data:string;
iloscartykulow:integer;
nazwa:array [1..15] of string;
cena:array [1..15] of integer;
ilosc:array [1..15] of integer;
razemart:array [1..15] of integer;
razemfakt:integer;
end;
t=array [1..15] of x;
procedure zapisz(var dane:t; var ilosc2:integer);
var p:text;
g:integer;
a:integer;
i:integer;
name:string;
begin
name:='faktura.txt';
writeln('Prosze stworzyc plik tekstowy faktura.txt w folderze z programem.');
writeln('Prosze zdeklarowac ile faktur ma zostac wprowadzonych do programu: ');
readln(ilosc2);
writeln('Wprowadzanie danych ',ilosc2,' kupujących: ');
assign(p, name);
append(p);
for i:=1 to ilosc2 do
begin
writeln('Imie ',i,' kupujacego: ');
readln(dane[i].imie);
writeln(p, dane[i].imie);
writeln('Nazwisko ',i,' kupujacego: ');
readln(dane[i].nazwisko);
writeln(p, dane[i].nazwisko);
writeln('Data wystawienia faktury ',i,' kupujacego: ');
readln(dane[i].data);
writeln(p, dane[i].data);
writeln('Ile artykulow ma opisywac faktura: ');
readln(dane[i].iloscartykulow);
writeln(p, dane[i].iloscartykulow);
g:=dane[i].iloscartykulow;
dane[i].razemfakt:=0;
for a:=1 to g do
begin
writeln('Podaj nazwe ',a,' produktu: ');
readln(dane[i].nazwa[a]);
writeln(p, dane[i].nazwa[a]);
writeln('Podaj cene ',a,' produktu: ');
readln(dane[i].cena[a]);
writeln(p, dane[i].cena[a]);
writeln('Podaj ilosc sztuk ',a,' produktu: ');
readln(dane[i].ilosc[a]);
writeln(p, dane[i].ilosc[a]);
dane[i].razemart[a]:=(dane[i].cena[a])*(dane[i].ilosc[a]);
writeln(p, dane[i].razemart[a]);
dane[i].razemfakt:=(dane[i].razemfakt)+(dane[i].razemart[a]);
writeln(p, dane[i].razemfakt);
end;
end;
close(p);
end;
procedure szukaj(dane:t; ilosc2:integer);
var p:text;
i:integer;
a:integer;
g:integer;
q:integer;
name:string;
r:string;
begin
name:='faktura.txt';
assign(p, name);
reset(p);
i:=1;
repeat
writeln('Czy wyszukac fakture po nazwisku kupujacego? Wpisz 1 (tak) lub 2 (nie)');
readln(q);
while q=1 do
begin
writeln('Wpisz nazwisko: ');
readln(r);
while not(eof(p)) do
begin
readln(p, dane[i].imie);
readln(p, dane[i].nazwisko);
readln(p, dane[i].data);
readln(p, dane[i].iloscartykulow);
g:=dane[i].iloscartykulow;
for a:=1 to g do
begin
readln(p, dane[i].nazwa[a]);
readln(p, dane[i].cena[a]);
readln(p, dane[i].ilosc[a]);
readln(p, dane[i].razemart[a]);
end;
readln(p, dane[i].razemfakt);
if 'dane[i].nazwisko'='r' then
begin
writeln(dane[i].imie);
writeln(dane[i].nazwisko);
writeln(dane[i].data);
writeln(dane[i].iloscartykulow);
g:=dane[i].iloscartykulow;
for a:=1 to g do
begin
writeln(dane[i].nazwa[a]);
writeln(dane[i].cena[a]);
writeln(dane[i].ilosc[a]);
writeln(dane[i].razemart[a]);
end;
writeln(dane[i].razemfakt);
end;
i:=i+1;
end;
end;
until q=2;
close(p);
end;
var dane2:t;
ilosc3:integer;
begin
zapisz(dane2, ilosc3);
szukaj(dane2, ilosc3);
readln;
end.