Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизThere is no overloaded version of FindNode that can be called w Найти похожие ветки
← →
Solo © (2007-04-02 17:17) [0]вот участок кода:
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?
← →
Desdechado © (2007-04-02 17:23) [1]> FindNode
[
LookedNum]
> FindNode(
SprNodeMnem)
Разницу видишь?
← →
solo © (2007-04-02 17:37) [2]И то и другое - стрингового типа. Вот полный код
//--получить соответствие показателя справочнику--------------------------------
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:40) [3]Массив от списка параметров отличаешь?
← →
solo © (2007-04-02 17:40) [4]Ой блиииин... Допер...
Что-то я к концу дня туплю. Кстати, если не сложно, объясните разницу м/у [ и ( - почему в одном случае так, а в другом эдак...
← →
solo © (2007-04-02 17:41) [5]Все. Спасибо большое, допер. Позор мне :-)))) Елки -палки, три дня имелся с этим... Все выходные убил. Спасибо
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.053 c