Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.043 c
2-1160136967
lorn
2006-10-06 16:16
2006.10.22
DBGrid->Columns


2-1159765679
Officeman
2006-10-02 09:07
2006.10.22
требуется програмно закрыть окно, имя окна хранится в переменной


2-1160026286
Alex_C
2006-10-05 09:31
2006.10.22
Вопрос по SysEdit


1-1157644726
i-am-vladko
2006-09-07 19:58
2006.10.22
Как получить инфо о property, об`явленом НЕ published?


2-1160383341
aht
2006-10-09 12:42
2006.10.22
Access+ADO





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский