Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Внизсамопроизвольное изменение переменных Найти похожие ветки
← →
bobby (2002-10-14 08:48) [0]Начало происходить самопроизвольное изменение переменных во время выполнения.
Я думаю, что это из-за большого количества глобальных переменных. Может быть такое?
Если да, то как увеличить буфер, для них?
← →
MBo (2002-10-14 08:52) [1]>думаю, что это из-за большого количества глобальных переменных.
Нет.
Где-то ошибки.
Например
var a:array[0..5] of integer;
b:integer;
если не включено отслеживание Range, a[6]:=1 приведет к изменению b
← →
Digitman (2002-10-14 08:55) [2]
> Может быть такое?
Нет
← →
Song (2002-10-14 09:01) [3]2MBo © (14.10.02 08:52)
Чего в самом деле? :-)
Неужели данные в сегменте DS идут непрерывным потоком?
← →
MBo (2002-10-14 09:06) [4]>Song
Зато наглядно ;)
вот рабочий пример
var
Form1: TForm1;
a:array[0..5] of integer;
b:integer;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
b:=6;
a[b]:=1;
caption:=inttostr(b);
end;
← →
bobby (2002-10-14 16:38) [5]Как же ЭТО поймать???
Все остальное работает не один месяц уже на 4 компах без глюков.
Единственная зацепка-знаю место в объявлениях глобальных переменных, в которое опасно вставлять новую переменную, она начинает изменятся. Значит виновата точно та что объявлена до нее?
т.е
var
a:integer;
......x:type type;
//-вот здесь что ни объяви, будет глючить.
d:word;
← →
TTCustomDelphiMaster (2002-10-14 16:49) [6]А можно поподпобней этот кусочек
......x:type type;
← →
Digitman (2002-10-14 17:00) [7]
> Значит виновата точно та что объявлена до нее?
"Виноват" неверный прикладной код, написанный тобой (и на каком-то участке выполнения некорректно работающий с переменными), а не переменная (объявленная "до", "после" или где-то еще)...
в Win32 API есть, конечно, некоторые спец.ф-ции, позволяющие отследить обращение к участку памяти со стороны исполняемого кода и выявить адрес памяти процесса, содержащего маш.инструкции, осуществившие при своем выполнении таковое обращение, но - стоих ли этим заниматься ? Не лучше ли строчку за строчкой просмотреть исх.код (второпях, без всесторонней проверки сверстанный когда-то) в поисках "сомнительных" (с т.з. ожидаемого результата) участков исх.текста ?
← →
Юрий Зотов (2002-10-14 17:11) [8]А вот это:
x:type type;
Это вообще что есть такое?
А то странная какая-то конструкция, мягко говоря.
← →
han_malign (2002-10-14 17:30) [9]для локализации кода портящего другие переменные, надо примерно поймать момент когда это происходит, а потом поставить глобальный breackpoint, на изменение данных и пройтись еще раз - короче, режим отладки не для хакеров делался, а для грамотных программистов.
← →
bobby (2002-10-14 19:58) [10]......x:type type;
ну это я так глупо объяснил произвольную переменную произвольного типа, потому что кода под рукой небыло.
Сейчас вижу, что там вот что:
var
command: tcommand;
tim: integer;
hnt: THintWindow;
xx,yy: integer;
selRect: trect;
SgCaptionRect: trect;
Column, Row: Longint;
selecting: boolean;
c,r: integer;
gridSelection: tgridrect;
ClickedCol: integer;
ClickedRow: integer;
ClickedRect: TRect;
linkcell: tpoint;
{вот эти переменные изменяются сами}
ResplvedForPaintCell: Tpoint;
ColSizeChanged :boolean;
{/вот эти переменные изменяются сами}
CellTextRect: array[1..100,1..32]of TPoint;
txtwidth: integer;
FileBuf: Tstringlist;
Columns: array [0..32] of TColumn;
ColCount : integer........................
.............. и т.д
к
зы
2Digitman:
>"Виноват" неверный прикладной код, написанный тобой (и на ? каком-то участке выполнения некорректно работающий с переменными), а не переменная (объявленная "до", "после" или где-то еще)...
Доставляет удовольствие язвить? Все поняли, что я имел в виду.
← →
TTCustomDelphiMaster (2002-10-14 20:34) [11]У вас где то идет запись в элемент CellTextRect[1,0]
Скорее всего цикл начинается с 0. Ищите.
← →
bobby (2002-10-15 05:45) [12]>У вас где то идет запись в элемент CellTextRect[1,0]
Точно! Спасибо всем огромное!
← →
Digitman (2002-10-15 08:35) [13]>bobby
>>Значит виновата точно та что объявлена до нее?
Так какая же "та" (переменная - ты имел ввиду) у тебя "виновата", а ? И в чем она "виновата" ?
Сударь, прежде чем упрекать меня в якобы сарказме, выясни для себя для начала, может ли вообще переменная быть в чем-то "виноватой". Или все же именно код "виноват" (тот самый, что выполняет некорректное присвоение CellTextRect[1,0] := .. )
← →
Anatoly Podgoretsky (2002-10-15 09:02) [14]Я бы предложил и дальше пойтиЮ подумать а код ли виноват?
← →
Пошляк (2002-10-15 09:27) [15]Виноваты кривые руки и бестолковая голова - советую их отрезать и пришить новые.
← →
Digitman (2002-10-15 10:46) [16]>Anatoly Podgoretsky
>>а код ли виноват
Ну а что ж еще ?) Если не код ?)
← →
Valt (2002-10-15 10:52) [17]Народ, хватит базарить!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c