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

Вниз

Ошибка   Найти похожие ветки 

 
lobach ©   (2006-10-05 13:27) [0]

Еще вопросик, что означает ошибка:
"Access violation at address 004522EC in module "Project1.exe". Read of address FFFFFFFD"


 
@!!ex ©   (2006-10-05 13:29) [1]

Это значит что ты залез в неинициализированную область памяти при выполнении "Project1.exe".

P.S.
С английским совсем туго?


 
Kolan ©   (2006-10-05 13:29) [2]

Достаточно было перевести: Нарушение доступа к памяти. Те ты залез тода куда низя.

Обычно это случается при не верном обрашении к памяти, работе с массивами итд..


 
oxffff ©   (2006-10-05 13:31) [3]

Это означает, что у тебя ошибка по адресу 004522EC, инструкция пыталась прочитать по адресу FFFFFFFD.
Понятно?


 
@!!ex ©   (2006-10-05 13:32) [4]

oxffff ©   (05.10.06 13:31) [3]

Жжош. :)


 
oxffff ©   (2006-10-05 13:33) [5]


> @!!ex ©   (05.10.06 13:29) [1]
> Это значит что ты залез в неинициализированную область памяти
> при выполнении "Project1.exe".
>
> P.S.
> С английским совсем туго?


А что есть инициализированные области?


 
pavel_guzhanov ©   (2006-10-05 13:37) [6]


> А что есть инициализированные области?

ну например, ты объявил массив а:array[1..10] of Integer, а пытаешься в программе обратиться к a[12]. Тогда у тебя выйдет такая ошибка...


 
@!!ex ©   (2006-10-05 13:38) [7]


> oxffff ©   (05.10.06 13:33) [5]

Да, конечно. :)
Согласен, не корректно написал с точки зрения резервирования памяти в ОС.
Но ИМХо так ему понятнее будет.
Не объяснять же, что есть память отвденная для нужд ОС(куда он собственно и сунулся) и что есть память выделенная для собственно данных.

P.S.
Инициализированная область памяти - это та область памяти, которая была зарезервирована программой, например, функцией GetMem. :)


 
@!!ex ©   (2006-10-05 13:40) [8]


> ну например, ты объявил массив а:array[1..10] of Integer,
>  а пытаешься в программе обратиться к a[12]. Тогда у тебя
> выйдет такая ошибка...

Не факт.


 
Kolan ©   (2006-10-05 13:40) [9]

Для устранения подобных ошибок. Используют "детекторы утечек". Для D7 я пользовался MemProof.


 
clickmaker ©   (2006-10-05 13:42) [10]

Для устранения подобных ошибок лучше использовать
for i := 0 to High(a)


 
Kolan ©   (2006-10-05 13:45) [11]

А причём тут массив? Или Telepator сработал :)


 
MsGuns ©   (2006-10-05 14:18) [12]

>clickmaker ©   (05.10.06 13:42) [10]
>Для устранения подобных ошибок лучше использовать
>for i := 0 to High(a)

for i := Low(a) to High(a)


 
lobach ©   (2006-10-05 18:37) [13]

Вобщем у меня процедура:

procedure TForm1.FindFile(Dir: string);
var
ext:String;
SR: TSearchRec;
FindRes: Integer;
begin
ext:= SR.Name[Length(SR.Name)-2]+SR.Name[Length(SR.Name)-1]+SR.Name[Length(SR.Name)];
FindRes := FindFirst(Dir + "*.*", faAnyFile, SR);
while FindRes = 0 do
begin
if ((SR.Attr and faDirectory) = faDirectory) and
((SR.Name = ".") or (SR.Name = "..")) then
begin
FindRes := FindNext(SR);
Continue;
end;
if ((SR.Attr and faDirectory) = faDirectory) then
begin
FindFile(Dir + SR.Name + "\\");
FindRes := FindNext(SR);
Continue;
end;
if ext="exe" then begin
ListBox1.Items.Add(SR.Name);
end;
FindRes := FindNext(SR);
end;
FindClose(SR);
end;


Выделяет строку:

ext:= SR.Name[Length(SR.Name)-2]+SR.Name[Length(SR.Name)-1]+SR.Name[Length(SR.Name)];

Помогите


 
Palladin ©   (2006-10-05 18:41) [14]

ты вообще читаешь что тебе пишут? или чукча не читатель, чукча писатель?


 
ProgRAMmer Dimonych   (2006-10-05 18:41) [15]

Длина SR.Name<2?


 
lobach ©   (2006-10-05 18:47) [16]


> Длина SR.Name<2?

Да не должно... Но щас проверю
> ты вообще читаешь что тебе пишут? или чукча не читатель,
>  чукча писатель?

Куда я ваш цикл запихну, он у меня на сложении глючит...


 
Ketmar ©   (2006-10-05 20:23) [17]

>[14] Palladin(c) 5-Oct-2006, 18:41
>ты вообще читаешь что тебе пишут? или чукча не
>читатель, чукча писатель?
не читает из принципа, судя по всему. за метлой, однозначно.


 
DrPass ©   (2006-10-05 22:10) [18]


> Куда я ваш цикл запихну, он у меня на сложении глючит...

Дык, надо не просто читать, а еще и думать при этом :)
Вот, например, ответь на такой вопрос:
ext:= SR.Name[Length(SR.Name)-2]+SR.Name[Length(SR.Name)-1]+SR.Name[Length(SR.Name)];
Это ты типа расширение так получить собрался, да? (нет, нет, это еще не вопрос!) А как ты думаешь, что будет находиться в строке Name (и какая будет ее длина) в тот момент, когда выполняется эта строчка кода? Это уже вопрос.


 
oxffff ©   (2006-10-05 22:26) [19]


> @!!ex ©   (05.10.06 13:38) [7]
>
> > oxffff ©   (05.10.06 13:33) [5]
>
> Да, конечно. :)
> Согласен, не корректно написал с точки зрения резервирования
> памяти в ОС.
> Но ИМХо так ему понятнее будет.
> Не объяснять же, что есть память отвденная для нужд ОС(куда
> он собственно и сунулся) и что есть память выделенная для
> собственно данных.
>
> P.S.
> Инициализированная область памяти - это та область памяти,
>  которая была зарезервирована программой, например, функцией
> GetMem. :)


Во первых FFFFFFFD виртуальный адрес, который свыше 2GB.
Виртульаные адреса свыше 2GB (3GB при включенной опции) не поступны из RING 3.

Так что здесь возникнет исключение нарушение прав доступа. А не промах страницы.

Так что здесь это не неинициализированая область памяти.
А системная область вируальных адресов явно близко к 4Gb


 
Ketmar ©   (2006-10-05 22:34) [20]

>[18] DrPass(c) 5-Oct-2006, 22:10
>Дык, надо не просто читать, а еще и думать при
>этом :)
судя по всему, неко на это не сопсобно...


 
lobach ©   (2006-10-06 05:09) [21]

Дошло, мать вашу!!!! :)

if Length(SR.Name) > 3 then begin
ext:= SR.Name[Length(SR.Name)-2] + SR.Name[Length(SR.Name)-1] + SR.Name[Length(SR.Name)];
end;


 
Percent   (2006-10-06 05:16) [22]

ext:= SR.Name[Length(SR.Name)-2] + SR.Name[Length(SR.Name)-1] + SR.Name[Length(SR.Name)];

А у меня файл называется "Картинка.jpeg".
И еще много файлов вообще без расширения.
Что делать будем?


 
Наиль ©   (2006-10-06 08:41) [23]

Дополнение к [22]
FindFirst(Dir + "*.*", faAnyFile, SR) может вернуть файл с названием "." (точка) какое значение должно пренять ext.


> Дошло, мать вашу!!!! :)

Ничего до тебя не дошло. Пока ты не ответишь на [18], работать не будет.


 
Desdechado ©   (2006-10-06 11:34) [24]

function ExtractFileExt(const FileName: string): string;


 
Ketmar ©   (2006-10-06 12:54) [25]

>[21] lobach(c) 6-Oct-2006, 05:09
не дошло. за метлой, за метлой...



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

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

Наверх




Память: 0.53 MB
Время: 0.082 c
3-1156499038
Вероника 125
2006-08-25 13:43
2006.10.22
Установка BDE без инсталяции Delphi


2-1160388362
SamProf
2006-10-09 14:06
2006.10.22
Как сделать запрос IdHTTP.Get(<url>) методом POST в 10 Indy?


15-1159634328
Kolan
2006-09-30 20:38
2006.10.22
В тему про обучение ерунде :)


4-1148422772
LiveSoft
2006-05-24 02:19
2006.10.22
Обратботка своего пункта меню


2-1160032808
АлексЧерных
2006-10-05 11:20
2006.10.22
Нужна помощь!!!