Страница 1 из 1

Неявное преобразование типов данных

Добавлено: 19 Май 2014, 17:23
Игорь Столяров
Привет всем !

Что-то я опять заплутал в трех соснах ... :( Может жара ... ;)
Есть процедура (не моя)

Код: Выделить всё

  Map
    Proc1(*?)   ! WinAPI
  end

! Вызываем
  
MyStr String(255)
   Code
   Proc1(MyStr)
   Message(MyStr) 
1. Пользовался этим кодом несколько лет и только сейчас, когда возникли проблемы,
с ужасом обнаружил что это как-то проходило компиляцию ... Почему ?

2. Непонятно, но получается что в Proc1 попадал адрес MyStr и в него вполне успешно записывалось значение.
Разве при передаче строки в процедуру с прототипом адреса происходит преобразование типов ?
Насколько я понимаю, правильный вызов должен быть Proc1(ADDRESS(MyStr)) ?

3. В какой-то момент это неявное преобразование типов перестало работать. Но в одно конкретной программе.
Точно такой же код в других программах работает ... Ничего не пойму, с чем это связано. :( Сборка на C6.3 9059

Кто-нибудь может ответить на любой из этих трех вопросов ?

Re: Неявное преобразование типов данных

Добавлено: 19 Май 2014, 17:34
Дед Пахом
точно жара... приведённый код абсолютно легальный, Proc1 получает параметром ссылку на ANY, преобразование STRING->ANY>STRING, никаких адресов и т.п.

"В какой-то момент это неявное преобразование типов перестало работать" (прим.: а явного преобразования в Clarion и нет, только неявное) ищи в другом месте, тем более что в других местах работает.