Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 27.05.2010, 21:43   #1
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Вопрос Проблема передачи параметров в функцию

Наткнулся на такую проблему. Вот пример для её демонстрации:
program test4;

//объявляю тип
type
xz=array [1..2] of integer;

var
//указываю переменную этого типа
a:xz;

procedure mega(b:xz);
begin
b[2]:=1;
end;
//казалось бы, изменяя b[2], мы меняем только локальную переменную

begin
a[1]:=3;
a[2]:=4;
//присваиваю
mega(a);
//теоретически, "a" не должно измениться
drawText(integertostring(a[2]), 0, 0);
//выводит ответ 1 вместо 4
repaint;
delay(5000);
end.
Пытался изменить на
procedure mega(b:xz);
var c:xz;
begin
c:=b;
c[2]:=1;
end;
В таком случае выдает ошибку

Как сделать, чтобы передаваемая в функцию глобальная переменная своего типа данных не изменялась?
А то рекурсивный алгоритм не получается...
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 29.05.2010, 14:25   #2
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: Проблема передачи параметров в функцию

т.к. в данном случае MidletPascal не создает для типа отдельный class то копировать его нужно самому поэлементно. Т.е. c:=b; необходимо описать for i:=1 to 2 do c[i]:=b[i];
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Igor (31.05.2010)
Старый 21.09.2010, 19:21   #3
Ksanatos
ПроЭктировщик
 
Аватар для Ksanatos
 
Регистрация: 31.01.2010
Адрес: Россия, респ. Башкортостан, г. Бирск
Сообщений: 137
Написано 12 полезных сообщений
(для 17 пользователей)
Ответ: Проблема передачи параметров в функцию

Хи а вот и способ обхода не вариабельности передоваемых переменных
__________________



(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 05:14.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com