Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Pascal] Немогу найти ошибку в программе

3.3K
29 апреля 2007 года
Nethead
88 / / 24.11.2006
В программе не находится файл который создается!!!
Код:
Program Dyagterev;
uses Crt,Dos;
type Nalogoviyainspekciya=record    
Sname_firmi,Name_firmi:string[15];
vidsob:string[20];
viddeyat:string[20];
telephone:string[20];
faks:string[20];
adres:integer;
end;
var f:file of Nalogoviyainspekciya;
zn,filename:string;
k:integer;
label 11;
{-----------------------------------------------------------}
procedure Creatfile;    //создание файла
begin
writeln('ZADAITE IMIA FAILA KOTORIY BUDET SOZDAVATSYA');
readln(filename);   //запрашиваем имя файла
assign(f,filename);
rewrite(f);     //создаем файл
end;
{-----------------------------------------------------------}
procedure Addrecord;    //добавление записи в файл
var rez:integer; ch:char;
begin
while rez<>1 do     //пока не будет открыт файл или пользователь не введет N(или n) будет идти запрос на ввод имени файла для открытия
begin
writeln('ZADAITE IMIA FAILA, V KOTORIY BUDET DOBOVLIATSA ZAPIS');
readln(filename);   //запрос имени файла для открытия
assign(f,filename);
reset(f);       //пытаемся открыть
rez:=IOResult;      //результат открытия
if rez<>0 then      //если <>0 значит файл не открыт и идет запрос на повторение попытки ввести имя файла
begin
writeln('PROVERTE PRAVILNOST IMENI FAILA!');
writeln('BUDET LI POVTORNOE ZADANIE IMENI FAILA?(Y/N)');
readln(ch);     //запрашиваем ответ на вопрос
if (ch='n') or (ch='N') then halt (0);  //если n, то закрываем программу
end;
end;
seek(f,filesize(f));    //если файл был открыт,то перемещаемся в конец файла
end;
{==========================================================}
procedure Inputfile;    //добавление информации в файл
var st:Nalogoviyainspekciya;
k:char;
begin
repeat
writeln('VVEDITE DANIE O NOVOY FIRME : ');  //далее заполнение полей записи
write('NAZVANIE FIRMI : '); readln(st.Sname_firmi);
write('VID SOBSTVENNOSTI:' ); readln(st.vidsob);
write('VID DEYATELNOSTI:'); readln(st.viddeyat);
write('TELEPHONE:'); readln(st.telephone);
write('FAKS:'); readln(st.faks);
write('ADRES: '); readln(st.adres);
write(f,st);                    //запись данных в файл
write('NADO LI VVODIT DANNIE O NOVOY FIRME ? (Y/N)>');readln(k);//получение ответа на вопрос о продолжении записи в файл
writeln;
until(k='n') or (k='N');//если n(N) то выход из цикла для запроса данных и дальнейшей записи их в файл, если что-то другое то повтор действий
close(f);       //закрытие файла
end;
{=========================================================}
procedure redzap;       //редактирование информации содержащейся в файле
var
st:Nalogoviyainspekciya;
filename,str:string;
Sname_firmi2,Name_firmi2:string[15];    //помоему все описанные ниже переменные кроме x не нужны
vidsob2:string[20];
viddeyat2:string[20];
telephone2:string[20];
faks2:string[20];
adres2:integer;
x:integer;
begin
writeln('ZADAITE IMIA FAILA');
readln(filename);           //получаем имя файла для редактирования
assign(f,filename);
reset(f);               //открываем файл
with st do              //нафига, если потом все равно используешь st
begin
write('VVEDITE NAZVANIE FIRMI: ');readln(str);  //получаем имя фирмы, редактировать информацию о которой будем
x:=0;
while not eof(f) do         //организуем цикл чтения данных из файла пока есть что читать
begin
read(f,st);             //считываем из файла информацию
if st.Sname_firmi=str then      //проверяем относится ли считанная информация к названию введенной фирмы, если да, то
begin
writeln('VVEDITE DANIE O NOVOY FIRME : ');  //по новой вносим данные
write('NAZVANIE FIRMI : '); readln(st.Sname_firmi);
write('VID SOBSTVENNOSTI:' ); readln(st.vidsob);
write('VID DEYATELNOSTI:'); readln(st.viddeyat);
write('TELEPHONE:'); readln(st.telephone);
write('FAKS:'); readln(st.faks);
write('ADRES: '); readln(st.adres);
//начинается непонятно что и для чего
Sname_firmi2:=Sname_firmi; viddeyat2:=viddeyat;
vidsob2:=vidsob; telephone2:=telephone;
faks2:=faks; adres2:=adres;
//закончилось непонятно что и для чего:)
seek(f,filepos(f)-1);           //сдвигаемся на начало того что будем править
write(f,st); x:=1;          //пишем исправленную инфу в файл и устанавливаем факт того, что инфа о нужной фирме была найдена и исправлена
end; end;
close(f);               //закрываем файл
end;
if x=0 then begin writeln('Записи с такой фирмой нет!');readln end;// названия фирм
end;
{==============================================================}
procedure Openfile;         //открытие файла с проверкой открылся или нет и с проверкой на правильность указания имени файла
var rez:integer;ch:char;
begin
while rez<>0 do
begin
writeln('ZADAITE IMIA FAILA');
readln(filename);
assign(f,filename);
reset(f);
rez:=IOResult;
if rez<>1 then
begin
writeln('PROVERTE PRAVILNOST IMENI FAILA!');
writeln('BUDET LI POVTORNOE ZADANIE IMENI FAILA ? (Y/N)');
readln(ch);
if (ch='n') or (ch='N') then halt (0);
end;
end;
end;
{============================================================}
procedure Outputfile;           //вывод содержимого файла
var st:Nalogoviyainspekciya;k:char;
begin
writeln('HOTITE POSMOTRET DANNIE O FIRMAH? (Y/N)');
readln(k);
if (k='y') or (k='Y') then
while not eof(f) do         //организован цикл чтения из файла, пока не дошли до конца оного и вывод инфы
begin
read(f,st); clrscr;
writeln('NAZVANIE FIRMI :',st.Sname_firmi);
writeln('VID SOBSTVENNOSTI:',st.vidsob);
writeln('VID DEYATELNOSTI:',st.viddeyat);
writeln('TELEPHONE:',st.telephone);
writeln('FAKS:',st.faks);
writeln('ADRES:',st.adres);
 
