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

Вниз

Битовые переменные   Найти похожие ветки 

 
Sholah_Weras ©   (2006-10-26 16:57) [0]

Тут такой косяк. Ест ьпеременная f1, битовая. Обявлена в процедуре потока. При начале выполнения процедуры в нее записывается левое значение (140). Что за чудо-то такое? Пробовал  менять тип переменной и ее место объявления. Один черт, 140 записывается. Почему так?


 
Anatoly Podgoretsky ©   (2006-10-26 16:59) [1]

В Дельфи нет битовых переменных


 
Anatoly Podgoretsky ©   (2006-10-26 16:59) [2]


> Один черт, 140 записывается. Почему так?

Так звезды сложились


 
Elen ©   (2006-10-26 17:04) [3]


>  Ест ьпеременная f1, битовая

Byte? (некоторые ее читаюк как "бите")


 
Сергей М. ©   (2006-10-26 17:05) [4]


> Ест ьпеременная f1, битовая


Косяк. (*)


> Обявлена в процедуре потока


см. (*)


> левое


Бывает и правое.


> Что за чудо-то такое?


Восьмое чудо) .. Известно ж)..


> Пробовал  менять тип переменной и ее место объявления


Пробуй еще .. авось "заработает" ..


> Почему так?


потомушта


 
palva ©   (2006-10-26 17:25) [5]

Переменная объявлена внутри процедуры - значит локальная - значит память под нее выделяется в стеке - а в этой памяти было что-то записано раньше - оказалось 140.


 
Desdechado ©   (2006-10-26 17:39) [6]

Всем давно известно, что переменные перед использованием нужно инициализировать.


 
Sholah_Weras ©   (2006-10-26 21:59) [7]

2 Anatoly Podgoretsky
Я имел ввиду, byte.
2 Сергей М
Поглумились? Помогли советом? Респект и уважуха за такую помощь.
2 Desdechado
Инициализировать? Как так, покажите пожалуйста на примере.


 
Desdechado ©   (2006-10-26 22:02) [8]

Инициализировать - это присваивать в начале процедуры какое-то значение по умолчанию, которое потом можно интерпретировать.


 
Leonid Troyanovsky ©   (2006-10-26 22:11) [9]


> Sholah_Weras ©   (26.10.06 16:57)

> Тут такой косяк. Ест ьпеременная f1, битовая. Обявлена в
> процедуре потока. При начале выполнения процедуры в нее
> записывается левое значение (140). Что за чудо-то такое?


Поверим на слово, что 140.
Ну, а проблема-то в чем?

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2006-10-26 23:56) [10]


> Я имел ввиду, byte.

Это меняет дело, а то я весь вечер мучался, пытаясь понять как в бит записать 140.
Но как было сказано - Так звезды сложились, не хочешь с ними играть в рулетку, инициализируй в нужное тебе значение, не пускай это дело на самотек.


 
Sholah_Weras ©   (2006-10-27 20:59) [11]

Решил все-таки, что со звездами хутки плохи. Все переменные инициализировал. Только вот штука в том, что в f1 записывается что надо (0 для начала) и код с участием этой переменной выполняется. А есть у меня еще такая переменная f2, тоже byte. Тоже нуль прописывается, но вот код с ее использованием не работает.

for j:=0 to 9 do              //для f1 все абсолютно идентично, разве что
 begin                          //не n1 используется, а n.
  if XY[f2] > n1 then
  begin
   Inc(n1,30);
   Inc(k1);
  end
  else
  begin
   Inc(f2,2);
   Break;
  end;
 end;

Думал-думал, что за глюки такие, так к ничему и пришел.


 
DrPass ©   (2006-10-27 21:21) [12]

Глюков нет -  есть ошибки в программе. Этот код ничего никому не говорит. Что у тебя в переменных, что должно происходить, и что тебя не устраивает?


 
Sholah_Weras ©   (2006-10-27 21:43) [13]

В программе два таких цикла. В одном f1 и n, в другом f2 и n2. В первом случае Inc(f2,2) и Break выполняются, а во втром даже точек прерывания напротив Inc(f1,2) и Break не стоит (такие сининькие слева). Не могу понять почему.


 
DrPass ©   (2006-10-27 22:01) [14]

Просто так подобных вещей не бывает. Выключи оптимизатор и проверь пошагово.


 
Sholah_Weras ©   (2006-10-27 22:09) [15]

2 DrPass
Если бы было все атк просто. Я уже второй день сижу в этом отладчике. Пробовал менять имена и типы переменных. Нуль. Сейчас опять буду пытаться разобраться.


 
DiamondShark ©   (2006-10-27 22:10) [16]


> код с ее использованием не работает

любой код всегда работает.
ты, видимо, хотел сказать, что тебя не устраивает результат работы.

тогда выкладывай ожидаемый результат, фактический результат, и свои причины, по которым разница между первым и вторым тебя не устраивает.


 
DiamondShark ©   (2006-10-27 22:14) [17]


> не стоит (такие сининькие слева). Не могу понять почему

потому что компилятор для них не сгенерировал маш. код.

к сожалению, более развёрнутых объяснений дать невозможно, т.к. вместо действительного проблемного кода приведено чёрт-те что.


 
RASkov   (2006-10-27 23:01) [18]

> [13] Sholah_Weras ©   (27.10.06 21:43)


> Не могу понять почему.

И в самом деле чёта непонятка какая-то. Ты б привел поболее своего кода. Мож чеб и надумали.


 
DrPass ©   (2006-10-27 23:58) [19]


> Sholah_Weras ©   (27.10.06 22:09) [15]

Все так просто и есть. Такие сбои бывают только в двух случаях - если накосячил программист и если битая планка памяти



Страницы: 1 вся ветка

Текущий архив: 2006.11.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.051 c
15-1161552124
RASkov
2006-10-23 01:22
2006.11.12
Посмотрите


15-1161596313
clickmaker
2006-10-23 13:38
2006.11.12
Мужики, посоветуйте UML-редактор для виндов


15-1161603729
kan
2006-10-23 15:42
2006.11.12
Проверка диска при загрузке WinXP


3-1158044838
SergP.
2006-09-12 11:07
2006.11.12
Как узнать тип поля в открытом датасете?


8-1144330627
QuickFinder
2006-04-06 17:37
2006.11.12
Параметры Flash-файла