Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблемы с reset(f); File not Found


Автор: Stalker Ghost 13.10.2007, 20:31
При обработке reset(f) появляется ошибка File not Found. Почему? Может кто нибудь объяснить?

Код

procedure renewlist;
var SearchRec:TSearchRec;
         fale:textfile;
            s: string;
            i:integer;
            
begin
 
 If FindFirst(Road+'*.cgaccount', faAnyFile, SearchRec)=0 then
   repeat
     //s:=ExpandFileName(SearchRec.name);
     Data.FileNme.Add(ExpandFileName(SearchRec.name));
   until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);

  if Data.FileNme.Count<0 then exit;

  for i:= 0 to Data.FileNme.Count-1 do
  begin
     s:=Data.FileNme[i];
     assignfile(fale,s);
     Reset(fale);
     readln (fale,s);
     Data.Name.Add(s);
     readln (fale,s); Data.SurName.Add(s);
     readln (fale,s);Data.Email.Add(s);
     readln (fale,s);Data.Nick.Add(s);
     readln (fale,s);Data.Password.Add(s);
     readln (fale,s);Data.Telefon.Add(s);
     closefile(fale);
    MainFrm.ListBox1.Items.Add(Data.Name[i]+Data.SurName[i]);
  end;
end;


Не работает ни при *.*, ни при  *.txt. Имя файла и путь находит правильно, через watch point смотрел. Data - record of TStrings (там их пару Name, Surname).

Задача заключается в том чтобы найти в папке *.cgaccount файлы, считать с каждого Name, Surname и т.д., сохранить в списках и добавить в ЛистБокс Name+Surname

Пример *.cgaccount файла
Код

Name
surname
[email protected]
Vasia
asdfgjjj
777777777

Автор: Alexeis 13.10.2007, 21:17
Stalker Ghost, скорее всего файла действительно нет по указанному пути, либо старый паскалевский доступ не способен переварить заданный путь (Не уверен что assignfile правильно работает с сетевыми файлами).

Автор: Stalker Ghost 13.10.2007, 21:43
а что тогда делать?

Добавлено через 3 минуты и 49 секунд
а что тогда делать?

Автор: Alexeis 13.10.2007, 22:06
Посмотреть в под дебагом что в переменной с путем находиться перед тем как происходит ошибка. И проверить есть ли что-то по указанному пути.

Автор: Stalker Ghost 14.10.2007, 10:00
Уже смотрел до того как постить и путь правильный. Даже пробовал перенести всё на 'C:\', но так тоже  даёт ошибку.

Автор: Alix 14.10.2007, 11:11
есть вероятность что потому, что в SearchRec.name сохраняется только имя файла без пути, попробуйте так:
Код

assignfile(fale, Road + s);

Автор: Stalker Ghost 14.10.2007, 11:37
Alix 
Код

ExpandFileName(SearchRec.name)
 это тоже, но проще

Автор: Alix 14.10.2007, 11:42
давай так, вот ты assign'ишь файл
assignfile(fale,s);
что в переменной s? (ну напиши ее содержимое)
 

Автор: Alexeis 14.10.2007, 11:47
ExpandFileName - добавляет к пути к файлу текущую директорию!

Чтобы оно работало правильно в данном случае нужно сделать так
Код

procedure TForm1.FormCreate(Sender: TObject);
var
  f : TextFile;
  s, Road : AnsiString;
  SearchRec : TSearchRec;
begin
   Road := 'C:\Documents and Settings\Админ\Рабочий стол\';
   SetCurrentDir(Road);
   If FindFirst(Road+'*.cgaccount', faAnyFile, SearchRec)=0 then
   repeat
     ListBox1.Items.Add(ExpandFileName(SearchRec.name));
   until FindNext(SearchRec) <> 0;
  FindClose(SearchRec);

  AssignFile(f, ListBox1.Items[0]);
  reset(f);
  ReadLn(f, s);
  CloseFile(f);
end;


Т.е. установить текущую директорию в SetCurrentDir(Road);

Добавлено @ 11:48
Road := 'C:\Documents and Settings\Админ\Рабочий стол\'; - тут у меня файлы с расширением "*.cgaccount"

Автор: Stalker Ghost 14.10.2007, 12:10
Мне не хватало SetCurrentDir(Road); Спасибо большое Alexeis и Alix

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