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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 15:34   #1
Андрос
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 45
Печаль Типизированный, нетипизированный, текстовый файл

Всем доброго времени суток. Рассказываю задание. Вот как
звучит - работа с файлами (типизированными,нетипизированными, текстовыми).
Программа должна создавать типизированные, нетипизированные, текстовые файлы,
обеспечить их просмотр, корректировку, поиск, удаление информации по данным об
асортименте обуви в магазине (артикул, наименование, количество, стоимость).
Я попытался сделать создание,корректировку, и просмотр, но не совсем
получилось( пишет ошибку, можете подсказать в чем я ошибся? Еще нужна помощь с
поиском его нужно сделать по каждому полю.
В программе нужно сделать самое примитивное и простое меню....про меню - горизонтальное и там 3 пункта типизированный нетипизированный текстовый файл Подпункты у них будут общие создание просмотр. А для типизированного еще корректировка, поиск , удаление... Подскажите, как правильно сделать(
С ув. Андрей
паскаль borland paskal 7.0
Вложения
Тип файла: txt WWF.txt (1.7 Кб, 139 просмотров)
Андрос вне форума Ответить с цитированием
Старый 07.11.2012, 16:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, что в вашем понимании "не типизированный" файл?
Привидите пример такого файла, пожалуйста!

во-вторых, а зачем Вам дополнительный файл fd2?
можно писать записи прямо в исходный файл, дополнительный файл совсем не обязателен.

во-третьих, на форуме неоднократно выкладывались различные примеры меню (разных стилей и уровня сложности), Вы поиском не пробовали пользоваться?
Да и нужно ли Вам сложное меню?!
Допустим, если я Вам помогу сделать меню, "как настоящее", не испугает ли Вас сложность реализации? И, кстати, раз уж речь зашла о меню, может воспользоваться готовыми библиотеками (тот же TurboProffesional)? Или TurboVision?

ну, остальные вопросы пока замнём, оставим их на потом...


Добавлено
"причесал" и довёл Ваш исходник до минимально рабочего состояния:
Код:
program f;
uses CRT;

type
  tov = record
    artik: string[20];
    naim: string[20];
    kol: integer;
    stoim: integer;
  end;

const
  fdFileName = 'd:\user\sp.dat';
  fdFileNameTmp = 'd:\user\sp_tmp.dat';

var
  pod: char;
  fd: file of tov;
  fd2: file of tov;
  dan: tov;
begin
  clrscr;

  Assign(fd, fdFileName );
  Rewrite(fd);

  repeat
  Writeln('Vvedite infy o obyvi');
  writeln('artikyl ');
  readln(dan.artik);

  writeln('Naimenovanie  ');
  readln(dan.naim);

  writeln('Kolichectvo');
  readln(dan.kol);

  writeln('Stoimost ');
  readln(dan.stoim);

  Write(fd, dan);
  writeln('Vvodim esche informaciy  d-da \ n-net');
  readln(pod);
  until (pod <> 'd');
  Close(fd);

  Assign(fd, fdFileName);
  reset(fd);
  Assign(fd2, fdFileNameTmp);
  Rewrite(fd2);

  while (not eof(fd)) do
  begin
    read(fd, dan);
    writeln('Artikyl:', dan.artik);
    Writeln('Verno? d - da  n - net');
    readln(pod);
    if pod = 'n' then begin writeln('Vvedi new artikyl: ');
      readln(dan.artik);
    end;

    writeln('Naimenovanie:', dan.naim);
    Writeln('Verno? d - da  n - net');
    readln(pod);
    if pod = 'n' then begin writeln('Vvedi new naim: ');
      readln(dan.naim);
    end;

    writeln('kolichestvo:', dan.artik);
    Writeln('Verno? d - da  n - net');
    readln(pod);
    if pod = 'n' then begin writeln('Vvedi new Kolichestvo: ');
      readln(dan.kol);
    end;

    writeln('Stoimost:', dan.stoim);
    Writeln('Verno? d - da  n - net');
    readln(pod);
    if pod = 'n' then begin writeln('Vvedi new Stoimost: ');
      readln(dan.stoim);
    end;

    write(fd2,dan);

  end;
  Close(fd);
  Close(fd2);
  erase(fd);
  rename(fd2, fdFileName);

  writeln('Vivod dannih:  ');
  assign(fd, fdFileName);
  reset(fd);

  while (not eof(fd)) do
  begin
    read(fd, dan);
    writeln('Artikyl:', dan.artik);
    writeln('Naimenovanie:', dan.naim);
    writeln('Kolichestvo:', dan.kol);
    writeln('Stoimost:', dan.stoim);
  end;
  close(fd);
  Readln
end.

Последний раз редактировалось Serge_Bliznykov; 07.11.2012 в 16:19.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.11.2012, 17:21   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
во-первых, что в вашем понимании "не типизированный" файл?
Привидите пример такого файла, пожалуйста!
Notepad.exe
eval вне форума Ответить с цитированием
Старый 07.11.2012, 18:38   #4
Андрос
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 45
По умолчанию

Большое спасибо за то что откликнулись, и так по вопросам:
Цитата:
1 "во-первых, что в вашем понимании "не типизированный" файл?
Привидите пример такого файла, пожалуйста!"
Как сказал препод нетипизированный файл просто хранит набот информации разных типов т.е. как бы разбросана информация на диске не упорядоченно. Для этой проги с нетипизированный файлом нужно сделать создание и просмотр.

Цитата:
2 . "во-вторых, а зачем Вам дополнительный файл fd2?
можно писать записи прямо в исходный файл, дополнительный файл совсем не обязателен."
Просто я делал как знаю, 100 процентов уверенности небыло никакой, если Вы считаете что так будет целесообразнее и подойдет к программе - то давайте делать так. Просто небыло идей никаких по этому поводу

3 Про меню - нужно самое элементарное, чтоб пользователю типу ориентироваться в программе - сложное не нужно... про меню нашел http://programmersforum.ru/showthread.php?t=77178
http://www.cyberforum.ru/turbo-pascal/thread93820.html
Только вот пока не знаю как привязаться к этому всему
Про меню еще вопрос - 3 пункта меня - типизированный нетипизир. текстовый файлы
В пункте меню типизированный подпункты - создать ,просмотреть, поиск (нужно сделать по артиклю, наименованию,стоимости и по количеству), корректировка, удаление. Подпункты пункта нетипизированные - создать, просмотр, подпункты меню текстовые - создать просмотр. Препод сказал можно отдельно сделать пункт меню "файл, а там открыть/сохранить". Тока я с этим никак вообще не понял. Не знаю как привязать к поставленной задаче.

4 небольшая поправка в строке writeln('kolichestvo:', dan.artik); -там надо writeln('kolichestvo:', dan.kol);

5 про меню - использовать стандартное не варинт, препод против(

6 про нетипизированный фалл препод говорил про процедуры чтото тип используй BlockWrite и блокреад немножко нашел инфы, вроде что то похоже,да? http://dinaf.ru/?page_id=2570

Подводя итоги:
1) я так понял у нас есть создание, корректировка, просмотр записей
2) Нужно реализовать поиск по: артиклю, наименованию,количеству,стоимости
Пытаюсь сделать, но пока не получается - хотел вставить код перед выводом информации, переменную seeknaim объявил после конст в варе

Код:
 assign(fd,fdfilename);
 write('POISK po naimenovaniy: ');
  readln(seeknaim);
  reset(fd);
   while (not eof(fd)) do
   begin
   read(fd,dan);
   if dan.naim=seeknaim then writeln(dan.artik,'  ',dan.naim,' ', dan.kol, ' ' , dan.stoim);
   Close(fd);
   end;
Но, вероятно я что то не так делаю( Подскажите,где...

3) Нужно сделать удаление записи. А как? т.е это мы сначало ищем запись, а потом удаляем, или как это все реализовывать??

4) Вопрос с меню актуален

