![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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)
Разницу видишь?