![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
klem4 |
![]()
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Нужно написать небольшую тему, типа вот этого : http://forum.pascalnet.ru/forum/index.php?showtopic=3845
C записью в массив все отлично! а вот с файлом проблемма, мы не изучали еще, вот даже на простом примере не получается, файл создается, но он пустой!, покажите на этом примере в чем ошибка : Код uses crt; type person=record name : string; end; var p : person; file_p : file of person; Begin clrscr; assign(file_p,'file_p.dat'); rewrite(file_p); with p do begin writeln('name='); readln(p.name); close(file_p); end; readln; end. Спасибо. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
klem4
Ты описал файл как Код file_p: file of person; и даже не пытаешься в него ничего записать... Вот так:Код uses crt; type person= record name : string; end; var p : person; file_p : file of person; Begin clrscr; assign(file_p,'file_p.dat'); rewrite(file_p); writeln('name='); readln(p.name); write(file_p, p) close(file_p); readln; end. P.S. А что, в ФАКе нет материалов по работе с файлами? Я же выкладывал... Файлы Сообщение отредактировано: volvo - 11.11.2010 14:24 |
klem4 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Спасибо, Volvo.
Цитата P.S. А что, в ФАКе нет материалов по работе с файлами? Я же выкладывал... FAQ: Файлы Не нашел я этого, плохо искал ![]() Щас почитаю. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
С записью разобрался, теперь проблемы со чтением
![]() FAQ читал, просмотрел множество задач, но ничего не получается ![]() процедура output работает, но не верно, выдает какую-то ерунду, Допустим ввожу 1) vasa ... 2) dima ... 3) peta ... А выдает 1) vasa 2) vasa 3) dima 4) dima 5) peta не могу понять как это все долно быть устроено :fire: Заранее спасибо. Код program DataBase; uses crt; const n=30; type STUD=record NAME1 : string; {Имя} NAME2 : string; {Фамилия} NAME3 : string; {Отчество} DOB : string; {Дата рождения} HT : string; {Домашний телефон} MT : string; {Мобильный телефон} EMail : string; {E-mail адрес} ICQ : string; {Номер ICQ} end; var s : stud; i,all : byte; studs : array[1..n] of stud; EndRec : boolean; file_s : file of stud; {-------------------------------------------------} procedure search; var nfind:byte; lastname:string; SearchPoint:boolean; Begin clrscr; writeln('Введите Фамилию для поиска :'); readln(lastname); SearchPoint:=false; i:=1; nfind:=0; while (i<=all)and(not(SearchPoint)) do begin s:=studs[i]; with s do if name2=lastname then begin nfind:=i; SearchPoint:=True; end; inc(i); end; writeln('nfind=',nfind); end; {-------------------------------------------------} procedure output; Begin assign(file_s,'Data.dat'); reset(file_s); i:=1; while (not(eof(file_s))) do begin read(file_s,s); with s do begin writeln(i,'-й студент :'); write('ФИО : ');writeln(name2,' ',name1,' ',name3); write('Дата рождения :');writeln(dob); write('Домашний телефон :');writeln(ht); write('Мобилный телефон :');writeln(mt); write('ICQ : ');writeln(icq); write('E-mail : ');writeln(email); writeln; inc(i); end; end; end; {-------------------------------------------------} procedure if_next; var ch:char; Begin writeln('Будете вводить еще студента [Y/N] ?'); repeat ch:=readkey; until (ch in ['Y','y','N','n']); clrscr; if ch in ['Y','y'] then begin write(file_s,s); inc(i); inc(all); EndRec:=true; end else begin close(file_s); exit; end; end; {--------------------------------------------------} Begin clrscr; output; {assign(file_s,'Data.dat'); rewrite(file_s); i:=1; all:=1; EndRec:=true; while (i<=n)and(EndRec) do with s do begin writeln('Введите информацию для ',i,'-го студента'); write('Введите Имя : ');readln(name1); write('Введите Фамилию : ');readln(name2); write('Введите оочество :');readln(name3); writeln('Введите дату рождения'); readln(DOB); writeln('Введите номер домашнего телефона'); readln(HT); writeln('Введите номер мобильного телефона'); readln(MT); writeln('Введите E-mail адрес'); readln(EMail); writeln('Введите номер ICQ'); readln(ICQ); studs[i]:=s; write(file_s,s); EndRec:=false; if_next; end;} End. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
klem4
У меня глюки, или я прав? Смотри, что происходит... В основной программе: Код while (i<=n)and(EndRec) do with s do begin ... studs[i]:=s; write(file_s,s); { Я вот об этом } ... end; Но в то же время: Код procedure if_next; var ch:char; Begin ... if ch in ['Y','y'] then begin write(file_s,s); { Еще раз ??? } ... end ... end; Значит откуда-нибудь вызов Write(file_s, s) надо убрать. :yes: P.S. А почему Код repeat ch:=readkey; until (ch in ['Y','y','N','n']); а не так: Код repeat ;)ch:=upcase(readkey); until (ch in ['Y','N']); |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата У меня глюки, или я прав? Смотри, что происходит... В основной программе: Не может быть! она заработала!!! это я видимо когда эксперементировал, забыл, write в разных местах ставил и забыл убрать ![]() Цитата P.S. А почему Код repeat ch:=readkey; until (ch in ['Y','y','N','n']); а не так: Код repeat ch:=upcase(readkey); until (ch in ['Y','N']); Потомучто upcase(readkey) мне до этого момента было неизвестно ![]() Спасибо, Volvo. А я уж и не знал что и подумать.. а все из-за невнимательности... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 9:41 |