![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
SMED |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.7.2003 Репутация: нет Всего: нет |
Уважаемые знатоки!!!
Помогите, плиз, разобраться с проблемой, потому что я уже не знаю, что делать, таких глюков я еще не видел ![]() Я пишу биллинговую систему, и состоит она из многих модулей. Чем больше модулей я добавляю в свой проект, тем более глюкавее он становиться. Сначала все было в порядке. В одной из процедур я использовал функции Date() и Time() и все работало отлично, после добавления очередного программного кода в проект, компиллятор наотрез отказывается распознавать вышеуказзаные функции, хотя все необходимые модули для этих функций подключены, и мне пришлось заменить эти функции другой схожей функцией Now() и все снова заработало. Но это оказалось были цветочки, а потом пошли яготки. В одном из модулей у меня объявлена глобальная переменная типа variant var vNumber:variant; Есть процедура,к оторая работает с этой переменной и присваивает ей начальное значение. procedure InitialVariable(); begin with qryWork do begin open; if not IsEmpty then vNumber:=fieldvalues['FNumber'] else vNumber:=null; end; end; Затем с переменной vNumber начинает работать вторая процедура: procedure DefinesNumber(); var sNumber:string; begin sNumber:=''; sNumber:=trim(vartostr(vNumber)); end; Так вот в чем проблема: Даже если переменная vNumber имеет какое то значение(например, "100002"), перменная sNumber всеравно имеет значение '', т.е. пуста. Такого глюка я еще не видел. Помогите, плиз. |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Попробуй заменить строку
if not IsEmpty then vNumber:=fieldvalues['FNumber'] else vNumber:=null; Строкой: if not IsEmpty then vNumber:=fieldbyname('FNumber').value else vNumber:=null; А в процедуре procedure DefinesNumber(); var sNumber:string; begin sNumber:=''; sNumber:=trim(vartostr(vNumber)); end; добавь строку: procedure DefinesNumber(); var sNumber:string; begin sNumber:=''; sNumber:=trim(vartostr(vNumber)); showmessage(sNumber); end; Потому что в таком виде как у тебя оптимизатор просто не будет выполнять строку sNumber:=trim(vartostr(vNumber));, так как переменная sNumber локальная и больше нигде не используется И ещё 3 совета: 1) Замени глобальные переменные на поле в форме 2) Отключи оптимизацию в программе 3) Не используй Variant - в твоём коде, это не нужно - ты ведь заранее точно знаешь в каком виде хранятся данные, а вариант нужен только для OLE когда нет сведений о типе на этапе компилляции -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
SMED |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 24.7.2003 Репутация: нет Всего: нет |
Спасибо большое за совет.
Удалось решить проблему следующим путем. Отключение оптимизации не помогло. Я просто сделал переменную sNumber глобальной и присваиваю ей значение в процедуре InitialVariable(); |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |