люди, помогите кому не лень...
паскаль изучал 100 лет назад...ничего не помню
как заставить процедуру возвращать значение?
или процедуры этого делать не умеют и нужно писать функцию??
а функцию можно вызывать инклудом??
что нужно писать внутри функции?..есть какойнить оператор типа return ?
обьявляется вроде так
function test(Item : Cardinal) : Boolean
begin
end;
Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7
возврат значений из процедур
это я прочёл...но в логику не въехалL'inconnu wrote:http://stealth.od.ua/forum/viewtopic.ph ... ight=#1893
если внутри процедуры у меня присваивается значение нескольким переменным того же типа, который процедура должна возвратить, то какую переменную она вернёт?..как ей это указать, вот что меня интересует.
не говоите, что можно обойтись одной переменной, это я для примера, какую из переменных a или b вернёт процедура???procedure test(x : Integer; y : Integer) : Boolean
var a,b : Boolean
begn
if (x+y)>0 then a:=true
if (x+y)<0 then b:=true
end;
1. Возврат значения путем ф-ции:
(Возвращаемое значение должно присваиваться в переменную Result)
2. Работа с переменными напрямую:
(Обрати внимание на var, который стоит перед передаваемыми параметрами)
Во втором варианте можно использовать и ф-цию, если тебя волнует какойто общий результат, зависящий от передаваемых параметров в нее.
(Возвращаемое значение должно присваиваться в переменную Result)
Code: Select all
var a,b : Integer;
function test(c , d : Integer) : Integer;
begin
Result := c + d;
end;
Begin
a := 1; b := 2;
AddToSystemJournal(IntToStr(Test(a,b)));
End.
2. Работа с переменными напрямую:
(Обрати внимание на var, который стоит перед передаваемыми параметрами)
Code: Select all
var a,b : Integer;
procedure test(var a1,b1 : Integer);
begin
a1 := 3;
b1 := -1;
end;
Begin
a := 1; b := 2;
test(a,b);
AddToSystemJournal(IntToStr(a)+' '+IntToStr(b));
End.
кусочек из программы, должен брать кирку, когда её в руках нету
вроде делал по аналогии со скриптами на форуме....
и с ним появились проблемы
вроде делал по аналогии со скриптами на форуме....
ввёл ещё один возможный тип кирки, пришлось использовать elseResult := false;
{---------------------------------------------}
if ObjAtLayer(RHandLayer) = 0 then
begin
if FindType($0E85,backpack) > 0 then
Equip(RhandLayer,finditem);
else //15
if FindType($0E86,backpack) > 0 then
Equip(RhandLayer,finditem);
else
Exit;
end;
Result := true;
wait(1000);
{---------------------------------------------}
и с ним появились проблемы
нужно, что бы брал один из двух типов, если таких нет в сумке, возвращал falseCompiler: [Error] (MINING1.sc at 15:7): Identifier expected
Из-за написания кода в "столбик" без отступов ты сам себя запутал.
Стоит всего лишь расставить пробелы и табуляции, чтобы легко понять где ошибка. Вот исправленный код:
Стоит всего лишь расставить пробелы и табуляции, чтобы легко понять где ошибка. Вот исправленный код:
Code: Select all
Result := false;
{---------------------------------------------}
if ObjAtLayer(RHandLayer) = 0 then
begin
if FindType($0E85,backpack) > 0 then
begin
Equip(RhandLayer,finditem);
end
else
if FindType($0E86,backpack) > 0 then
begin
Equip(RhandLayer,finditem);
end
else
Exit;
end;
Result := true;
wait(1000);
{---------------------------------------------}