Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

Неукротимый варнинг.. Кто-то тормозит..   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
14-4065
Igorek
2003-09-12 11:07
2003.10.02
Что такое ЛЕНЬ?


1-3932
Islander
2003-09-21 15:50
2003.10.02
Как называть объекты?


11-3811
D.V.K
2003-01-23 08:06
2003.10.02
Как правильно работать с немодальными формами


1-3985
Zhirnov Maxim
2003-09-19 11:45
2003.10.02
Как построить дерево процессов?


1-3900
Maks Realov
2003-09-18 13:21
2003.10.02
Получение списка TControl(компонент) в режиме Design-time.