| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Почему No value? |
| Автор: Gnusss 20.5.2005, 23:03 | ||||
| Привет всем! Например есть у меня процедура подобная этой:
Но в процедуре Fun Val всегда "(No value)". Почему? Я вообще не понимаю. Заранее спасибо за ответ! |
| Автор: SPrograMMer 20.5.2005, 23:15 | ||||||
Gnusss
должно быть
|
| Автор: Gnusss 20.5.2005, 23:18 |
| to SPrograMMer неа у меня все равно "(No value)" |
| Автор: Fantasist 20.5.2005, 23:35 | ||
Ну так отладчик же не знает тип этой переменной, что он тебе отображать должен? Нажми Ctrl+F7, напиши там "PChar(@Val)" и любуйся. |
| Автор: Rouse_ 21.5.2005, 01:45 | ||||||
Занимательно... У нас за такое сразу увольняют.
Видимо ты забыл про банальное приведение типов. Вот смотри сюда:
А теперь вопрос, каким макаром ты хочешь реальзовать правильное выполнение своей процедуры без обязательной передачи указателя типа данных? |
| Автор: Gnusss 21.5.2005, 08:36 | ||
Таким же как работает Write у Stream и SendBuffer у TIdUDPClient. И к тому же в процедуру я передаю РАЗНЫЕ(!) структуры типа TRecord. |
| Автор: p0s0l 21.5.2005, 12:31 | ||
Я бы также сделал, если бы знал, что в параметре передаётся строковая константа... |
| Автор: помогите 21.5.2005, 19:59 |
| Ну люди. проблема же еще не рашина. |
| Автор: Fantasist 22.5.2005, 00:14 | ||||
Че, за польлзование отладчиком у вас увольняют? Не, я к вам работать не пойду.
Почему? |
| Автор: Гость_Gnusss 22.5.2005, 07:10 | ||
Ну, потому - что моя процедура все еще не работает. У меня в эту процедуру передаются разные структуры типа TRecord. Как я эту могу ему указать? |
| Автор: Fantasist 22.5.2005, 19:53 | ||||||
Ну так а в чем заключается ее "не работает"? Ту процедуру что ты привел вообще никаких результатов видимых не оставляет (пишишь что-то в память и освобождаешь сразу же). Почему отладчик "no value" показывает уже объяснили. Единственно что не будет работать это SizeOf(Val) - тип Val неизвестен, по этому SizeOf будет всегда возвращать 0.
Вот так:
|
| Автор: Gnusss 22.5.2005, 22:20 | ||||||||
Вобщето это процежура для примера, в реальном приложении у меня другая.
Ну это я понял.
Неа, или ты мне предлагаеш вместо TRecord написать тип моих структур? Тогда у меня в приложении будет где-то 15+ почти одинаковых(только каждая под свою структуру) процедур. |
| Автор: SPrograMMer 22.5.2005, 23:50 | ||
ну тада прямой путь к ООП, написать "класс" родитель, а отнего клепать производные, Тип параметра в самой подпрограмме будет родительский "класс" в кавычках, потому как я поонимаю он просто будетсодержать ТОЛЬКО данные <=> записи, но с расширенными возможностями! |
| Автор: Gnusss 23.5.2005, 00:52 |
| Меня осенило!!! Я все думал почему Write у Stream работает, а у меня вроде тоже самое а не работает. И вдруг меня осенило Второй параметр у Write это размер(!), и я понял что надо передавать в процедуру еще и размер. Изменив процедуру, у меня все заработало(!). Ура товарищи И не пришлось создавать много одинаковых процедур и прибегать а ООП. Всем спасибо! Тема закрыта! |
| Автор: Fantasist 23.5.2005, 01:36 |
| Gnusss Хорошо, но в следующий раз постарайся вопрос формулировать так, чтобы и нам было понятно, что тебе нужно, если конечно хочешь ответ на свой вопрос получить, а не на какие-то другие, как здесь и случилось. |