Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
ВнизКрыша едет... Найти похожие ветки
← →
Bura (2002-06-17 17:33) [0]Господа, кто-нибудь встречался с таким:
...
var
Flag, ss: Boolean;
begin
...
Flag:=True;
ss:=False;
if (Flag and ss) then {Здесь выдает ошибку Invalid variant type conversion}
begin
...
Так вот, не пойму, почему??? Раньше вроде все работало. Может, в оптимизаторе чего? (Данные False и True я присвоил просто для проверки. На самом деле, там могут быть и другие).
Ставит на строчки в system.pas:
varAny: AnyChangeType(Dest, Source, DestType);
else if not ChangeSourceAny(Dest, Source, DestType) then
if VariantChangeTypeEx(Dest, Source, $400, 0, DestType) <> 0 then
VarCastError;
end;
(8668 строка).
Delphi 5, SP1
← →
VDen (2002-06-17 17:42) [1]В Дельфях косяк, где еще-то... А может где-нибудь в пути для библиотек(Library Path) лежит такой же System.pas, но с глюком...
← →
Alex is Fecit (2002-06-17 19:11) [2]попробуй полностью спросить, что первый - правда и второй - правда...
← →
Anatoly Podgoretsky (2002-06-17 19:18) [3]Судя по строчке у тебя Boolean уже не Boolean, а Variant
Ищи врагов в своем отечестве
← →
Bura (2002-06-18 08:27) [4]Anatoly Podgoretsky>
а как он может стать Вариантом? Он же явно объявлен Булевским. И операции все булевские. Хочу сказать, что с этими двумя переменными ничего, кроме мною описанных присваиваний нет.
VDen>
У меня пути стоят на один system.pas. Еще раз повторюсь, что раньше было все нормально. (Может поможет, но раньше я использовал IBX для доступа к InterBase, теперь FIBPlus(купленный)). Дело все в том, что этот код в другом модуле прокатывает на "Ура".
Alex is Fecit>
А смысл? У меня же эти переменные вычисляются (это я просто для пробы присвоил им значения). Но все равно то же самое.
← →
дядька Рус (2002-06-18 08:52) [5]Явление до боли знакомое :). У меня этот чертов Invalid variant type conversion вываливается практически постоянно. Что характерно - избавиться от него можно только отключив в IDE "Stop on Delphi exceptions" из вкладки "Language Exceptions" в окне "Debugger options" (меню Tools -> Debuuger Options".
Т.е., насколько я понимаю, эта ошибка непосредственно в дебаггере, котрый вшит в IDE.
ЗЫ Update Pack 2 к Delphi 6 ничего не исправил :(
← →
Anatoly Podgoretsky (2002-06-18 09:03) [6]Bura © (18.06.02 08:27)
приведи список uses, оба
Вероятно у тебя какой нибудь другой модуль переопределил тип
← →
Bura (2002-06-18 09:11) [7]unit ChPrH;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
FldAns, StdCtrls, Mask, DBCtrls, ExtCtrls, Menus, DBUtils, DB, RXCtrls,
RXDBCtrl;
uses DMShrd, DocHndl, SysTools, C5Types, cutils, ConfHndl, LTOpers, LAgents;
А тип чего он мог переопределить? Boolean?
← →
blackman (2002-06-18 09:38) [8]Поставь в скобки if ((flag) and (ss))
должно сработать
← →
Kaban (2002-06-18 09:45) [9]blackman
Не думаю, что это может решить проблему
Представленный в вопросе код абсолютно корректен
← →
Bura (2002-06-18 11:21) [10]Кстати, если обе переменные True, то все нормально. При закрытии Delphi и запуске приложения без IDE, ошибки не возникает. Это частично решает проблему, но "неприятный осадок..." (с)...
← →
Skier (2002-06-18 11:40) [11]> Bura
Покажи объявления процедуры (или функции).
То есть покажи что у тебя вместо "..."
← →
troits (2002-06-18 11:52) [12]>Bura © (18.06.02 09:11)
>А тип чего он мог переопределить? Boolean?
А почему бы и нет? Если в каком - нибудь "заюзанном" модуле в interface написать что - то вроде
type
Boolean = Variant;
const
True = "True";
False = "False";
, то как раз такой exception и возникнет.
← →
Bura (2002-06-18 15:54) [13]Все uses, использованные в этом модуле, используются и в других модулях, тем не менее, там все прокатывает. А насчет объявлений в процедуре - это все. Все, что вместо "..." можно просто закомментить и будет тот же результат. Эти две переменных больше нигде не используются. Я их объявил просто так для проверки условия при возникновении ошибки.
← →
McSimm (2002-06-18 16:23) [14]Хорошо бы посмотреть кусок из CPU window, соответствующий приведенному участку программы.
← →
Digitman (2002-06-18 16:23) [15]>>
if (Flag and ss) then {Здесь выдает ошибку Invalid variant type conversion}
А с чего ты взял, что именно ЗДЕСЬ ? Приведи конкретные аргументы в пользу сего факта
← →
Skier (2002-06-18 16:28) [16]> Bura
А если заменить Flag на, скажем AFlag.
Ну, просто в качестве эксперемента.
← →
Bura (2002-06-19 09:06) [17]>Skier Такая же беда.
>DigitMan
ДО if я поставил ShowMessage("1") после begin я поставил ShowMessage("2"). Сообщение "1" показывает, вываливается с ошибкой и сообщение "2" не показывает. Или это ни о чем не говорит?
А кусок CPU ща попробую сделать.
← →
Anatoly Podgoretsky (2002-06-19 09:57) [18]Одназначно у тебя переопределен тип и вот возможные враги
DMShrd, DocHndl, SysTools, C5Types, cutils, ConfHndl, LTOpers, LAgents;
но это при условии, что ты привел все необходимые куски кода и одназначно определил, что ошибка происходит именно в этой строке.
Для анализа сделай простой проект, только с куском этого кода и с указанными uses
Но возможно твой проблема в строчках ...
← →
McSimm (2002-06-19 10:18) [19]То что ShowMessage("2") не отрабатывает может быть из-за ложности условия в if. А ошибка при этом происходит либо в else, либо дальше по коду.
Поставь точку прерывания на строчку с if и пошагово пройди по программе до появления ошибки.
← →
Digitman (2002-06-19 11:46) [20]>Bura
Ставь BP на строку с IF, лови BP, в дебагере запроси значения TVarData(Flag).VType и TVarData(ss).VType ... Если дебагер при вычислении обоих выражений не покажет ошибки, 100% - и Flag и ss есть варианты !
← →
* rus * (2002-06-20 17:22) [21]По-моему, решение ищется не там. Из всех Вас в данном случае прав именно blackman (18.06.02 09:38)
>Поставь в скобки if ((flag) and (ss))
>должно сработать
Если скобок не поставить, то выражение Delphi"ой интерпретируется как if (flag and ss = true), т.е. выполняется арифметическое(!) И над логическими операндами. Я б на месте Delphi тоже сругнулся.
← →
McSimm (2002-06-20 17:28) [22]* rus * (20.06.02 17:22)
Хорошо, что ты не на месте Делфи :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c