Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Подскажите где тут ошибка?


Автор: pomogite 24.2.2014, 19:30
Подскажите почему вылетает ошибка EAccessViolation в программе?

Вот код:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
var i:integer;
    n:word;
    tmp,main,s:string;
    tim:TDate;
begin
tim:=time;
  try
    memo1.Lines.Text:=idhttp1.Get(Edit1.Text) ; sleep(2000);
         for i:=0 to Memo1.Lines.Count -1 do
            begin
            s:=Memo1.Lines[i];
            if pos(Edit3.Text,s)<>0 then
              begin
                 s:=copy(s,pos(Edit3.Text,s)+length(Edit3.Text),
                 length(s)-pos(Edit3.Text,s)-length(Edit3.Text)-length(Edit4.Text)+1);
                 memo2.Lines.Add(s+' '+ TimeToStr(now));
                 Series1.AddXY(tim, strtoint(s));
                 idhttp1.Free;
                 memo1.clear;
                 exit;
              end;
            end;
  except
    memo2.Lines.Add('Site connection error') ;
    memo1.clear;
    idhttp1.Free;
  end;

end;


Ошибка:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 0047B547 in module 'Project1.exe'. Write of address 01CDC000'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help   
---------------------------


Автор: kami 24.2.2014, 20:05
Цитата(pomogite @  24.2.2014,  19:30 Найти цитируемый пост)
idhttp1.Free;

Ошибка здесь. Особенно - если сей компонент лежит на форме.

Добавлено через 8 минут и 8 секунд
1.Обычно исповедуется такой принцип: кто создал, тот и удаляет.
   Ваш код создавал idhttp1? Если нет - то почему ваш код удаляет этот компонент?
2. Таймер вызывается многократно, многократно производятся попытки удаления. А кто будет многократно создавать?

Резюмируя - ошибка логики приложения.

Автор: pomogite 24.2.2014, 22:45
Даже если закомментировать эту строчку, та же ошибка.

Автор: kami 25.2.2014, 10:11
Цитата(pomogite @  24.2.2014,  22:45 Найти цитируемый пост)
Даже если закомментировать эту строчку, 

Закомментировать где?
"этих строчек" в приведенном коде две.

И потом - а что говорит дебаггер? На какой строке вываливается ошибка?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)