14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
1

Как указать путь к файлу в функции assignfile

08.11.2012, 19:04. Показов 8702. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Как указать путь к файлу в функции assignfile и почему на строчках
Delphi
1
2
3
4
5
  readln(st);
  assignfile(t1,st);
  assignfile(t2,'highway.txt');
  reset(t1);
  rewrite(t2);
программа пишет 'File not found', хотя оба файла лежат в той же папке, что и exe-шник. Или же он ищет эти файлы в другом месте? И как вообще программно узнать папку, из которой выполняется программа? В общем, помогите советами, кто сможет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2012, 19:04
Ответы с готовыми решениями:

Как указать путь к файлу?
У меня есть проект UniversityRankings.Data и обязательно, чтобы файлs находились именно в самом...

Как указать путь к файлу
Всем привет! Как в Паскале написать правильно путь к текстовому файлу? Извините за флуд если что.

Как указать путь к файлу?
Привет, подскажите пожалуйста, как мне лучше сделать? у меня есть программа, которая меняет текст...

Как указать путь к файлу
Как в Си указать путь к файлу? И как указать чтоб записи были в конце файла, не сразу после...

22
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
08.11.2012, 20:38 2
Delphi
1
s:=ExtractFilePath(Application.ExeName); //Это путь в папку программы без последнего слэша
Если просто указано имя файла - должна искать в папке программы.
Скорее всего ошибку выдаёт на строке:
Delphi
1
  reset(t1);
Когда пытается открыть файл для чтения. Есть там файл, имя которого стоит в st ?
1
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
08.11.2012, 21:03 3
Да что вы паритесь. Чтобы небыло ошибок пишите это:
Delphi
1
2
3
//бла-бла-бла
AssignFile(t1, ExtractFilePath(Application.ExeName) + 'highway.txt');
//бла-бла-бла
1
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
09.11.2012, 23:28  [ТС] 4
Переписал так:
Delphi
1
2
3
4
5
  st:=Edit1.Text;
  AssignFile(t1, ExtractFilePath(Application.ExeName) + st);
  AssignFile(t2, ExtractFilePath(Application.ExeName) + 'highway.txt');
  reset(t1);   //здесь вылетает
  rewrite(t2);
На школьных компах все работало, дома та же проблема -- 'File not found'.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
09.11.2012, 23:37 5
Ошибка тебе сразу говорит, что файл не найден. Так положи свой файл в папку с exe этой программы.
0
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 00:14  [ТС] 6
Я так с самого начала делал
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
10.11.2012, 00:31 7
Попробуй:
Delphi
1
AssignFile(t2, ExtractFilePath(Application.ExeName) + '\highway.txt');
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.11.2012, 00:51 8
Цитата Сообщение от Rolion Посмотреть сообщение
Я так с самого начала делал
Значит в переменной st записано не то, что надо.
Цитата Сообщение от gorfil Посмотреть сообщение
AssignFile(t2, ExtractFilePath(Application.ExeName) + '\highway.txt');
Здесь в строке '\highway.txt' ведущий слеш не нужен. ExtractFilePath(Application.ExeName) возвращает путь со слешем в конце.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
10.11.2012, 01:23 9
Цитата Сообщение от Mawrat Посмотреть сообщение
Здесь в строке '\highway.txt' ведущий слеш не нужен. ExtractFilePath(Application.ExeName) возвращает путь со слешем в конце.
Я обычно ставлю и все работает.
Хотя и без слеша работает (счас проверил).
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.11.2012, 01:28 10
Возможно в каких-то других ситуациях нужно было ставить ведущий слеш. Но что касается ExtractFilePath() - эта функция удаляет в конце строки часть, которая идёт до первого справа слеша. А сам этот слеш оставляет.
2
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 17:39  [ТС] 11
Цитата Сообщение от Mawrat Посмотреть сообщение
Значит в переменной st записано не то, что надо.
Я дебажил и смотрел, что там. Там то, что надо (имя файла.расширение)

Цитата Сообщение от Mawrat Посмотреть сообщение
Здесь в строке '\highway.txt' ведущий слеш не нужен. ExtractFilePath(Application.ExeName) возвращает путь со слешем в конце.
Пробовал и так, и так. Та же ошибка.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.11.2012, 17:58 12
Rolion, я уже писал:
Цитата Сообщение от Mawrat Посмотреть сообщение
Значит в переменной st записано не то, что надо.
Что касается файла highway.txt - нет никакой разницы существует он или нет - всё равно он создаётся заново через вызов Rewrite(). А вот файл, путь к которому определяется с помощью переменной st, обязательно должен существовать. Потому что он открывается через вызов Reset(). Вот и надо проверить - что же такое записано в st? В st явно записано что-то неправильное. Поэтому файл и не находится.
---
Точку останова можно поставить на сроке
Delphi
1
AssignFile(t1, ExtractFilePath(Application.ExeName) + st);
и посмотреть, какое содержимое имеет переменная st.
0
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 19:09  [ТС] 13
Уже делал так. Имя файла -- way.txt. Именно это и лежит в st.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.11.2012, 19:23 14
О... я что-то не обратил внимание. Смотри:
Delphi
1
2
3
4
5
6
7
8
  //Вот здесь конечно будет ошибка! Файл-то ещё не открыт. Да и имя у него
  //должно быть составлено исходя из пути к папке с программой. - Это всё делается ниже.
  readln(st);
  
  assignfile(t1,st);
  assignfile(t2,'highway.txt');
  reset(t1);
  rewrite(t2);
0
3944 / 1869 / 337
Регистрация: 16.03.2012
Сообщений: 3,880
10.11.2012, 19:37 15
Mawrat: Да это он в консоли вводит имя файла с клавиатуры, похоже.
0
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 19:49  [ТС] 16
Цитата Сообщение от Rolion Посмотреть сообщение
На школьных компах все работало, дома та же проблема -- 'File not found'.
Нет, уже не в консоли.
0
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.11.2012, 19:51 17
Цитата Сообщение от Одиночка Посмотреть сообщение
Mawrat: Да это он в консоли вводит имя файла с клавиатуры, похоже.
Точно.
Rolion, в общем я сейчас проект приложу с примером.
1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
10.11.2012, 20:00 18
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот пример.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
procedure TForm1.Button1Click(Sender: TObject);
var
  t1, t2 : TextFile;
  S, st : String;
begin
  St := ExtractFilePath(ParamStr(0)) + 'way.txt';
  AssignFile(t1, st);
  AssignFile(t2, ExtractFilePath(ParamStr(0)) + 'highway.txt');
  reset(t1);
  rewrite(t2);
  while not Eof(t1) do begin
    Read(t1, S);
    Write(t2, S);
    if Eoln(t1) and not Eof(t1) then begin
      Readln(t1);
      Writeln(t2);
    end;
  end;
  CloseFile(t1);
  CloseFile(t2);
end;
Вложения
Тип файла: rar Project.rar (160.3 Кб, 14 просмотров)
0
14 / 14 / 8
Регистрация: 04.01.2011
Сообщений: 195
10.11.2012, 20:51  [ТС] 19
Ааааааааааа!!!!! Опять ни фига не работает! Все перепробовал! В конце недели отчёт! Помогите! Писал уже по всякому. Думал, он путь не может прописать нормально, но и там всё в порядке. Вроде простейшая часть, но ни в какую.
0
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
10.11.2012, 20:54 20
Программу выложи.
0
10.11.2012, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2012, 20:54
Помогаю со студенческими работами здесь

Как указать путь к файлу?
После опубликации проекта. при запуске приложения просит базу данных в...

Как указать относительный путь к файлу
Здравствуйте! Создала приложение windows forms, в форме у меня показываются картинки, в...

Как указать путь к файлу на сервере?
Корневая папка сервера -Папка сайта -public_html -Папка с файлами ...

Как корректно указать путь к файлу?
Не зная имя пользователя копирую файл из одной папки в другую так: Copy-Item -Path...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru