Вниз
Скачать: CL | DM;

Глюк FieldByName()   Найти похожие ветки 

← →
ancot   (2007-01-19 00:08) [0]

Всем доброй ночи. У меня такая беда:
На главной форме приложения есть TTable который
открывается в OnCreate формы.

Еще есть функция:

function GetConst(const AName: String): String;
begin
 Result := NalogDM.OrgTbl.FieldByName(AName).AsString;
end;


смысл надеюсь понятен.

При вызове функции
GetConst("NM");
возникает исключение EDatabaseError OrgTbl: Field"NM" not found., а если переписать функцию:
function GetConst(const AName: String): String;
begin
 Result := NalogDM.OrgTbl.FieldByName("NM").AsString;
end;

то все отрабатывает, подскажите плз куда рыть


← →
Palladin ©   (2007-01-19 00:12) [1]

либо у тебя в вызове GetConst строка не "NM", либо обращение идет к какой то другой функции GetConst...


← →
Palladin ©   (2007-01-19 00:13) [2]

а выводы о глючности метода FieldByName весьма и весьма поспешны...


← →
ancot   (2007-01-19 00:28) [3]

поспешил...
вот что еще нарыл

function TFields.FindField(const FieldName: string): TField;
var
 I: Integer;
begin
 for I := 0 to FList.Count - 1 do
 begin
   Result := FList.Items[I];

   //Вот в этом месте AnsiCompareText не возвращает 0 даже
   //если оба параметра равны (по крайней мере в отладчике)
   if AnsiCompareText(Result.FFieldName, FieldName) = 0 then Exit;

 end;
 Result := nil;
end;


← →
Palladin ©   (2007-01-19 00:36) [4]

ну это что то из области фантастики... строки не равны и мало ли что ты видишь глазами в отладчике... либо это системный сверхглюк... советую по индексу поля получить его имя и побайтово вывести две строки в лог... сразу все будет видно...


← →
ancot   (2007-01-19 00:57) [5]


> либо это системный сверхглюк...

наверно, потому что не работает даже это:


> function GetConst(const AName: String): String;
>   var i: Integer;
>       s1, s2: String;
> begin
>   s1 := AName;
>   begin
>     for i := 0 to NalogDM.OrgTbl.Fields.Count - 1 do
>     begin
>       s2 := NalogDM.OrgTbl.Fields[i].FieldName;
>      
>       //вот тута "NM" <> "NM"
>       if s1 = s2 then  Result := NalogDM.OrgTbl.Fields[i].
> AsString;
>     end;
>   end;
> end;


да и на зрение не жаловался...


← →
ancot   (2007-01-19 01:00) [6]

правда по кнопке "код" не попал...


← →
Германн ©   (2007-01-19 01:03) [7]


> ancot   (19.01.07 00:57) [5]
>
>
> > либо это системный сверхглюк...
>
> наверно, потому что не работает даже это:
>
>

Не верю. Продолжай поиски.


← →
sniknik ©   (2007-01-19 01:13) [8]

> //вот тута "NM" <> "NM"
if "NM" <> "NМ" then ShowMessage("а ведь действительно не равно! ;)");
скопируй отсюда и проверь.


← →
ancot   (2007-01-19 01:25) [9]

Всем спасибо, всетаки надо задуматся о зрении, в функцию приходит строка с одинарными кавычками побокам,

"NM" <> ""NM""


← →
Германн ©   (2007-01-19 01:35) [10]


> ancot   (19.01.07 01:25) [9]
>
> Всем спасибо, всетаки надо задуматся о зрении, в функцию
> приходит строка с одинарными кавычками побокам,
>
> "NM" <> ""NM""
>

Это действительно "системный сверхглюк"! Только вот виновата оказалась "другая сисиема" :)
P.S. Кстати "задуматься о зрении никогда не рано и часто полезно.


← →
Германн ©   (2007-01-19 01:39) [11]

Прошу прощения за мой форумовский!
"сисиема" -> "система" :)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
2-1173955723
Max459
2007-03-15 13:48
2007.04.08
Тень от формы.


15-1174169491
MikePetrichenko
2007-03-18 01:11
2007.04.08
Весеннее обострение?


2-1174054885
Serg777
2007-03-16 17:21
2007.04.08
БД и Stringgrid


2-1173964046
Нуб
2007-03-15 16:07
2007.04.08
chr(5)


15-1173637743
SkySpeed
2007-03-11 21:29
2007.04.08
Правильно ли решён пример по теории вероятн., если нет, то как?..




   Наверх