Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c