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

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

Насчет 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 и количеством записей в таблице?


Наверх

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