writeln('DLYA PRODOLGENIA NAGMITE (enter)');
readln;
end;
close(f);               //закрытие файла
end;
{========================================================}
procedure Clearfile;            //процедура удаления инфы о той или иной фирме
    var st:Nalogoviyainspekciya;
studtoout:string[20];
     fo:file of Nalogoviyainspekciya;
begin
writeln('ZADAYTE IMIA FAILA IZ KOTOROGO UDALIUTSA ELEMENTI');
readln(filename);           //открываем файл для правки и темпфайл(создаем)
     assign(f,filename);reset(f);
assign(fo,'newfile.dat');rewrite(fo);
writeln('Задайте название фирмы, запись о которой удаляется');
readln(studtoout);
while not eof(f) do         //в цикле переносим всю инфу в темпфайл кроме инфы удаляемой фирмы
begin
read(f,st);
if st.Sname_firmi<>studtoout then write(fo,st);
end;
close(f);close(fo);
erase(f);               //удаляем старый файл
rename(fo,filename);            //переименовываем темпфайл в наш, который был удален
end;
{ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ}
Begin 11:clrscr;            //здесь вывод меню и предоставление выбора пользователю
writeln(' MENU:');
writeln('1: SOZDAT FILE');
writeln('2: DOBAVLENIE ZAPISI V FAIL');
writeln('3:KORREKTIROVKA ZAPISI');
writeln('4:PROSMOTR FAILA');
writeln('5:UDALENIE ZAPISI IS FAILA');
writeln('6:VIHOD IZ PROGRAMMI');
readln(k);
case k of 1: begin Creatfile; Inputfile end;
2: begin Addrecord; Inputfile end;
3: redzap;
4: begin Openfile; Outputfile end;
5: Clearfile;
6: Halt;
else writeln('OSHIBKA POVTORITE NOMER REGIMA.')
end;
goto 11;                //после выполнения некоторых действий предоставляется возможность вернуться к меню.
End.
26K
29 апреля 2007 года
ilua_great
5 / / 19.04.2007
Цитата:

