Продолжаем копить глюки SyStemStrngClass

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

В процессе эксплуатации вылезла очередная фича
В приложении, под windows 7/8, до запуска фрейма и всего подобного, вызывается некая процедура, в которой есть переменная

WorkString SystemStringClass

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

Видимо, это ошибка компилятора, т.к. переход к

WorkString &SystemStringClass

со всеми вытекающими, проблему решает
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Игорь Столяров »

В Libsrc переменные для этого класса везде определяются через указатель ...

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

SystemStringQueue   QUEUE
Str                     &SystemStringClass
                               END

SMSMailClient     CLASS,TYPE,MODULE('ClaMail.clw'),LINK('ClaMail.clw',_ABCLinkMode_),DLL(_ABCDllMode_)
!region Protected
claTalk               &ClaRunExtClass,PROTECTED
errorReporting        BOOL,PROTECTED
host                  &SystemStringClass,PROTECTED
user                  &SystemStringClass,PROTECTED
pwd                   &SystemStringClass,PROTECTED
from                  &SystemStringClass,PROTECTED
ssl                   BOOL,PROTECTED
port                  LONG,PROTECTED
...

wantAReceivedNotice   BOOL,PRIVATE
encoding              &SystemStringClass,PRIVATE
replyTo               &SystemStringClass,PRIVATE

Construct             PROCEDURE(),PROTECTED
Destruct              PROCEDURE(),VIRTUAL

и т.д.
Наверно все-таки просто начальное объявление было неправильным, а не глюк ...
Make Clarion Great Again ! 😎
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

Игорь Столяров писал(а): Наверно все-таки просто начальное объявление было неправильным, а не глюк ...
А в чём именно некорректность? :idied:

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

MyClass  CLASS,TYPE

MyField   LONG

MyProc    PROCEDURE

        END

OneClass MyClass           !Declared object instance, smaller and quicker

TwoClass &MyClass          !Object reference, must use New and DISPOSE

Дело в том, что это не первый глюк с SystemStringClass связанный с объявлением в такой форме.
Остальные классы почему-то так себя не ведут.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Игорь Столяров »

Губин Игорь писал(а): А в чём именно некорректность?
Кто же знает ... Ошибку выдает ведь не объявление класса, а какой-то метод в процессе выполнения ?
Если есть желание разобраться - там и надо смотреть. Или объявлять тип данных, так как сделано в примерах.
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3288
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Продолжаем копить глюки SyStemStrngClass

Сообщение Дед Пахом »

Может это какой-нибудь ASSERT срабатывает? Нет ли номера строки в сообщении об ошибке?
С уважением, ДП
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

Дед Пахом писал(а): Нет ли номера строки в сообщении об ошибке?
Изображение
Последний раз редактировалось Губин Игорь 06 Март 2017, 17:23, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3288
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Продолжаем копить глюки SyStemStrngClass

Сообщение Дед Пахом »

Губин Игорь писал(а): Accept тут не при чём
Конечно ни при чём, я писал "ASSERT". Судя по номеру строки, что-то не так проинициализировано для Base64.
С уважением, ДП
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

Дед Пахом писал(а):
Судя по номеру строки, что-то не так проинициализировано для Base64
Это-то конечно, только вот вопрос в том, ПОЧЕМУ не так проинициализировано?! :idied:
Ведь, сугубо формально, замена на & и последующее NEW должно быть абсолютно аналогично!
Дед Пахом писал(а):
Конечно ни при чём, я писал "ASSERT".
Переклинило... :oops:
Последний раз редактировалось Губин Игорь 06 Март 2017, 17:36, всего редактировалось 1 раз.
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3288
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Продолжаем копить глюки SyStemStrngClass

Сообщение Дед Пахом »

Потрать 5 минут с отладчиком, делов-то.
С уважением, ДП
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

Дед Пахом писал(а): Потрать 5 минут с отладчиком, делов-то.

Оно мне надо? Чтобы потом, после очередного патча, наткнуться на новое... :idied:
Да и фокус в том, что под 10 отрабатывает на ура, под XP тоже, а проявляется только под 7/8

Глюк локализован, дальше буду писать только &
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Продолжаем копить глюки SyStemStrngClass

Сообщение RaFaeL »

Губин Игорь писал(а): Да и фокус в том, что под 10 отрабатывает на ура, под XP тоже, а проявляется только под 7/8
А точно не от разрядности системы зависит? А то видел тут фокуc, на x32 работает на x64 глюки и вылеты
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

RaFaeL писал(а): А точно не от разрядности системы зависит? А то видел тут фокуc, на x32 работает на x64 глюки и вылеты
Увы, нет. Как мне сказали те, кто отлавливал, тестировали и на 32 и на 64. У меня тестировалось на 10/64, XP/32 и под 10/64 с запуском в режиме совместимости. В режиме совместимости программа запускалась нормально, работала корректно, но вылетала при закрытии.

Проблемный кусок выполнялся при запуске программы
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8028
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Игорь Столяров »

Губин Игорь писал(а):Проблемный кусок выполнялся при запуске программы
Вот это, к сожалению, ни о чем не говорит ... Похоже на проблемы с освобождением памяти.
В каком релизе C63 был глюк: при запуске отрывалось окно регистрации юзера (NоMDI есстесно), а потом AppFrame программы.
Так вот если в окне регистрации вызывать справку (CHM) - то все работало прекрасно, но закрытие AppFrame (и всего приложения)
заканчивалось стабильно GPF ... причем именно на десктопных Windows, а на том же Windows 2003 никаких проблем не возникало.
Make Clarion Great Again ! 😎
Аватара пользователя
Губин Игорь
Шубуршун
Сообщения: 2584
Зарегистрирован: 16 Сентябрь 2005, 16:35
Откуда: Москва
Благодарил (а): 3 раза
Поблагодарили: 26 раз

Продолжаем копить глюки SyStemStrngClass

Сообщение Губин Игорь »

Игорь Столяров писал(а): Вот это, к сожалению, ни о чем не говорит ... Похоже на проблемы с освобождением памяти.
Больше на вылет за границы.Но фиг его знает, вашбродь! :idied:
Это я только кажусь дураком! На самом деле я полный идиот!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3288
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Продолжаем копить глюки SyStemStrngClass

Сообщение Дед Пахом »

Разница во времени вызова конструктора Construct(), в первом случае он вызывается при объявлении переменной, во втором при вызове NEW. Например, такой случай:

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

MyStringClass CLASS(SystemStringClass), TYPE
Construct        PROCEDURE()  !-- overloaded
              END
  
myString       MyStringClass
v1             STRING(100)


MyStringClass.Construct PROCEDURE()
  CODE
  SELF.FromString(v1)
Тут конструктор вызывается перед объявлением v1, и результат непредсказуем. Если же объявить myString &MyStringClass, то NEW будет вызван после объявления v1, и всё ok.
С уважением, ДП
Ответить