Czy da się w jakiś sposób zapętlić 3x if...then...else?
bo chcę zrobić coś takiego (tylko mi nie działa):
begin
if (wyrażenie) then
begin
{ciÄ…g instrukcji}
end
else
begin
if (wyrażenie) then
{ciÄ…g instrukcji}
end
else
begin
{ciÄ…g instrukcji}
end;
end;
1. czemu to nie działa?
2. co zrobić żeby zadziałało?
3. lub jak taki sam efekt osiągnąć inną metodą? (bo wydaje mi się, że da się to zrobić za pomocą case...of)
begin
if (wyrażenie) then
begin
{ciÄ…g instrukcji}
end
else
begin
if (wyrażenie) then
BEGIN
{ciÄ…g instrukcji}
end
else
begin
{ciÄ…g instrukcji}
end;
end;
END;
co chcesz zrobic bo to badziewnie wyglada i na pewno mozna zrobic lepiej :)
_________________ - Wodzu! Jesteśmy otoczeni!
- Świetnie, możemy atakować w każdym kierunku
Maciou, użyj "and" ,to powinno ułatwić sprawę
np. if warunek1 then instrukcja1
if ( not warunek1 and warunek2) then instrukcja2
if (not warunek1 and not warunek2 and warunek3) then instrukcja
case zmienna of:
[1,0,0] or [1,1,1] or [1,1,0] or [1,0,1] : instrukcja1
[0,1,0] or [0,1,1] : instrukcja2
[0,0,1] : instrukcja3
pewnie mam literówki ale chyba bardziej o sposób ci chodziło niż o zapis
a przy okazji wie ktoś jak w tym kodzie zapisać np. [1, 0 lub 1 , 0 lub 1] ? czyli dowolna wartość.
i jeszcze jedno pytanie, jak zadeklarować zmienną globalną WEWNĄTRZ FUNKCJI ?
Ten program ma najpierw sprawdzać
- czy x jest większa od random(99)
---- jeśli tak to czy y + random(9) jest większe od z
------------ jeśli tak to żeby wypisywał wynik y+random(9) -z
------------ jeśli nie to żeby wypisywał y+random(9)<z
maciou w ogole nie kminie o co ci chodzi, ale jesli x,y,z podajesz to : procedure TForm1.Button1Click(Sender: TObject);
var
x,y,z,pom:integer;
begin
x:=strtoint(edit1.text);
y:=strtoint(edit2.text);
z:=strtoint(edit3.text);
randomize;
if x > random(99) then
begin
pom:=random(9);
if (y + pom > z ) then
showmessage('wynik to: ' + inttostr(y+pom-z))
else
showmessage('wynik to: ' + inttostr (y+pom) + ' < z');
end
else memo1.lines.add('x<ran');
end;
nie mozna deklarowac zmiennych globalbych w procedurach / funkcjach etc.
var
Form1: TForm1;
zmienna_globalna:string;
implementation
robisz to miedzy var i implementation
_________________ - Wodzu! Jesteśmy otoczeni!
- Świetnie, możemy atakować w każdym kierunku
tak, nie mozna
,z wiki
"W języku Pascal (również w Object Pascal) deklaracje zmiennych są umieszczone przed blokiem kodu danego podprogramu lub programu głównego (w przeciwieństwie do C/C++ i Javy)." wiec globalne (dla calego programu) przed programem, nie w trakcie
_________________ - Wodzu! Jesteśmy otoczeni!
- Świetnie, możemy atakować w każdym kierunku
Tak, ale w niektórych językach można deklarować na początku programu oraz w trakcie np. w funkcji/procedurze. Przydaje się np. gdy chcemy niejawnie zmienić jakieś globalne wartości, bez pobierania ich, oraz bez ich zwracania.
Yo, piszę program wykonujący operacje na pliku (*.dat). Najpierw otwieramy plik i można się bawić Ale jest masa problemów przy użyciu pewnych opcji kiedy nie powinno się - np. kliknięcie zamknij plik, kiedy nie jest jeszcze otwarty. Chciałem więc zrobić obsługę błędów na zasadzie jeżeli otwarty/używany to zamknij (a jeżeli nie to olej )
if plik_jest_otwarty then CloseFile(plik);
else ShowMessage('żaden plik nie jest używany');
I tu kłopot - co ma być w miejscu 'plik_jest_otwarty'
Myślałem, że to bedzie proste... pewnie jest. Ale nigdzie nie mogę znaleźć jak to zrobić Help
pierwsze co mi przyszlo do glowy: wprowadzic dodatkowa zmienna boolean domyslnie ustawiona na false i zmieniac ja na true przy otwieraniu pliku i w Twoim if`ie bym sprawdzal jaka wartosc ma owa zmienna..
Nie mo¿esz pisaæ nowych tematów Nie mo¿esz odpowiadaæ w tematach Nie mo¿esz zmieniaæ swoich postów Nie mo¿esz usuwaæ swoich postów Nie mo¿esz g³osowaæ w ankietach Nie mo¿esz za³±czaæ plików na tym forum Mo¿esz ¶ci±gaæ za³±czniki na tym forum