ďťż

Ładny brzuch

program Baza;
uses CRT;
type TRekord = record
imie: String[21];
nazwisko: String[30];
rok: word;
end;
var dana :Trekord;
plik:file of TRekord;
koniec: char;
begin
assign(plik, 'baza.db');
reset(plik);
clrscr;
Repeat
writeln('Podaj imie: ');
readln(dana.imie);

writeln('Podaj nazwisko: ');
readln(dana.nazwisko);

writeln('Podaj rok urodzenia: ');
readln(dana.rok);

write(plik, dana);

writeln('Czy chcialbys wyjsc? t/n');

read(koniec);
writeln;
Until (koniec = 't') or (koniec = 'T') ;
close(plik);
end.

No wlasnie kurcze nie wiem czemu ale przy kolejnej petli pomija podawanie imienia i od razu wpisuje sie nazwisko. Czemu tak sie dzila, czy ktos mogl by skompilowac ten program i powiedziec czy u niego tez tak jest?

sorka za bledy



cytat:kuna napisał:
No wlasnie kurcze nie wiem czemu ale przy kolejnej petli pomija podawanie imienia i od razu wpisuje sie nazwisko. Czemu tak sie dzila, czy ktos mogl by skompilowac ten program i powiedziec czy u niego tez tak jest?

Nie kompilowałem tego, ale spróbuj zamiast read(koniec) dać readln(koniec)

Albo ReadKey - chyba było takie coś w crt.

ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486

skompilowałem to, wystarczy zamiast read(koniec) dać koniec:=readkey - tak jak sugerował Oxi. Dodatkowo mógłbyś sprawdzać, czy plik "baza.db" istnieje, bo jak go nie ma to program się wywala.
I jeszcze dobra rada: jak piszesz nazwy zmiennych i funkcji, to staraj się używać takich samych liter. Wprawdze dla Pascala TRecord to to samo co Trecord, ale w większości języków programowania już nie - jak się przyzwyczaisz i będziesz chciał pisać program w czymś innym (chociażby C++) to będziesz miał problem.

Pozdrawiam i zapraszam na *** www.windowsik.prv.pl ***

wielkie dzieki, a mozecie powiedziec czemu tak sie dzieje? Pytalem sie kumpla i powiedzial ze ma taki sam problem w C.

sorka za bledy



program Sexshop;
uses CRT;
type Tplyta = record
Tytul: String[20];
RokWydania: String[20];
IloscUtworow: String[20];
end;
var dana :Tplyta;
plik:file of Tplyta;
koniec: char;
var zxs:integer;
var wybor:String[20];
liczba:byte;

procedure wpisz;
begin
Assign(plik,'CD.rdx');
Reset(plik);
Seek(plik, FileSize(plik));
Repeat
clrscr;
Writeln('##################################');
Writeln('## Wklep nowa plyte do blaszaka ##');
Writeln('##################################');
Writeln;
writeln('Podaj Tytul plyty CD');
read;read;read;
Readln(dana.Tytul);
writeln('Podaj Rok wydania');
Readln(dana.RokWydania);
writeln('Podaj ilosc utworow');
Readln(dana.IloscUtworow);
write(plik,dana);
Writeln;writeln;write('Chcesz wyjsc? t/n ');
koniec:=readkey;
Until (koniec = 't') or (koniec = 'T') ;
Close(plik);
end;

procedure resetuj;
begin

Assign(plik,'CD.rdx');
Rewrite(plik);

end;

procedure enter;
begin
Writeln('|');
end;

procedure liniaspodnia;
var
i:byte;
z:byte;
begin
z:=3*20-7;
for i:=0 to z do
write('-');
end;

procedure wypisz(dana: string; szerokosc: integer);
var dlk03l:byte;
var THC: byte;
var i:byte;
begin
write('| ');
dlk03l := length(dana);
THC:=szerokosc-dlk03l;
write(dana);
for i:=1 to THC do
write(' ');
end;

procedure rysuj(szer: integer);
var i: byte;
var z: byte;
var dl:byte;
var th:byte;
begin
z:=3*szer-7;
for i:=0 to z do
write('-');
writeln;

write('| ');
dl := length('Tytul Plyty');
TH:=szer-dl;
write('Tytul plyty');
for i:=1 to TH do
write(' ');

write('| ');
dl := length('Rok wydania');
TH:=13-dl;
write('Rok Wydania');
for i:=1 to TH do
write(' ');

write('| ');
dl := length('Ilosc utworow');
TH:=szer-dl;
write('Ilosc utworow |');
for i:=1 to TH do
write(' ');
writeln;

z:=3*szer-7;
for i:=0 to z do
write('-');
writeln;

end;

procedure wypiszwymaluj;
begin
clrscr;
Assign(plik,'CD.rdx');
Reset(plik);

rysuj(20);
While not Eof(plik) do
begin
read(plik, dana);
wypisz(dana.Tytul, 20);
wypisz(dana.RokWydania,13);
wypisz(dana.IloscUtworow, 14);
enter;
end;
liniaspodnia;
readln;
end;

Begin
for zxs:=0 to 50 do
begin
clrscr;
Writeln('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$');
Writeln('$$ Witam w programie kuna CD katalog 2005! $$');
Writeln('$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$');
Writeln('14:20 2005-01-21 ver 0.01');
Writeln('- - - - - - - - - - - - - - - - - - - - - - -');
Writeln('Co zamierzasz teraz zrobic? ');
Writeln('Masz do wyboru nastepujace opcje:');
Writeln(' -Jezeli chcesz Zobaczyc Swoja kolekcje wpisz "zk" 3');
Writeln(' -Jezeli chcesz dodac plyte do bazy danych napisz "cwd" 2');
Writeln(' -Jezeli to pierwsze urucomkienie lub chcesz skasowac zawartosc bazy, zainicjuj Baze danych wpisujac "inicjacja"

1');
Writeln;
Writeln('Zycze Powodzenia ;-)');
Writeln('Aha, jezeli chcesz wyjsc napisz"Ide sobie" 4');
Writeln; {Czemu tu musza byc dwa readlny aby dzialalo?}
Writeln;
Write('Co zamierzasz zrobic cfaniaku? : ');
Read(wybor);;
If wybor = 'zk' THEN wpisz;
if wybor = 'inicjacja' THEN resetuj;
If wybor ='cwd' THEN wypiszwymaluj;
If (wybor ='Ide sobie') or (wybor ='ide sobie') or (wybor ='papa') or (wybor ='exit') or
(wybor ='EXIT') or (wybor ='nara') or (wybor ='dowidzenia')THEN begin Writeln('NO TO IDZ!'); read;read; halt; end
else begin Writeln('Ojojoj pomyliles sie ;( Mozesz sprubowac jeszcze raz :)') zpdtre1 := 2; end;
{
read(liczba);
CASE liczba OF
1 : resetuj;
2 : wpisz;
3 : wypiszwymaluj;
4 :halt;}
end;
readln;
end;

Teraz jest odwrotny problem, najpierw sie nie pokazuje, a pozniej jest ok, sorry za taki kod, jakos te programowanie jest dziwne, to moja praca domowa na infe....

sorka za bledy

cytat:kuna napisał:

wielkie dzieki, a mozecie powiedziec czemu tak sie dzieje?

Zmienna koniec do której wczytywałeś dane jest typu char - czyli może pomieścić pojedynczy znak. Natomiast wczytując do niej informację za pomocą read wczytywałeś oprócz znaku t/n także znak końca lini (enter). A ponieważ nie mieścił się on w zmiennej typu char (bo w zmiennej była już litera) to znak końca linii czekał sobie aż będzie kolejne wczytywanie danych i tam się wciskał.
Dlatego po wyświetleniu info, żeby podać imie - od razu wciskał się tam enter i następowało przejście do wczytywania nazwiska.

Co do kolejnego Twojego posta (tego wyżej) to nie mam czasu/chęci analizować kodu. Napisz co dokładnie nie działa i w którym miejscu - bo np. tam gdzie na czerwono pisałeś o readln - jest tylko writeln (nie ma żadnego readln), więc nie wiadomo o którą dokładnie linijkę Ci chodzi...

ICQ : 245-363-570 | TLEN : oxisoft | GG : 486-2-486

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •