Jak sie odwołać do rekordu w rekordzie ??

0

Witam
moje pytanie jak w temacie
Jak sie odwołać do rekordu w rekordzie ??
np

{
type data = record
              rok  :   Integer;
              miesiac: 1..12;
              dzien:   1..31;
            end;
}
type personalia = record
                        nazwisko : string[20];
                        imie1:      string[15];
                        nazwisko_panienskie: string[20];
                        imie_ojca: string[15];
                        //data_urodzenia: data;
                        miejsce_urodzenia: string[20];
                        stan_cywilny:string[15];
                        miejsce_zamieszkania: string[20];
                end;
var         
        dane:personalia;
        katalog: file of personalia;
begin
        Assign(katalog,'Record.txt');
        rewrite(katalog);
          writeln;
          write('nazwisko: ');
          readln(dane.nazwisko);
          write('imie1');
          readln(dane.imie1);
          write('nazwisko_panienskie');
          readln(dane.nazwisko_panienskie);
          write('imie_ojca');
          readln(dane.imie_ojca);
          //write('Data_urodzenia:' );
          //readln(dane.data);
          write('Miejsce urodzenia: ');
          readln(dane.miejsce_urodzenia);
          write('Stan cywilny: ');
          readln(dane.stan_cywilny);
          write('miejsce zamieszkania: ');
          readln(dane.miejsce_zamieszkania);
          Write(katalog,dane);
         close(katalog)
         end.

Chiałbym sie odwołać do rokurdu data przywołałem go w rekordzie personalia i chcialbym go teraz uzyc w głownym bloku programu.
Zastosowałem klamry oraz slasche tzn komentarze bez nich program nie działa.
Pomocy

0

Zastosowałem klamry oraz slasche tzn komentarze bez nich program nie działa.

...

{
 type data = record
               rok  :   Integer;
               miesiac: 1..12;
               dzien:   1..31;
             end;
 }
 type personalia = record
                         nazwisko : string[20];
                         imie1:      string[15];
                         nazwisko_panienskie: string[20];
                         imie_ojca: string[15];
                         //data_urodzenia: data;
                         miejsce_urodzenia: string[20];
                         stan_cywilny:string[15];
                         miejsce_zamieszkania: string[20];
                 end;

Wywal { oraz }, a także odkomentuj data_urodzenia.

          //write('Data_urodzenia:' );
           //readln(dane.data);

Co to za dane.data?
Takie pole nie istnieje.
Poza tym wyjaśnij nieco bardziej błędy i pisz mniej chaotycznie.

0
Patryk27 napisał(a)

Zastosowałem klamry oraz slasche tzn komentarze bez nich program nie działa.

...

{
 type data = record
               rok  :   Integer;
               miesiac: 1..12;
               dzien:   1..31;
             end;
 }
 type personalia = record
                         nazwisko : string[20];
                         imie1:      string[15];
                         nazwisko_panienskie: string[20];
                         imie_ojca: string[15];
                         //data_urodzenia: data;
                         miejsce_urodzenia: string[20];
                         stan_cywilny:string[15];
                         miejsce_zamieszkania: string[20];
                 end;

Wywal { oraz }, a także odkomentuj data_urodzenia.

          //write('Data_urodzenia:' );
           //readln(dane.data);

Co to za dane.data?
Takie pole nie istnieje.
Poza tym wyjaśnij nieco bardziej błędy i pisz mniej chaotycznie.

Pomyliłem sie, tam powinno być readln(dane.data_urdzenia);
Postawiłem klamry i slashe zeby pokazac ze z nimi program dziala a bz nich nie...
I wyskakuje mi blad ze cos z ta data jest źle. a nie wiem co ?

0

Musisz każde pole ręcznie wczytać; nie możesz zrobić czegoś takiego:

var A: Record
 a,b,c:integer;
End;
(...)
ReadLn(A);

Ponieważ skąd niby kompilator ma wiedzieć, o które pole tobie chodzi?

ReadLn(A.A);
ReadLn(A.B);
ReadLn(A.C);
1
type
  data = record
     rok: Integer;
     miesiac: 1..12;
     dzien: 1..31;
  end;

  personalia = record
    data_urodzenia: data;
  end;

// ...
dane: personalia;

// ...

dane.data_urodzenia.rok
dane.data_urodzenia.miesiac
dane.data_urodzenia.dzien
0

Tzn musze dodać do rekordu **personalia **
rok:integer;
miesiac:1..12;
dzien:1..31;

Nie da sie zrobić czegos takiego jak ja chcialem ?

1

Musisz każde pole odczytać po kolei:

readln(dane.data_urodzenia.rok);
readln(dane.data_urodzenia.miesiac);
readln(dane.data_urodzenia.dzien);
0

Wielkie dzięki ;)
Sprawdziłem wczytuje sie, ale otwieram plik i zapisaly mi sie same kwadraciki jesli chodzi o tą date
reszta jest ok
wiesz czemu ?

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