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

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

Глюк FieldByName() [D7, dBase, FoxPro]


ancot ©   (2007-01-19 00:08:00) 

Всем доброй ночи. У меня такая беда:
На главной форме приложения есть 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;

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


Германн   (2007-01-19 01:39:00) [1]

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


Германн   (2007-01-19 01:35:00) [2]


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

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


ancot   (2007-01-19 01:25:00) [3]

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

'NM' <> ''NM''


sniknik   (2007-01-19 01:13:00) [4]

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


Германн   (2007-01-19 01:03:00) [5]


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

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


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

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


ancot   (2007-01-19 00:57:00) [7]


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

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


> 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;


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


Palladin   (2007-01-19 00:36:00) [8]

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


ancot   (2007-01-19 00:28:00) [9]

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

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:13:00) [10]

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


Palladin   (2007-01-19 00:12:00) [11]

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


Наверх

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