|
Платные хостинги
Раскрутка сайта
Книги по программированию
функция особого опасного типа, розыск!
- Нужно сделать функцию такого типа:Код typeMegaType=record man:integer; girl:integer; end;function GdeDeti(var x:bibip):MegaType;highlightSyntax('delphilYjhiN','delphi');Выдаёт ошибку: "инвалид тип". Как выличить инвалида? Вариант передачи параметра по ссылке не принимается. Это сообщение отредактировал Kaskad - 21.5.2005, 17:57
- Цитата (Kaskad @ 21.5.2005, 17:55)Код function GdeDeti(var x:bibip):MegaType;highlightSyntax('delphiZTA2Mz','delphi');ну так в чем проблема?Цитата (Kaskad @ 21.5.2005, 17:55)инвалид типугу. тип MegaType ты объявляешь, чуть выше, а про bibip ничего неизвестно. Что это?
- Что обязательно нужна функция? А процедура не подойдет?Код procedure GdeDeti (x:bibip; var y:MegaType);highlightSyntax('delphimJjN2E','delphi');Никаких инвалидов.
- Цитата (Kaskad @ 21.5.2005, 17:55) Вариант передачи параметра по ссылке не принимается. Цитата (SPrograMMer @ 21.5.2005, 21:13)тип MegaType ты объявляешь, чуть выше, а про bibip ничего неизвестно. Что это? Упс, ошибся. Вот как:Код typeMegaType=record man:integer; girl:integer; end;function GdeDeti(var bibip:integer):MegaType;highlightSyntax('delphiwODM0O','delphi');Вот, выдаёт инвалида.
- Турбо Паскаль не умеет возвращать в функции тип запись. Нужна именно ссылка (указатель).
- То есть, передать в качестве результата функции другой тип (record, например) - нельзя! Но, если очень хочется - то можно ! Код type MyType=record man:integer; girl:integer; end;function MyFunction(x:integer):longint; var t:MyType; r:longint absolute t; begin t.man:=x; t.girl:=random(10); MyFunction:=r; end;var y:MyType; z:longint absolute y;begin z:=MyFunction(5); writeln('y.man=',y.man); writeln('y.girl=',y.girl);end.highlightSyntax('delphiMzZTFi','delphi'); Просто мы здесь используем несложный прием - две переменные в одной области памяти, плюс нам повезло с исходной структурой - она занимает 4 байта.integer(2) + integer(2) = longint(4) И все ок! Фактически, мы передаем нужную структуру, а формально - ничего не нарушили! Это сообщение отредактировал remax - 22.5.2005, 18:32
- А гну или компак умеет? Добавлено @ 09:15 Цитата (remax @ 22.5.2005, 18:14)И все ок! Фактически, мы передаем нужную структуру, а формально - ничего не нарушили! Ага, я как-то 6+8 считал ~70 строк на Паскале мудрёным хитрым способом. В итоге преподаватель никак не мог понять как получилось из 2+5=14 (это мои 6+8)
- Не знаю как эти, а Free Pascal - умеет.
- Не знаю как эти, а Free Pascal - умеет. И Delphi может...
Интернет казино
Онлайн игры
Увеличение члена
Купить DVD
|