Форум: "Потрепаться";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
ВнизНеукротимый варнинг.. Кто-то тормозит.. Найти похожие ветки
← →
Ihor Osov'yak (2003-09-15 15:06) [0]Как говорится, проблема на пустом месте.
Ниже фрагмент кода. Код локальных процедур удален, так как он не влияет на сабж.
В случае наличия выделенной строки, компилятор дает предупреждение, что
[Warning] fFileSetting.pas(355): Return value of function "GetXMLStrWithCurrentPrm" might be undefined
Причем я с такой трактовкой не согласен..
Зы - место положение строчки - немного выше, немного ниже на сабж не влияет.. Если некоторе колличество строчек кода перед соотв. строчкой закомментировать ( не важно какое) - варнинг исчезает. Если потои начинать откомментировать - снова появляется. Причем наблюдается триггерный эффект..
Еще. Если второй параметр сменить с s_FolderAdsMsgs2 на другой - сабж исчезает.. s_FolderAdsMsgs2 - глобальная статическая строка, ничем ни приметная..
function GetXMLStrWithCurrentPrm: string;
var iDoc:IXMLDOMDocument;
iNode:IXMLDOMNode;
procedure SetIntAttr(const aKey:string; aVal:integer);
begin
end;
procedure SetAttr(const aKey:string; aVal:string);
begin
end;
procedure SetBoolAttr(const aKey:string; aVal:boolean);
begin
end;
begin
result := str_EmptyParam; // line 355
iDoc := CreateXMLDocFromString(result);
if not assigned(iDoc) then exit;
iNode := iDoc.selectSingleNode("hmsiCfg");
if not assigned(iNode) then exit;
SetAttr(pmUsersFileName, sUsersFileName);
SetAttr(pmMessageFileName, sMessageFileName);
SetAttr(pmMessageFileName2, sMessageFileName2);
SetAttr(pmEmailsFileName, sEmailsFileName);
SetAttr(pmExclusionEmailFileName, sExclusionEmailFileName);
SetAttr(pmExclusionEmailFileName2, sExclusionEmailFileName2);
SetAttr(pmLogFileName, sLogFileName);
SetIntAttr(pmModeLogFile, ModeLogFile);
SetIntAttr(pm_ModeDelOldLetter, ModeDelOldLetter);
SetIntAttr(pmModeStartUrl, ModeStartUrl);
SetIntAttr(pmMaxCountEMails, MaxCountEMails);
SetBoolAttr(pmCustomProxySetting, sCustomProxySetting);
SetBoolAttr(pmEnProxy, sEnProxy);
SetAttr(pmProxyAddr, sProxyAddr);
SetAttr(pmProxyPort, sProxyPort);
SetBoolAttr(pmGotoNextAccountAfterDownloadWrongPade,
sGotoNextAccountAfterDownloadWrongPade);
SetBoolAttr(pmEnRemoveEmailFeadture, sEnRemoveEmailFeadture);
SetAttr(pmRemoveEmailFileName, sRemoveEmailFileName);
SetAttr(pmRemoveEmailKeywordFileName, sRemoveEmailKeywordFileName);
SetBoolAttr(pmEnBounceEmailFeadture, sEnBounceEmailFeadture);
SetAttr(pmBounceEmailFileName, sBounceEmailFileName);
SetAttr(pmBounceEmailKeywordFileName, sBounceEmailKeywordFileName);
SetIntAttr(pmModemsg, sModeMsg);
SetAttr(pmMessageFileName, sMessageFileName);
SetAttr(pmFolderAdsMsgs, s_FolderAdsMsgs);
SetAttr(pmMaskAdsMsgs, sMaskAdsMsgs);
SetAttr(pmFileMsgTemplate, sFileMsgTemplate);
SetIntAttr(pmModemsg2, sModeMsg2);
SetAttr(pmMessageFileName2, sMessageFileName2);
SetAttr(pmFolderAdsMsgs2, s_FolderAdsMsgs2);
SetAttr(pmFileMsgTemplate2, sFileMsgTemplate2);
SetAttr(pmMaskAdsMsgs2, sMaskAdsMsgs2);
SetIntAttr(pmModeWork, sModeWork);
result := iDoc.xml;
end;
Дело также не в str_EmptyParam - это обычная нетипизированная констатна. Если ее менять на пустую строку - "" ситуация не меняется..
Делфи - пятый, оба сервиспака..
Зы - какие есть соображения по этому поводу?
← →
AlexKniga (2003-09-15 15:33) [1]Если не слишком много, то зашарь весь проект, или хоть этот модуль.
← →
Игорь Шевченко (2003-09-15 15:36) [2]Может, все-таки кода побольше ?
← →
Ihor Osov'yak (2003-09-15 15:54) [3]Проект полностью не могу, так как он не мой - моя задача баги немного пофиксить, но с него сделана выборка, которая при компиляции дает такой-же варнинг..
http://www.users.bit.te.ua/osi/download/bug.zip
весит 22к
Туда же вложено MSXML_TLB.pas, используемый мною, на всякий случай..
Сейчас имеем
[Warning] badUnit.pas(210): Return value of function "GetXMLStrWithCurrentPrm" might be undefined
Спасибо за внимание..
← →
Ihor Osov'yak (2003-09-15 16:01) [4]Да, при компиляции варнинга нет. Варнинг только при билде..
И в демке для бага, и в оригинальном проекте..
← →
Игорь Шевченко (2003-09-15 17:23) [5]Угу, ошибка наличествует :)
← →
troits (2003-09-15 17:26) [6]Если в globResp.pas глобальные var- ы заменить на типизированные кончтанты, варнинг, вроде, пропадает. Почему, непонятно. Я пробовал в инициализационной части юнита инициализировать var-ы, но варнинг оставался.
← →
Игорь Шевченко (2003-09-15 17:30) [7]Если сделать вложенные процедуры (SetIntAttr и SetAttr) невложенными, то ошибка тоже пропадает :)
← →
Ihor Osov'yak (2003-09-15 18:08) [8]2 Игорь Шевченко, troits
Спасибо.
Советами по обходу варнинга, конечно, воспользуюсь.. Как я понял, можно сделать несмелое предположение о не совсем адекватном поведении компилятора для этого случая?
← →
AlexKniga (2003-09-15 19:11) [9]Если сменить константу на Char (со сменой типа функции), то предупреждение исчезает.
← →
AlexKniga (2003-09-15 19:19) [10][off]Как копировать из окна CPU?[/off]
← →
Ihor Osov'yak (2003-09-15 19:31) [11]2 [10] AlexKniga © (15.09.03 19:19)
У меня не получилось. Ручками переписывал в свое время.. А что, там что-то разлядел?
Вообще то, на досуге я собирался посмотреть, что там он (компилятор) нагенерил.. Правда, досуг у меня намечается не раньше, чем сегодня после одинадцати вечера... Да и в данном случае, меня интересовало, почему варнинг, ведь по всем канонам там должно быть без него.. А не то, какой код он делает..
Зы - если там чего рассмотрел - скажи на уровне идеи - я понятлив :-)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c