Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

самопроизвольное изменение переменных   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
7-78685
Grig
2002-08-15 15:08
2002.10.24
как сделать прогу демонстрационной


3-78241
diwin
2002-10-01 18:58
2002.10.24
теоретический вопрос по Query


6-78562
VID
2002-08-23 08:43
2002.10.24
НЕ для слабонервных!


1-78434
brestmarket
2002-10-11 14:52
2002.10.24
Вопрос к мерчендайзерам шаровара!?


1-78457
Rouse_
2002-10-08 19:03
2002.10.24
Раскрытие ветви TreeView