5) Все перечисленное как я понимаю это работа с типизированным файлом, а нужно еще нетипизированный и текстовый...

Нашел немного про нетипизированный файл, может кто подскажет/поможет к моей задаче как приспособить...
Необходимо записать и потом прочитать нетипизированный файл
типа данных
Код:
Ttest = record
N1 : string;
n2 : integer;
end;
записываю в файл
Код:
var FName : string;
DFile : file;
asize : integer;
test : Ttest;
begin 
test.N1 := 'Строка'; test.N2 := 10;
assignFile(DFile,FName);
Rewrite(DFile);
asize := sizeOf(test);
//записываю длину данных
BlockWrite(DFile,asize,sizeof(asize ));
//сами данные
BlockWrite(DFile,test,sizeof(test)) ;
CloseFile(DFile);

читаю из файла
Код:
var FName : string;
DFile : file;
asize : integer;
test : Ttest;
begin
fName := fmMain.OpenD.FileName;
assignFile(DFile,FName);
Reset(DFile);
//читаю сколько данных лежит
BlockRead(DFile,asize,4);
//читаю сами данные
Blockread(DFile,test,asize);
CloseFile(DFile);
end
Подскажите как, что лучше сделать(

From Stilet: Почему код спецтегом не выделяем? Горчичник захотел?!

Последний раз редактировалось Stilet; 09.11.2012 в 12:20.
Андрос вне форума Ответить с цитированием
Старый 08.11.2012, 23:21   #5
Андрос
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 45
По умолчанию

Уважаемые форумчане, помогите кто чем может...Я знаю тут много знающий и понимающих людей, пожалуйста помогите с решение задачи.
Андрос вне форума Ответить с цитированием
Старый 08.11.2012, 23:57   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Кстати, а вы уверены, что Вам решение нужно в TurboPascal ?!
Просто в современных ЯП (например, Delphi) присутствуют библиотеки (модули), реализующий меню (см. TMenu )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2012, 07:00   #7
Андрос
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 45
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Кстати, а вы уверены, что Вам решение нужно в TurboPascal ?!
Просто в современных ЯП (например, Delphi) присутствуют библиотеки (модули), реализующий меню (см. TMenu )
Да, среда разработки Borland Pascal 7.0

Вот архив, там файл, и файл программы .пас
Программа компилируется, но вот поиск не хочет работать( Где я ошибся? и как придумать учет регистра и пробелов в начале и конце?
Вложения
Тип файла: rar user.rar (934 байт, 8 просмотров)

Последний раз редактировалось Stilet; 10.11.2012 в 19:01.
Андрос вне форума Ответить с цитированием
Старый 11.11.2012, 00:19   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте такую программку:
UW1.rar
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.11.2012, 16:13   #9
Андрос
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 45
По умолчанию error in statment

Вот код немножко переделанной програмки, пытался сделать через выбор поик, но что то напутал, подскажите где ошибся, пишет еррор ин статмент, просто я хочу когда в программе выбираешь типизированный файл, далее выбираем поиск, а там когда нажимаем, выскакивают критерии поиска, по артиклю, наименованию,цене,стоимости...
Вложения
Тип файла: txt MEN.txt (6.3 Кб, 125 просмотров)
Андрос вне форума Ответить с цитированием
Старый 11.11.2012, 17:46   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, не компилируется из нарушения структуры.

я убрал лишнее, чтобы было нагляднее:
Код:
5: {poisk;}
begin

repeat
Writeln('_________________________ ');
writeln('POISK po artikly - 1 ');
writeln('POISK po naimenovaniy - 2 ');
writeln('POISK po kolichestvy - 3 ');
writeln('POISK po Stoimosti - 4  ');
repeat
  readln(cr);
until cr in [1, 2, 3];

case    cr of
  ,,,,
end; {case1}

 end;       {case2}
где закрытие цикла по repeat (я его красным выделил) ?!

я бы поправил, но не пойму, для чего Вам цикл внутри поиска... соответственно, непоятно, до чего делать until

во-вторых, КРАЙНЕ настоятельно рекомендую Вам форматировать код ОТСТУПАМИ.
Это резко позволяет увеличить наглядность и читаемость кода, отследить закрытие/незакрытые операторы цикла, операторные скобки (begin.. end) и т.п.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Матрица NxN -> текстовый файл -> Матрица NxN - найти max по диагоналям -> типизированный файл Лунатик13 Помощь студентам 1 20.02.2012 15:54
Нетипизированный файл Bizunov Помощь студентам 4 15.05.2011 15:29
Текстовый и типизированный файл Пушистик Паскаль, Turbo Pascal, PascalABC.NET 0 15.04.2009 20:19
нетипизированный файл amandra Общие вопросы Delphi 6 07.10.2008 07:44
Нетипизированный файл OrdJONY Общие вопросы Delphi 10 03.10.2007 18:39