Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2014, 17:28   #1
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию передача параметров по ссылке и по указателю

В общем, у меня есть такое объявление:
Код:
procedure SetIdentity(var m : TMatrix3 );
Но у меня есть указатель на объект TMatrix3 (pm: ^TMatrix3 ). И мне нужно как-то по ссылке передать в SetIdentity() разыменованный объект pm.

Пытаюсь сделать так:
Код:
SetIdentity(@mTmp);
Выдает ошибку - [Error] Unit1.pas(137): There is no overloaded version of 'SetIdentity' that can be called with these arguments

// Можно сделать перегрузку, но это будет некрасиво, когда функция принимает два варианта одного и тоже аргумента. Так я сделать могу, но не хочу.
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 17:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но это будет некрасиво
Как раз в данном случае это идеальный вариант, и гораздо красивее остальных.
Перегруженная вторая функция может разименовывать указатель и вызывать первую.
Или наоборот - первая будет работать только по указателю, тогда вторая будет передавать указатель на параметр.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2014, 17:45   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А так
SetIdentity(pm^);
или
SetIdentity(TMatrix3(pm^));
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.03.2014, 17:55   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Аватар, вы прекрасны! Компилятор не ругается на такой вариант)

Последний раз редактировалось Smogg; 10.03.2014 в 17:57.
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 20:50   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Переменные - указатели
Alter вне форума Ответить с цитированием
Старый 10.03.2014, 22:12   #6
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

и еще один вопрос про синтаксис
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
label1.Font.Style := [fsbold];
end
что тут значат квадратные скобки - [fsbold] и как вернуть стиль обратно, т.е. убрать fsbold?
Smogg вне форума Ответить с цитированием
Старый 10.03.2014, 22:26   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если не ошибаюсь, то так записываются элементы множества.

Цитата:
и как вернуть стиль обратно, т.е. убрать fsbold?
может так (если в стиле могут быть и другое):
Код:
  label1.Font.Style := label1.Font.Style - [fsbold];
или, если банально нужно убрать всё:
Код:
  label1.Font.Style := [];

Последний раз редактировалось Serge_Bliznykov; 10.03.2014 в 22:28.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.03.2014, 23:40   #8
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Serge_Bliznykov, спасибо! Все работает
Smogg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача параметра в функцию по двойному указателю Igor95 Общие вопросы C/C++ 7 03.03.2013 19:33
Передача параметра в ссылке Pingvinenok_Lolo PHP 5 26.02.2012 14:25
Передача массива по ссылке xxxsas PHP 4 20.06.2011 14:52
Передача массива по указателю liver1981 Общие вопросы C/C++ 3 21.04.2009 17:07
Передача данных в функцию по указателю Игорь007 Общие вопросы C/C++ 2 23.06.2008 20:17