program read_r;
uses crt;
var filename:string;
f:text;
t:string;
begin
readln(filename);
assign(f,filename);
reset(f);
readln(f,t);
writeln(t);
readln;
close(f);
end.


Это простейшая прога чтения файлов. Наверно у тя в указании имени файла надо расширение указать!(file.txt)например!

3.3K
30 апреля 2007 года
Nethead
88 / / 24.11.2006
Цитата: ilua_great
Это простейшая прога чтения файлов. Наверно у тя в указании имени файла надо расширение указать!(file.txt)например!



серавно файл не находит, ошибка где то

19K
30 апреля 2007 года
Malice
33 / / 13.03.2007
Вопрос: файл создаёться ли вообще на жестком диске? Если да, то где? Не пробовал ли ты использовать вместо имени полный путь к папке и файлу?
3.3K
30 апреля 2007 года
Nethead
88 / / 24.11.2006
Цитата: Malice
Вопрос: файл создаёться ли вообще на жестком диске? Если да, то где? Не пробовал ли ты использовать вместо имени полный путь к папке и файлу?



Да файл создается, там тупость какая то с этим...поиском

3.3K
30 апреля 2007 года
Nethead
88 / / 24.11.2006
[COLOR="Blue"]Непосильным трудом была исправлена ошибка и впрограмме!!Ура!!
Берите товарищи студенты, очень полезная прога и курсовая по паскалю.[/COLOR]

Код:
Program Dyagterev;
uses Crt,Dos;
  type Nalogoviyainspekciya=record
           Sname_firmi,Name_firmi:string[15];
           vidsob:string[20];
           viddeyat:string[20];
           telephone:string[20];
           faks:string[20];
           adres:integer;
end;
var      f:file of Nalogoviyainspekciya;
       zn,filename:string;
                 k:integer;
  label 11;
  {-----------------------------------------------------------}
  procedure Creatfile;
    begin
      writeln('ZADAITE IMIA FAILA KOTORIY BUDET SOZDAVATSYA');
      readln(filename);
      assign(f,filename);
      rewrite(f);
    end;
  {-----------------------------------------------------------}
  procedure Addrecord;
  var rez:integer; ch:char;
  begin
   while rez<>1 do
    begin
      writeln('ZADAITE IMIA FAILA, V KOTORIY BUDET DOBOVLIATSA ZAPIS');
      readln(filename);
      assign(f,filename);
      reset(f);
            rez:=IOResult;
            if rez<>0 then
               begin
                 writeln('PROVERTE PRAVILNOST IMENI FAILA!');
                 writeln('BUDET LI POVTORNOE ZADANIE IMENI FAILA?(Y/N)');
                 readln(ch);
                 if (ch='n') or (ch='N') then halt (0);
               end;
          end;
      seek(f,filesize(f));
    end;
   {==========================================================}
 procedure Inputfile;
     var st:Nalogoviyainspekciya;
         k:char;
     begin
      repeat
         writeln('VVEDITE DANIE O NOVOY FIRME : ');
         write('NAZVANIE FIRMI : ');                readln(st.Sname_firmi);
         write('VID SOBSTVENNOSTI:' );                     readln(st.vidsob);
         write('VID DEYATELNOSTI:');                     readln(st.viddeyat);
         write('TELEPHONE:');                    readln(st.telephone);
         write('FAKS:');                        readln(st.faks);
         write('ADRES: ');                   readln(st.adres);
         write(f,st);
          write('NADO LI VVODIT DANNIE O NOVOY FIRME ? (Y/N)>');readln(k);
          writeln;
      until(k='n') or (k='N');
     close(f);
   end;
    {=========================================================}
    procedure redzap;
var
         st:Nalogoviyainspekciya;
       filename,str:string;
       Sname_firmi2,Name_firmi2:string[15];
           vidsob2:string[20];
           viddeyat2:string[20];
           telephone2:string[20];
           faks2:string[20];
           adres2:integer;
                  x:integer;
