Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Непонятная ошибка 
V
    Опции темы
Zorak
Дата 10.8.2011, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Доброго времени суток. Проблема заключается в следующем. При выполнении программы показывается непонятная ошибка.
Сама ошибка и кусок кода + некоторые данные из дебага видны на картинке, прикрепленной к данной теме. 

З.Ы. Во время загрузки файла сам файл существует и путь указан правильно... в данном случае папка "apple" лежит в той же директории где и ексешка. а путь выглядит так: "apple\1.txt". Вот его то мне и надо загрузить в StringList.
На момент загрузки файла переменная NumF тоже равна 1.

З.Ы.Ы. Если нужны какето еще данные говорите, все дам все отпишу.

Спасибо!

Это сообщение отредактировал(а) Zorak - 10.8.2011, 19:19

Присоединённый файл ( Кол-во скачиваний: 32 )
Присоединённый файл  1.JPG 125,85 Kb


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
drkot
Дата 10.8.2011, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: нет
Всего: 8



Судя по ошибке программа не может получить доступ к файлу.
и если предположить что он действительно существует по указанному пути, то значит он открыт другой программой или права доступа не достаточны

ЗЫЖ указывай полный путь, так надежнее.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Данкинг
Дата 10.8.2011, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А в Dir2 что? Похоже, что действительно с путём к файлу глюк.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
bems
Дата 10.8.2011, 20:43 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(drkot @  10.8.2011,  19:27 Найти цитируемый пост)
Судя по ошибке программа не может получить доступ к файлу.
Нет, речь именно о нарушении доступа к памяти.
Создан ли str?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
Fhusy
Дата 10.8.2011, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 16.11.2006

Репутация: нет
Всего: нет



а если без цикла попробовать, напрямую указать путь к файлу то что происходит?
PM MAIL   Вверх
Zorak
Дата 11.8.2011, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Цитата(Данкинг)
А в Dir2 что? Похоже, что действительно с путём к файлу глюк.

в Dir2 хранится назва папки,  которую сейчас надо обращатся.

Цитата(bems)
Нет, речь именно о нарушении доступа к памяти.
Создан ли str?


Вот ответ:
Код

var
  Form4: TForm4;
  str, str1, str2 :TStringList;
.......
  str.Free;
  str1.Free;
  str2.Free;


    
Цитата(Fhusy)
а если без цикла попробовать, напрямую указать путь к файлу то что происходит?

Если напрямую то тоже происходит ошибка. НО!!!... у меня имеется 42 папки, в которых есть много .txt файлов. По циклу открывается по порядку каждая папка и обрабатывается каждый из этих файлов. Так вот, ошибка возникает на второй по счету папке. В тело цикла я вписал строчку:
Код

      str.LoadFromFile('apple\1.txt');

apple - это вторая папка (первая - acer). в первой папке 11 файлов а во второй 1 файл. Так вот. Если обращатся напрямую и прямо в теле цикла то пока обрабатыается первый каталог, а это 11 файлов, то файл из второй папки 11 раз загружается вполне успешно. Вне цикла тоже загружается успешно если напрямую.

З.Ы. Dir2 изменился на вторую папку успешно, NumF равно единице, как и должно быть (Дебаг) 

Вот код полного цикла.
Код


  For NumDir := 0 to DirNum do
  begin
    number := 0;
    memo1.Clear;
    dir2 := Directory[NumDir];
    FindRes:=FindFirst(Dir2+'\*.txt',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
      memo1.Lines.Add(SR.Name);//+'  ||  '+Dir2+'  ||  '+IntToStr(SR.Size)+'Bite');
      number := number + 1;

      if Application.Terminated then Break;
      Application.ProcessMessages;
      FindRes:=FindNext(SR); 
    end; // while FindRes
    FindClose(SR); 


    for numF := 1 to number do
    begin
      str.LoadFromFile('apple\1.txt');                                               | Это я добавил для проверки. ДО изменения Dir2 все работает нормально
      str.LoadFromFile(Dir2 + '\' + IntToStr(numf) + '.txt');               | Сдесь возникает ошибка после изменения Dir2
      str2.Text := memo2.Text;
      r:=tRegExpr.Create;
      for k:=0 to str2.Count-1 do
      begin
        r.Expression:=str2.Strings[k];
        str.Text:=r.Replace(str.Text,'',true);
        Application.ProcessMessages;
      end; // for k :=
      r.Free;
      str.SaveToFile(Dir2 + '\' + IntToStr(numF) + '.txt');
      str.LoadFromFile(Dir2 + '\' + IntToStr(numf) + '.txt');

      for k:=0 to str.Count-1 do
      begin
        str1.Add(trim(str.Strings[k]));
        Gauge2.Progress := Round(100*k/str.Count);
        Application.ProcessMessages;
      end; // for k :=

      str1.SaveToFile(Dir2 + '\' + IntToStr(numF) + '.txt');
      str1.Clear;
      str.LoadFromFile(Dir2 + '\' + IntToStr(numf ) + '.txt');

      for k:=0 to str.Count-1 do
      begin
        if str.Strings[k] <> '' then str1.Add(trim(str.Strings[k]));
        Gauge2.Progress := Round(100*k/str.Count);
        Application.ProcessMessages;
      end;  // for k :=

      str1.SaveToFile(Dir2 + '\' + IntToStr(numF) + '.txt');
      Gauge1.Progress := Round(100*NumF/Number);

    end; // for Numf :=
    str.Free;
    str1.Free;
    str2.Free;
    Gauge3.Progress := Round(100*NumDir/DirNum);
  end; // for DirCount :=


Это сообщение отредактировал(а) Zorak - 11.8.2011, 15:30


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
ama_kid
Дата 11.8.2011, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 9
Всего: 95



Цитата(Zorak @  11.8.2011,  16:29 Найти цитируемый пост)
Вот ответ
Это не ответ. 
Покажи место, где написано str:=TStringList.Create();
Потому что вот в конце этого цикла:
Код
For NumDir := 0 to DirNum do
  begin
   ...
   ...
   ...
    str.Free;
    str1.Free;
    str2.Free;
    Gauge3.Progress := Round(100*NumDir/DirNum);
  end; // for DirCount :=

у тебя уничтожаются объекты str, str1,str2 и не создаются заново.


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
Данкинг
Дата 11.8.2011, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(ama_kid @  11.8.2011,  17:09 Найти цитируемый пост)
у тебя уничтожаются объекты str, str1,str2 и не создаются заново. 

Не то что заново: я вообще создания не увидел в коде.

Добавлено @ 17:13
Цитата(Zorak @  11.8.2011,  16:29 Найти цитируемый пост)
в Dir2 хранится назва папки,  которую сейчас надо обращатся.

Вообще я спрашивал о значении переменной dir2. Ну да ладно.

Это сообщение отредактировал(а) Данкинг - 11.8.2011, 17:13


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Zorak
Дата 11.8.2011, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Цитата(ama_kid @ 11.8.2011,  16:09)
Цитата(Zorak @  11.8.2011,  16:29 Найти цитируемый пост)
Вот ответ
Это не ответ. 
Покажи место, где написано str:=TStringList.Create();

Ай действительно.. Проблема решена).. Создаю стринги вне цикла вначале процедури буттонКлик, а закрываю в самом цикле -=)). Банально)
Спасибо большое). Еще три дня сиделбы)

З.Ы. Кидаю плюсик. 
З.Ы.Ы. Есть еще одна проблема, которую очень хотелосьбы решить. Вот!
Спасибо


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.