Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2008, 00:48   #1
Rigard
 
Регистрация: 20.07.2008
Сообщений: 5
По умолчанию Помогите найти ошибку (Delphi)

(урок из 'Библия Delphi' - 11.22 Простейший файловый менеджер)
при компиляции вылезает ошибка:
Access violation at address 00465650 in module 'Project1.exe'. Read of address FFFFFFFF.
вот сам проект (если он конечно нужен...)
Вложения
Тип файла: rar Prog04.rar (204.6 Кб, 14 просмотров)
...::: Читеры правят миром! :::...
Rigard вне форума Ответить с цитированием
Старый 23.07.2008, 01:45   #2
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Мне хватил 5 минут чтобы отыскать где она начинается и понять что её вызывает.... Учитесь пользоваться встроеным отладчиком...

Ошибка появляется на строке:

Код:
procedure TForm1.FormShow(Sender: TObject);
begin
addFile('C:/*.*',faAnyFile); // непрошло.
end;
Потом кидает на строку:

Код:
if Path[length(Path)] <> '\' then
С ошибкой:
[Warning] Unit1.pas(89): Symbol 'FindData' is specific to a platform

Но как потом выяснилось эта ошибка от другой строки:

Код:
with SearchRec.FindData do
Но на работу программы это ошибка вроде невлияет...

Копая дальше пришёл к выводу что ненравиться компилятору функция:
Код:
function SlashSep(Path, FName: string): string;
      begin
        if Path[length(Path)] <> '\' then // тут ошибка.
          result:= Path + '\' + FName
        else
          Result:= Path + FName;
      end;
Что конкретно ненравиться я оставляю разбираться Вам.....

Советую поставить на эту строку брекпоинт и проверить к какому индексу строки Path идёт обращение....
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 23.07.2008, 01:53   #3
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Карась все верно написал. А сама ошибка возникает оттого, что переменная "Path" = '';

В строке "if Path[length(Path)] <> '\' then" происходит обращение к еще невыделенной памяти ("Path").
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 23.07.2008, 01:56   #4
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Как вариант:
Код:
function SlashSep(Path, FName: string): string;
      begin
        if trim(Path) = '' then
        begin
          Result := '';
          Exit;
        end;        
        if Path[length(Path)] <> '\' then
          result:= Path + '\' + FName
        else
          Result:= Path + FName;
      end;
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 23.07.2008, 03:06   #5
Rigard
 
Регистрация: 20.07.2008
Сообщений: 5
По умолчанию

Большое вам "аригато" (тоесть спасибо), ошибка как выше сказано была в
Код:
# function SlashSep(Path, FName: string): string;  
       begin  
         if Path[length(Path)] <> '\' then // тут ошибка.  
         result:= Path + '\' + FName  
         else  
          Result:= Path + FName;  
      end;
помогло простое удаление с 03. по 06. строк(ну и саму функцию я поставил немного в другое место). и всё работает как надо.
...::: Читеры правят миром! :::...
Rigard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти ошибку Максим_Леонидович БД в Delphi 4 20.08.2008 23:23
Помогите найти ошибку ( с++ ) JOFRIF Помощь студентам 10 23.05.2008 14:34
Помогите найти ошибку JOFRIF Помощь студентам 8 22.04.2008 14:22
Помогите найти ошибку KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 1 11.04.2008 15:48
Помогите найти ошибку Рената Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2008 04:29