Ĺadny brzuch
W jak sposób moge do jednej procedury wpisać inna, bo jezeli procedura A wpisana znajduje sie przed procedura B do ktorej ja wpisuje to program działa, natomiast jesli proc4edura A znajduje sie ponizej procedury B to program juz nie działa i pokazuje sie komunikat UNKNOWN IDENTIFIER.
Pomocy. Chodzi mi oczywiscie o pascala.
Chodzi o deklarację czy wywołanie funkcji. Jeśli o deklarację, to jest to niemożliwe. Jeśli wywołanie - podaj przykładowy program z takim błędem.
Utwórz moduł z tymi procedurami.
uses crt;
Procedure menu;
Begin
repeat
clrscr;
Writeln('Menu:');
Writeln('1 Wprowad« dane: ');
Writeln('2 Pokarz dane: ');
Writeln('3 Koniec');
key:=readkey;
case key of
'1' : wpisz_dane;
'2' : wypisz_dane;
end;
until key='3';
End;
Procedure wpisz_dane;
var i:byte;
Begin
clrscr;
Writeln('Podaj swoje nazwisko');
i:=i+1;
repeat until keypressed;
End;
Procedure wypisz_dane;
var i:byte;
Begin
Writeln(student[i].nazwisko);
Repeat until keypressed;
End;
Begin
menu;
End.
Wymazałem wszystkie niepotrzebne dane, zostawilem tylko sam sens tego menu, poprostu TP zachowuje sie jakby procedury wpisz_dane; i wypisz_dane; wogole nie istnaialy, a one sa poprost nizej.
Czy nie chodzi Ci czasem o coś takiego:
procedure TForm1.FormCreate(Sender: TObject);  procedure  Captionchange(NewCaption: String);  begin    Caption := NewCaption;  end; begin  Captionchange('To jest nowy caption'); end;
Ta procedure jest bez sensu, ale to tylko przykład.
Góruś - a jednak jest możliwe :P
//---------EDIT-----------------------------------------
Oczywiście nie przeczytałem, że chodzi o Pascal'a, ale zasada jest chyba ta sama.
Użytkownik LewB ar edytował ten post 17 marzec 2005, 14:41
Przenieś procedury wpisz_dane i wypisz_dane wyżej lub daj je do osobnego modułu ;)
Jeszcze jedno pytanie jak wyciagnac wartosc zmiennej z procedury??
I co to jest ten osobny moduł??
ad1. Chodzi Ci o to, by procedura zwracała jakiś wynik (np. tekst, liczbę)? W takim razie użyj funkcji:
function dodaj(a, b:integer):integer; begin dodaj:=a+b; end;
ad2. Tworzysz moduł, by zmniejszyć objętość całego kodu np. zamieścić tam procedury/funkcje używane przez kilka programów. Np.:
modul.pas:
unit modul; interface function napis:string; implementation function napis:string; begin napis:='1234567'; end; end.
program główny:
program pierwszy; uses modul; begin writeln(napis); end.
hehe dzieki bardzo juz wszystko rozumiem
Można też dopisać podstawowy wygląd procedury czy funkcji do klasy formy głównej.
type TForm1 = class(TForm) procedure A(Argument : Integer); procedure B(Argument : Integer); ... implementation {$R *.dfm} procedure TForm1.B(Argument : Integer); begin //procedura Form1.A(Argument); //wywołanie procedury A end; procedure TForm1.A(Argument : Integer); begin //procedura end;
Jak tak zrobisz to nieważne w jakiej kolejności będą procedury :)
type  TForm1 = class(TForm)   procedure A(Argument : Integer);   procedure B(Argument : Integer); ... implementation ...
Jak tak zrobisz to nieważne w jakiej kolejności będą procedury :)
W pascalu nie klas :P
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Pomocy. Chodzi mi oczywiscie o pascala.
Chodzi o deklarację czy wywołanie funkcji. Jeśli o deklarację, to jest to niemożliwe. Jeśli wywołanie - podaj przykładowy program z takim błędem.
Utwórz moduł z tymi procedurami.
uses crt;
Procedure menu;
Begin
repeat
clrscr;
Writeln('Menu:');
Writeln('1 Wprowad« dane: ');
Writeln('2 Pokarz dane: ');
Writeln('3 Koniec');
key:=readkey;
case key of
'1' : wpisz_dane;
'2' : wypisz_dane;
end;
until key='3';
End;
Procedure wpisz_dane;
var i:byte;
Begin
clrscr;
Writeln('Podaj swoje nazwisko');
i:=i+1;
repeat until keypressed;
End;
Procedure wypisz_dane;
var i:byte;
Begin
Writeln(student[i].nazwisko);
Repeat until keypressed;
End;
Begin
menu;
End.
Wymazałem wszystkie niepotrzebne dane, zostawilem tylko sam sens tego menu, poprostu TP zachowuje sie jakby procedury wpisz_dane; i wypisz_dane; wogole nie istnaialy, a one sa poprost nizej.
Czy nie chodzi Ci czasem o coś takiego:
procedure TForm1.FormCreate(Sender: TObject);  procedure  Captionchange(NewCaption: String);  begin    Caption := NewCaption;  end; begin  Captionchange('To jest nowy caption'); end;
Ta procedure jest bez sensu, ale to tylko przykład.
Góruś - a jednak jest możliwe :P
//---------EDIT-----------------------------------------
Oczywiście nie przeczytałem, że chodzi o Pascal'a, ale zasada jest chyba ta sama.
Użytkownik LewB ar edytował ten post 17 marzec 2005, 14:41
Przenieś procedury wpisz_dane i wypisz_dane wyżej lub daj je do osobnego modułu ;)
Jeszcze jedno pytanie jak wyciagnac wartosc zmiennej z procedury??
I co to jest ten osobny moduł??
ad1. Chodzi Ci o to, by procedura zwracała jakiś wynik (np. tekst, liczbę)? W takim razie użyj funkcji:
function dodaj(a, b:integer):integer; begin dodaj:=a+b; end;
ad2. Tworzysz moduł, by zmniejszyć objętość całego kodu np. zamieścić tam procedury/funkcje używane przez kilka programów. Np.:
modul.pas:
unit modul; interface function napis:string; implementation function napis:string; begin napis:='1234567'; end; end.
program główny:
program pierwszy; uses modul; begin writeln(napis); end.
hehe dzieki bardzo juz wszystko rozumiem
Można też dopisać podstawowy wygląd procedury czy funkcji do klasy formy głównej.
type TForm1 = class(TForm) procedure A(Argument : Integer); procedure B(Argument : Integer); ... implementation {$R *.dfm} procedure TForm1.B(Argument : Integer); begin //procedura Form1.A(Argument); //wywołanie procedury A end; procedure TForm1.A(Argument : Integer); begin //procedura end;
Jak tak zrobisz to nieważne w jakiej kolejności będą procedury :)
type  TForm1 = class(TForm)   procedure A(Argument : Integer);   procedure B(Argument : Integer); ... implementation ...
Jak tak zrobisz to nieważne w jakiej kolejności będą procedury :)
W pascalu nie klas :P