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

Вниз

WM_KILLFOCUS   Найти похожие ветки 

 
DevilDevil ©   (2006-10-25 17:56) [0]

В каких случаях приложению может придти это сообщение? У меня не поймёшь по какой причине оно приходит...


 
Игорь Шевченко ©   (2006-10-25 17:59) [1]

Ни в одном случае приложению это сообщение не приходит. Равно как и все остальные сообщения тоже не приходят приложению ни в каких случаях.


 
DevilDevil ©   (2006-10-25 18:06) [2]

> Игорь Шевченко ©   (25.10.06 17:59) [1]

Очень смешно!

А вообще, извиняюсь, сильно ступил; от отчаяния наверное.
Не могу найти, в  каком месте у меня ошибка, которая приводит к ошибке доступа к данным по адресу $00000004


 
DVM ©   (2006-10-25 18:09) [3]


> У меня не поймёшь по какой причине оно приходит...

Приходит окну при потере фокуса очевидно.


 
DevilDevil ©   (2006-10-25 19:44) [4]

> Приходит окну при потере фокуса очевидно.

Да это то я знаю, всё равно спасибо.

Ошибку нашёл. Странная она какая-то:

ОШИБКА:

for i := 0 to length(DinamicArray)-1 do
with DinamicArry[i] do ...


НЕТ ОШИБКИ:

if length(DinamicArray)<>0 then
for i := 0 to length(DinamicArray)-1 do
with DinamicArry[i] do ...


Кто нибудь знает, что происходит?


 
Gero ©   (2006-10-25 19:57) [5]

> [2] DevilDevil ©   (25.10.06 18:06)

Нет, не смешно, а грустно.


 
Германн ©   (2006-10-26 00:24) [6]


> Кто нибудь знает, что происходит?
>

Многие знают. Тем более что не так давно было весьма активное обсуждение сколько раз выполнится подобный цикл при разных типах переменной цикла. :-)


 
DevilDevil ©   (2006-10-26 12:25) [7]

> Германн ©   (26.10.06 00:24) [6]

procedure TForm1.FormCreate(Sender: TObject);
var i, Count, Iterations : integer;
begin
   Iterations := 0;

   Count := 0;
   for i := 0 to Count - 1 do
   inc(Iterations);

   Caption := IntToStr(Iterations);
end;


Или ты хочешь сказать, что length() возвращает DWORD?


 
ЮЮ ©   (2006-10-26 12:36) [8]


> Или ты хочешь сказать, что length() возвращает DWORD?


нет, это i в первом примере может быть DWORD.

З.Ы. Следую включить Range Checking в опциях проекта, иначе при неаккуратной работе с динамическими массивами AV и прочие просто неизбежны и трудно уловимы


 
DevilDevil ©   (2006-10-26 12:45) [9]

> нет, это i в первом примере может быть DWORD.

Нет, i : Integer; ...

Может тогда ответите на следующий вопрос:

Конкретно в этом проекте обращение PbyteArray[i] вызывает ошибку доступа к памяти. Обращение pbyte( Integer(PByteArray) + i )^ работает корректно. Из-за чего в первом случае вызывается ошибка?


 
ЮЮ ©   (2006-10-26 12:54) [10]

PByteArray, случаем не TByteDynArray?
Если так, то  Integer(PByteArray) + i вполне может оказаться в твоем адресном пространстве, но это вовсе не i-ый  элемент твоего массива. Надеюсь, ты не правишь данные таким способом?


 
DevilDevil ©   (2006-10-26 13:09) [11]

:)

type
  TByteArray = array[0..0] of byte;
  PByteArray = ^TByteArray;

var
  Line : PByteArray;
  i : intger;
begin
  Line := Bitmap8.ScanLine[0];

  for i := 0 to Bitmap8.Width - 1 do
  Line[i] := 0;
end;


<-- достаточно часто видел такое обращение. Один и тот же код работает корректно в других проектах и вызывает ошибку в моём. Почему?



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

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

Наверх




Память: 0.49 MB
Время: 0.042 c
2-1162125949
Проггер из библиотеки
2006-10-29 15:45
2006.11.12
TMemoryStream и расход памяти


15-1161522130
PHPDeveloper
2006-10-22 17:02
2006.11.12
Кто сколько часов спит в день


15-1161522452
Dmytro
2006-10-22 17:07
2006.11.12
Автозагрузка в Win2003


1-1159532237
Ангела
2006-09-29 16:17
2006.11.12
Проблема с реестром.


15-1161325548
КаПиБаРа
2006-10-20 10:25
2006.11.12
Влияют ли планеты на характер человека?