![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Насчет Table.FieldCount(помогите с куском пргораммы) [D6, WinXP]
MakedoneZ © (2005-02-01 11:13:00)Предупреждаю я делитант и в Delphi почти ничего не умею.
Вот вам интересный кусок программки.
И у меня к профессионалам вопрос:
Имеется TDBGrid,в его третьем столбце проставляется либо "+" ,либо вообще ничего.
Программа проверяет кол-во период,то есть сколько раз чередуется такая комбинация:
один или подряд несколько плюсов,затем один или несколько подряд идущих пустот,затем подряд один или несколько плюсов. То есть это есть 1 период. Переменная же Cycle выдает кол-во таких периодов во всей таблице.
Вот код:
function CountCycles(Table: TTable; dbgCycle: TDBGrid) : Integer;
var
i: Integer;
Value: String;
Cycle: Byte;
begin
i:=1;
Cycle:=0;
Table.First;
if Table.Fields.Fields[2].AsString='+' then
begin
Repeat
Table.Next;
Inc(i);
if Table.Fields.Fields[2].AsString<>'+' then
begin
Repeat
Table.Next;
Inc(i);
if Table.Fields.Fields[2].AsString='+' then Inc(Cycle);
Until (Table.Fields.Fields[2].AsString='+')OR(i=30);
end; //If
Until i=30;
end //If else ShowMessage('*******');
if cycle=0 then cycle:=1;
CountCycles:=Cycle;
end; //fUNCTION
Так вот все нормально если я за i равное кол-ву полей.
А вот вместо i=30 использую i=Table.FielCount то рез-т бывает неверным. Дело в том что я взял для проверки i=30 когда число полей 30 тоесть статически,но при выполнении программы неизвестно настоящее кол-во полей,они создаются динамически,поэтому я пытаюсь использовать Table.FieldCount;
И вообще в отладчике делаю Inspect(z) где z=Table.FieldCount,а он выдает: "Variable 'z' inaccessible here due to optimization".
(сильно подозреваю что ф-я выдает,что-то другое,наверное я как-то неправильно ее использовал)
Еще раз напомню что я делитант.
MakedoneZ (2005-02-01 12:25:00) [1]Спасибо всем!
Плохиш (2005-02-01 11:48:00) [2]
>Smithson (01.02.05 11:42) [6]
>Ээээ, пардон. Никогда не использовал родные борландовские Table.
>У них как-то по другому сделано? Тогда расскажи.
Список компонентов, пожалуйста, у которых FieldCount показывает количество записей возвращаемых запросом.
Smithson (2005-02-01 11:42:00) [3]Ээээ, пардон. Никогда не использовал родные борландовские Table. У них как-то по другому сделано? Тогда расскажи.
Igor_thief (2005-02-01 11:39:00) [4]Вместо FieldCountнадо RecordCount.
pasha_golub (2005-02-01 11:39:00) [5]Плохиш © (01.02.05 11:33) [3]
А зачем?
Плохиш (2005-02-01 11:33:00) [6]
>Smithson (01.02.05 11:28) [2]
>Пункт второй. Что значит неверный результат? FieldCountуказывает количество возвращенных запросом записей, а цикл надо делать от 0 до FieldCount-1.
Определения записи и поля знаем?
Smithson (2005-02-01 11:28:00) [7]Пункт первый. Если присвоить значение перемнной, но больше ее нигде в функции не использовать, то все с ней связанное удалит оптимизатор. Поэтому лиюо смотреть в отладчике само значение Table.FieldCount, либо делать что-то типа MessageBox и выводить в нем значение искомой переменной.
Пункт второй. Что значит неверный результат? FieldCount указывает количествовозвращенных запросом записей, а цикл надо делать от 0 до FieldCount -1.
Плохиш (2005-02-01 11:19:00) [8]Какая свызь между FieldCount и количеством записей в таблице?