Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
4-78732
Patrick
2002-09-10 08:39
2002.10.24
Использование MAPISendMail


3-78217
MsGuns
2002-10-03 20:42
2002.10.24
Paradox 3 вылетает, когда запускается из-под Win


14-78597
Карлсон
2002-10-01 21:37
2002.10.24
мужики, и дамы тоже....


1-78369
sascha
2002-10-15 07:17
2002.10.24
Поясните код.


6-78561
Agor
2002-08-20 14:20
2002.10.24
Кодировка и TidMessage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский