ďťż

Ł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
  •