![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Invalid pointer operation [D7, XP]
uncle benc © (2007-02-05 12:32:00)Господа, помогите разобраться.
Есть процедура вида:
procedure ClearGrid(var Grid : TGrid);
var i : Integer;
begin
for i:=1 to Grid.RowCount-1 do
Grid.Rows[i].Clear;
end;
Периодически (не каждый раз), при работе данной процедуры вылетает ошибка указанная в заголовке вопроса.
С чем это может быть связано?
Германн (2007-02-06 02:03:00) [1]
> Anatoly Podgoretsky © (05.02.07 20:31) [49]
>
> > uncle benc (05.02.2007 16:43:46) [46]
>
> В школе на математику принципиально не ходил.
>
Ранее была "слепая печать". Её преодолели. Так теперь ещё возникло "слепое" чтение! :-)
Anatoly Podgoretsky (2007-02-05 20:31:00) [2]> uncle benc (05.02.2007 16:43:46) [46]
В школе на математику принципиально не ходил.
Johnmen (2007-02-05 17:15:00) [3]> uncle benc (05.02.07 15:43) [25]
> Grid.RowCount := Query. RecordCount+1
Садитесь. Два.
uncle benc (2007-02-05 16:46:00) [4]Хотя, ладно, всем спасибо. Думаю нет смысла дальше развивать эту тему, т.к. переливаем из пустого в порожнее.
uncle benc (2007-02-05 16:43:00) [5]
> RASkov (05.02.07 16:32) [44]
Тут нет ошибки.
> значения RowCount начинаются с 0, RecordCount с 1
Исходя из этого RowCount := RecordCount+1
т.е. если возвращенных записей 1, то RowCount станет равным 2 (заголовок и строка)
RASkov (2007-02-05 16:33:00) [6]> Т.е. мы должны добавить столько строк, сколько записей в
> таблице+1
Т.е. мы должны добавить столько строк, сколько записей в таблице+1 на заголовки
RASkov (2007-02-05 16:32:00) [7]И вот еще
if Query.RecordCount >= 1 then
Grid.RowCount := Query.RecordCount+1
else Grid.RowCount := 2;
ClearGrid(Grid);
По ходу надо +2 делать...
Т.е. мы должны добавить столько строк, сколько записей в таблице+1
А значения RowCount начинаются с 0, RecordCount с 1
Ну и здесь ошибка
Grid.Cells[0 , i] := Query.FieldByName('Id').AsString;
Нет последней строчки в гриде....
uncle benc (2007-02-05 16:24:00) [8]Поле Id - счетчик. (т.е. LongInt)
Elen (2007-02-05 16:23:00) [9]
> RASkov
А извини я [29] пропустила :)
Elen (2007-02-05 16:21:00) [10]
> RASkov
Alarm[i] := True else Alarm[i] := False;
Ты хочеш сказать что нужно Alarm[i-1] := True else Alarm[i-1] := False; т.к. он с нуля начинается? тогда в [28] автор опять мозги пудрит
RASkov (2007-02-05 16:14:00) [11]> [37] uncle benc (05.02.07 16:08)
> i := 1
i:=1
SetLength(Alarm, Query.RecordCount);
While not Query.Eof do
begin
Grid.Cells[0,i] := Query.FieldByName('Id').AsString;
Grid.Cells[1,i] := DateTimeToStr(Query.FieldByName('DateIn').AsFloat);
Grid.Cells[2,i] := Query.FieldByName('Avtor').AsString;
Grid.Cells[3,i] := Query.FieldByName('Zayava').AsString;
if Query.FieldByName('DateOut').AsFloat <> 0 then
Grid.Cells[4,i] := DateTimeToStr(Query.FieldByName('DateOut').AsFloat);
Grid.Cells[5,i] := Query.FieldByName('Ispolnitel').AsString;
if Query.FieldByName('Alarm').AsBoolean then
Alarm[i] := True else Alarm[i] := False;
Query.Next;
i:=i+1;
end;
> А поле ID у тебя строковое?
А какя разница еслиGrid.Cells[0,i] := Query.FieldByName('Id'). AsString;
Elen (2007-02-05 16:09:00) [12]
> uncle benc
А поле ID у тебя строковое? И что за ошибка дословно?
RASkov (2007-02-05 16:08:00) [13]> [31] Игорь Шевченко © (05.02.07 15:57)
> Убивать из рогатки
Я тоже порой наподобии так обзываю идентификаторы, с англ. проблема, а так более менее понятно
ЗЫ пишу в основном только для себя.
uncle benc (2007-02-05 16:08:00) [14]i := 1
Elen (2007-02-05 16:08:00) [15]
> то компилятору не понравились названия полей и он нарочно
> вставил генерацию ошибки в программу
Это ты пошутил?
Loginov Dmitry (2007-02-05 16:08:00) [16]Может на грид обработчики какие повесил?
Elen (2007-02-05 16:08:00) [17]
> Теперь ошибка вылезает тут:
Так проверь чему у тебя равно i
uncle benc (2007-02-05 16:07:00) [18]
> Игорь Шевченко © (05.02.07 15:57) [31]
Я понял, вы имели в виду, что компилятору не понравились названия полей и он нарочно вставил генерацию ошибки в программу (своеобразная рогатка, которая убивает желание программировать)
uncle benc (2007-02-05 15:58:00) [19]
> Игорь Шевченко © (05.02.07 15:57) [31]
>
> > Avtor
>
>
> > Ispolnitel
>
>
> > Zayava.DateIn
Что это меняет?
Игорь Шевченко (2007-02-05 15:57:00) [20]
> Avtor
> Ispolnitel
> Zayava.DateIn
Убивать из рогатки