begin
    writeln('ZADAITE IMIA FAILA');
    readln(filename);
    assign(f,filename);
    reset(f);
      with st do
       begin write('VVEDITE NAZVANIE FIRMI: ');readln(str);
       x:=0;
       while not eof(f) do
         begin
           read(f,st);
           if st.Sname_firmi=str then
             begin
         writeln('VVEDITE DANIE O NOVOY FIRME : ');
         write('NAZVANIE FIRMI : ');                readln(st.Sname_firmi);
         write('VID SOBSTVENNOSTI:' );                     readln(st.vidsob);
         write('VID DEYATELNOSTI:');                     readln(st.viddeyat);
         write('TELEPHONE:');                    readln(st.telephone);
         write('FAKS:');                        readln(st.faks);
         write('ADRES: ');                   readln(st.adres);
               Sname_firmi2:=Sname_firmi;      viddeyat2:=viddeyat;
               vidsob2:=vidsob;        telephone2:=telephone;
               faks2:=faks;            adres2:=adres;

         seek(f,filepos(f)-1);
         write(f,st); x:=1;
       end; end;
       close(f);
    end;
   if x=0 then  begin writeln('zapisi s takoy firmoy net!');readln end;
end;
  {==============================================================}
   function Openfile: Boolean;
var
  rez: integer;
  ch: char;

begin
Openfile:=False;
repeat
  writeln('ZADAITE IMIA FAILA');
  readln(filename);
  assign(f,filename);
  reset(f);
  rez:=IOResult;
  if rez<>0 then
  begin
    writeln('PROVERTE PRAVILNOST IMENI FAILA!');
    writeln('BUDET LI POVTORNOE ZADANIE IMENI FAILA ? (Y/N)');
    readln(ch);
    if UpCase(ch)='N' then halt (0);
  end
  else
    Openfile:=True;
until (rez=0) or (UpCase(ch)='N');
end;
     {============================================================}
     procedure Outputfile;
       var st:Nalogoviyainspekciya;k:char;
       begin
         writeln('HOTITE POSMOTRET DANNIE O FIRMAH? (Y/N)');
         readln(k);
          if (k='y') or (k='Y') then
            while not eof(f) do
              begin
                read(f,st); clrscr;
         writeln('NAZVANIE FIRMI :',st.Sname_firmi);
         writeln('VID SOBSTVENNOSTI:',st.vidsob);
         writeln('VID DEYATELNOSTI:',st.viddeyat);
         writeln('TELEPHONE:',st.telephone);
         writeln('FAKS:',st.faks);
         writeln('ADRES:',st.adres);

         writeln('DLYA PRODOLGENIA NAGMITE (enter)');
         readln;
              end;
           close(f);
       end;
       {========================================================}
       procedure Clearfile;
    var st:Nalogoviyainspekciya;
            studtoout:string[20];
        fo:file of Nalogoviyainspekciya;
        begin
             writeln('ZADAYTE IMIA FAILA IZ KOTOROGO UDALIUTSA ELEMENTI');
             readln(filename);
         assign(f,filename);reset(f);
             assign(fo,'newfile.dat');rewrite(fo);
             writeln('Zadayte nazvanie firmi zapis kotoroy udalietsa');
             readln(studtoout);
              while not eof(f) do
               begin
                read(f,st);
                if st.Sname_firmi<>studtoout then write(fo,st);
               end;
              close(f);close(fo);
              erase(f);
              rename(fo,filename);
         end;
       {ОСНОВНАЯ ЧАСТЬ ПРОГРАММЫ}
     Begin  11:clrscr;
        writeln('     MENU:');
        writeln('1:SOZDAT FILE');
        writeln('2:DOBAVLENIE ZAPISI V FAIL');
        writeln('3:KORREKTIROVKA ZAPISI');
        writeln('4:PROSMOTR FAILA');
        writeln('5:UDALENIE ZAPISI IS FAILA');
        writeln('6:VIHOD IZ PROGRAMMI');
        readln(k);
         case k of
  1: begin Creatfile; Inputfile end;
  2: begin Addrecord; Inputfile end;
  3: redzap;
  4: if Openfile then Outputfile;
  5: Clearfile;
  6: Halt;
else
  writeln('OSHIBKA POVTORITE NOMER REGIMA.')
end; goto 11;
End.
18K
01 мая 2007 года
Chort@ka
22 / / 08.04.2007
А ты попробуй прописать еще reset(fo). У меня тож такое было, а все через то что етого не написал.
3.3K
01 мая 2007 года
Nethead
88 / / 24.11.2006
Цитата: Chort@ka
А ты попробуй прописать еще reset(fo). У меня тож такое было, а все через то что етого не написал.



где именно???И что это???:confused:

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог