Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

There is no overloaded version of 'FindNode' that can be called w


Solo ©   (2007-04-02 17:17:00) 

вот участок кода:

 if TopNode.ChildNodes['SPRV'].ChildNodes.FindNode(SprNodeMnem) = nil then //Здесь FindNode срабатывает
 begin
   Result := False;
   Exit; //И выходим из проверки - все нормально
 end else //А если эта ячейка должна-а-а-а быть справочной
 begin
   SprNode := TopNode.ChildNodes['SPRV'].ChildNodes[SprNodeMnem];
   SprNodeName := SprNode.ChildNodes.First.Text;
 if SprNode.ChildNodes.FindNode[LookedNum] = nil then
   begin //Здесь FindNode дает ошибку!!!!!! Почему?
     Err:= 'Показатель "'+Grid.Cells[c, r]+'" отсутствует в справочнике "'+ SprNodeName +'"';
     LogErr(Err, IntToStr(r), IntToStr(c), 0);
   end else
   begin
     ShowMessage('Справочная ячейка '+SprNode.NodeName+' равна '+SprNode.ChildNodes[LookedNum].NodeName);
     Result := False;
   end;
 end;

end;


Компилер дает ошибку:
Error] Unit1.pas(449): E2250 There is no overloaded version of 'FindNode' that can be called with these arguments
НО КАК ЖЕ ТАК? Ведь LookedNum - строковый аргумент... К тому же в первом случае ошибки нет, а во-втором почему-то No Overloaded?


solo   (2007-04-02 17:41:00) [1]

Все. Спасибо большое, допер. Позор мне :-)))) Елки -палки, три дня имелся с этим... Все выходные убил. Спасибо


Desdechado   (2007-04-02 17:40:00) [2]

Массив от списка параметров отличаешь?


solo   (2007-04-02 17:40:00) [3]

Ой блиииин... Допер...
Что-то я к концу дня туплю. Кстати, если не сложно, объясните разницу м/у [ и ( - почему в одном случае так, а в другом эдак...


solo   (2007-04-02 17:37:00) [4]

И то и другое - стрингового типа. Вот полный код

//--получить соответствие показателя справочнику--------------------------------
function TForm1.GetErrSprv(r, c: Integer): Boolean; //Если False - все нормально
var //SprType: Boolean; // true - справочный, false - обычный
   SprNodeMnem, LookedNum, //мнемоническое имя нода с показателем, его имя,
   SprNodeName, Err: string; //содержимое проверяемой ячейки и текст ошибки
   TopNode, SprNode: IXMLNode;
begin
 Result := True; //Инициализация - как ошибка
// сначала определяем, имеет ли показатель справочный тип
 SprNodeMnem := GetPokNodeName(r, c);
//  ShowMessage(SprNodeMnem);
 LookedNum := 'n'+Grid.Cells[c, r];
 LookedNum := strtst(LookedNum, '"!\/()& ', 2);
 TopNode := XMLDoc.DocumentElement;
//  SprType := True; //Инициализация - пусть будет справочный тип
 if TopNode.ChildNodes['SPRV'].ChildNodes.FindNode(SprNodeMnem) = nil then
 begin
   Result := False;
   Exit; //И выходим из проверки - все нормально
 end else //А если эта ячейка должна-а-а-а быть справочной
 begin
   SprNode := TopNode.ChildNodes['SPRV'].ChildNodes[SprNodeMnem];
   SprNodeName := SprNode.ChildNodes.First.Text;
 if SprNode.ChildNodes.FindNode[LookedNum] = nil then
   begin
     Err:= 'Показатель "'+Grid.Cells[c, r]+'" отсутствует в справочнике "'+ SprNodeName +'"';
     LogErr(Err, IntToStr(r), IntToStr(c), 0);
   end else
   begin
     ShowMessage('Справочная ячейка '+SprNode.NodeName+' равна '+SprNode.ChildNodes[LookedNum].NodeName);
     Result := False;
   end;
 end;

end;


Desdechado   (2007-04-02 17:23:00) [5]

> FindNode [ LookedNum ]
> FindNode ( SprNodeMnem )
Разницу видишь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо