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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 23:33   #1
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию TP7 чтение из файла, работает но не работает!?

Здравствуйте коллеги. Вот такая странная штука, мне нужно для одной программы создать процедуру чтения данных из текстового файла. Весь день ломил голову над этим, дело в том, что всё прекрасно работает, но НЕ в моей программе. После того как мозг начал кипеть, нашёл в интернете образцы, опять же работает вне моей программы прекрасно.

Вот код процедуры:

Код:
Var UserFile : Text;
    FileName, TFile :String;
Begin
 Writeln('Enter the file name '+
        +'(with its full path) of the text file:');
 readln(FileName);
 {A .txt file will be assigned to a text variable}
 Assign(UserFile, FileName + '.txt'); 
 Reset(UserFile); {'Reset(x)' - means open the file x}
 Repeat
  Readln(UserFile,TFile);
if TFile = '1' then
	grid[x,y]:=1
else
	grid[x,y]:=0;
 Until Eof(UserFile);
 Close(UserFile);
 Readln;
End.
Естественно
Код:
if TFile = '1' then
	grid[x,y]:=1
else
	grid[x,y]:=0;
Не имеет логического смысла. Для простоты сократил...
Так вот, если это запустить как отдельную программу, то ошибок не будет. Если это запустить как процедуру в моей программе то вылетает ошибка: Error 2: File not found.
Интересно то, что она вылетает до того как мне предлогают ввести название файла. Т.е. readln(FileName); как бы пропускается.

Был бы в паскале был нормальный отладчик как в VC++ возможно я бы смог отследить странность, но тут пригодится Ваша помощь)


#Edit:
grid[x,y] и x,y обьявлены вне процедуры:
x, y :byte;
grid: Array[1..x_size,1..y_size] of byte;
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.

Последний раз редактировалось Qousio; 31.05.2009 в 23:36.
Qousio вне форума Ответить с цитированием
Старый 31.05.2009, 23:42   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Ну во первых
Код:
 Writeln('Enter the file name ' ++'(with its full path) of the text file:');
с одним плюсом!
Код:
 Writeln('Enter the file name '+'(with its full path) of the text file:');
Во вторых UserFile : Text; прога же к файлу обращаеться, значит UserFile : TextFile;

Последний раз редактировалось uberchel; 31.05.2009 в 23:48.
uberchel вне форума Ответить с цитированием
Старый 31.05.2009, 23:43   #3
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ошибка говорит о том, что файл не найден.
А что с процедурой не получается, передавайте просто ей имя файла на диске и все.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 01.06.2009, 10:18   #4
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
Ошибка говорит о том, что файл не найден.
А что с процедурой не получается, передавайте просто ей имя файла на диске и все.
Во первых, из сообщение еррор и так понятно, что файл не найден. Как он может быть найден если строка readln(FileName); пропускается?
Т.е. когда процедура инициализируеться сразу выскакивает ошибка и мне не дают вписать имя файла. Во вторых, я не могу сразу передать ей имя файла, т.к. там будут несколько файлов, который юзер сам создает.

Цитата:
Сообщение от uberchel Посмотреть сообщение
Ну во первых
Код:
 Writeln('Enter the file name ' ++'(with its full path) of the text file:');
с одним плюсом!
Код:
 Writeln('Enter the file name '+'(with its full path) of the text file:');
Во вторых UserFile : Text; прога же к файлу обращаеться, значит UserFile : TextFile;
Вы наверное не поняли суть вопроса, код который я выложил чуть выше прекрасно работает если его скопилировать как отдельную программу. Как только я этот сам код помещаю в мою программу как процедуру, он не работает. Во вторых нету типа данных TextFile и никогда небыло....
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Qousio вне форума Ответить с цитированием
Старый 01.06.2009, 11:20   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Как только я этот сам код помещаю в мою программу как процедуру, он не работает.
Показывай как.
Цитата:
Repeat
Readln(UserFile,TFile);
Если файл пустой может заругаться. Луче так:
Код:
While not Eof(userFile) do begin
  Readln(UserFile,TFile);
...
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2009, 11:22   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Цитата:
Как только я этот сам код помещаю в мою программу как процедуру, он не работает.
Ну не знаю как ты его помещаешь в процедуру, но у меня все работает.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 01.06.2009, 12:21   #7
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию

Такс, я немного поэксперементировал. Мне кажется, что в моей программе переполняется буффер и его надо очистить... в ТП7 есть аналог команды FlushAll_ ?
Вот несколько странностей которые я наблюдал. Команда read(); перестает работать вообще, т.е. например read(a); вообще не инициализируется. Также команда readln; не приостанавливает программу... В чём может быть проблема? Единственный модуль который я использую это crt.

Саммое странное, что во всех программах которые я писал всегда всё прекрасно работало, а тут такая штука....
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Qousio вне форума Ответить с цитированием
Старый 02.06.2009, 09:37   #8
Qousio
Пользователь
 
Аватар для Qousio
 
Регистрация: 02.05.2009
Сообщений: 27
По умолчанию

Поднимаю тему... А то уползла на 3 страницы вниз
Чем более читаете, не размышляя, тем более, уверяетесь, что много знаете, а чем более размышляете, читая, тем яснее видите, что знаете еще очень мало.
Qousio вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
Не работает TP -HunteR- Паскаль, Turbo Pascal, PascalABC.NET 2 11.02.2009 19:16
Не работает отправка файла через сокет SARGE Работа с сетью в Delphi 0 29.01.2009 13:29
Почему не работает тег align=right?valign работает а align нет! aviv HTML и CSS 5 21.01.2009 17:46
Проблема с UserForm. То работает, то НЕ работает Maxx Microsoft Office Excel 6 19.11.2008 14:51