GRY-Online.pl --> Archiwum Forum

Pascal potrzebna pomoc! Pilne!

26.01.2008
10:48
smile
[1]

XazaX [ Chor��y ]

Pascal potrzebna pomoc! Pilne!

Otorz chodzi o to ze mam taki programik ktory w pewnym momencie ma zapytac urzytkownika o nazwe pliku do jakiego ma zapisac dane z rekordow, ale dziadostwo nie chce dzialac :/

Podaje kod programu, jesli ktos bylby w stanie pomoc bede wdzieczny, mam jeszcze ~20 min...

program Rekordy;
uses crt;
type
data=record
dzien:1..31;
miesiac:1..12;
rok:word;
end;
osoba=record
imie:string;
nazwisko:string;
dataur:data;
end;
var
Tosoba:array [1..10] of osoba;
oso:osoba;
procedure zapis(os:osoba);
var
user:text;
plik:string;
begin
write('Podaj nazwe pliku: ');
readln(plik);
write('llllllllllllllll');
assign(user,plik + '.txt');
rewrite(user);
writeln(user,os.imie);
writeln(user,os.nazwisko);
writeln(user,os.dataur.dzien);
writeln(user,os.dataur.miesiac);
writeln(user,os.dataur.rok);
close(user);
end;
procedure wczytajosobe(var os:osoba);
begin
with os do
begin
write('Podaj imie: ');
readln(imie);
write('Podaj nazwisko: ');
readln(nazwisko);
with dataur do
begin
write('Podaj dzien urodzenia: ');
read(dzien);
write('Podaj miesiac urodzenia: ');
read(miesiac);
write('Podaj rok urodzenia: ');
read(rok);
end;
end;

end;
procedure wypiszosobe(os:osoba);
begin
writeln('*************************');
writeln('Imie: ',os.imie);
writeln('Nazwisko: ',os.nazwisko);
writeln('Data urodzenia: ',os.dataur.dzien,'-',os.dataur.miesiac,'-',os.dataur.rok);
end;

begin
wczytajosobe(oso);
wypiszosobe(oso);
zapis(oso);

readkey;
end.

26.01.2008
11:31
[2]

GBreal.II [ floydian ]

sprobuj napierw do wczytanej z klawiatury nazwy dodac ".txt", a dopiero pozniej dac assign, ale juz do dluzszego stringa.

26.01.2008
11:45
[3]

XazaX [ Chor��y ]

Tylko ze chodzi o to ze program w ogole nie chce wczytac od uzytkownika nazwy pliku w tym momencie:

write('Podaj nazwe pliku: ');
readln(plik);
write('llllllllllllllll');
assign(user,plik + '.txt');

zaraz po 'Podaj nazwe pliku: ' wyswietla ta linijke lll... i przechodzi od razu do readkey; i w ogole nie mozna wpisac nazwy pliku (probowalem read i readln - to samo caly czas)... Laczenie nazwy z samym plikiem to juz sprawa mniej wazna...

26.01.2008
12:14
[4]

kastore [ Troll Slayer ]

Ja robiłem coś takiego


procedure plik;
begin
__ClrScr;
__‹$I-›
__repeat
____GotoXY(1,1);
____ClrEol;
____Write('Podaj nazwe pliku do otworzenia .txt');GotoXY(33,1);ReadLn(nazwa);
____full:=nazwa + '.txt';
____Assign(f,full);
____Reset(f);
____if IOResult<>0 then begin
______Rewrite(f);
______WriteLn('Zostal utworzony nowy plik.');
______Write('Nacisnij <Enter>');
______Sound(300);Delay(50);NoSound;
______repeat c:=ReadKey until c=#13;
____end;
____Close(f);
__until ((Length(nazwa)>0) and (Length(nazwa)<=8)) and (IOResult=0);
__‹$I+›
end;

26.01.2008
15:22
smile
[5]

XazaX [ Chor��y ]

Yatta! :D Udalo sie :P Nie wiem dlaczego, ale problem lezal w zmiennej lokalnej nazwa w procedurze zapis :/ Wystarczylo zainicjalizowac taka sama zmienna globalna i w glownym bloku programu wrzucic do niej read'a i udalo sie, dziala jak z pyty strzelil :D Wyglada to tak:

program Rekordy;
uses crt;
type
____data=record
_______________dzien:1..31;
_______________miesiac:1..12;
_______________rok:word;
____end;
____osoba=record
________________imie:string;
________________nazwisko:string;
________________dataur:data;
____end;
var
___Tosoba:array [1..10] of osoba;
___oso:osoba;
___nazwa:string;

procedure wczytajosobe(var os:osoba);
__________begin
_______________with os do
____________________begin
____________________write('Podaj imie: ');
____________________readln(imie);
____________________write('Podaj nazwisko: ');
____________________readln(nazwisko);
________________________________with dataur do
_____________________________________begin
_____________________________________write('Podaj dzien urodzenia: ');
_____________________________________read(dzien);
_____________________________________write('Podaj miesiac urodzenia: ');
_____________________________________read(miesiac);
_____________________________________write('Podaj rok urodzenia: ');
_____________________________________read(rok);
_____________________________________end;
____________________end;
__________end;
procedure wypiszosobe(os:osoba);
__________begin
_______________writeln(' ');
_______________writeln('*************************');
_______________writeln('Imie: ',os.imie);
_______________writeln('Nazwisko: ',os.nazwisko);
_______________writeln('Data urodzenia: ',os.dataur.dzien,'-',os.dataur.miesiac,'-',os.dataur.rok);
__________end;
procedure zapis(os:osoba);
var
___user:text;
___plik:string;
___nazwa:string;
_____________begin
__________________write('Podaj nazwe pliku: ');
__________________read(nazwa);
__________________plik:=nazwa + '.txt';
__________________assign(user,'.\pliki\' + plik);
__________________rewrite(user);
__________________writeln(user,os.imie);
__________________writeln(user,os.nazwisko);
__________________writeln(user,os.dataur.dzien);
__________________writeln(user,os.dataur.miesiac);
__________________writeln(user,os.dataur.rok);
__________________close(user);
_____________end;
begin
wczytajosobe(oso);
readln(nazwa);
zapis(oso);
wypiszosobe(oso);

readkey;
end.

© 2000-2024 GRY-OnLine S.A.