Форум «Всё о Паскале» _ Задачи _ работа с файлами и записями
Автор: Negor 27.10.2006 3:52
Народ, дело такое:есть массив записей Sessija типа TSessija. И у него есть пускай пять полей. Так вот вопрос такой: как сделать так чтобы можно было этот массив записей записать в файл одной программой, а считывать данные и работать с ними в другой? И ещё, я выбрал для переменной файла тип File of TSessija, это правильно или не очень? Вобщем надеюсь на вашу поддержку.... буду благодарен за теорию подкреплённую участками кода
Автор: мисс_граффити 27.10.2006 4:00
не совсем поняла, в чем проблема с
Цитата
как сделать так чтобы можно было этот массив записей записать в файл одной программой, а считывать данные и работать с ними в другой?
. Оно само так получается... Записываешь и закрываешь файл, а потом из новой открываешь. Или тебе нужно, чтобы это программы работали одновременно?
Цитата
И ещё, я выбрал для переменной файла тип File of TSessija, это правильно или не очень?
Вполне логичный выбор. Я бы тоже так поступила.
Автор: Negor 27.10.2006 4:23
Т. е. если я правильно понял, то после того как файл будет создан, и данные внесены, то при запросе можно будет написать чтонитьь типа Readln(log_f,Sessija.index) или как?
Автор: volvo 27.10.2006 4:30
Цитата
при запросе можно будет написать чтонитьь типа Readln(log_f,Sessija.index) или как?
Не совсем... Придется переместиться на нужную позицию в файле, и только потом читать:
Seek(f, index); Read(f, Sessia[index]); { <--- именно Read, потому что ReadLn выдаст ошибку... }
Автор: мисс_граффити 27.10.2006 4:31
опоздала
Автор: Гость 28.10.2006 2:24
Итак на данный момент есть след. код
Код
program zad_1; uses crt; type TSessija=record index:byte; familija:string; ekzamen:array[1..5] of byte; zachet:array [1..5] of char; end;
var sessija:array[1..25] of TSessija; Log_f:file of TSessija; i,j:byte; begin clrscr; assign(log_f,'sessija.dat'); rewrite(log_f); for i:=1 to 25 do with sessija[i] do begin write('----zapis #',i,'-----'); write('Vvedite index gruppi-');readln(index); write('Vvedite familiju studenta-');readln(familija); for j:=1 to 5 do begin write('Vvedite otsenku po ',j,'-omu za4etu ');readln(ekzamen[j]); write('Vvedite rezultat ',j,'-go za4eta [Z/N] ');readln(zachet[j]); end; end; for i:=1 to 25 do writeln(log_f,sessija[i]); end.
Сдесь пока только запись значений в файл. Но имено при записи в файл выдаётся ошибка, что файл-инвалид
Автор: volvo 28.10.2006 2:28
Цитата
Но имено при записи в файл выдаётся ошибка, что файл-инвалид
Я ж написал, что ...Ln не использовать... Попробуй
write(log_f,sessija[i]);
Автор: Гость 28.10.2006 2:46
Цитата(volvo @ 27.10.2006 22:28)
Я ж написал, что ...Ln не использовать... Попробуй
write(log_f,sessija[i]);
сПАСИбО, помогло! Volvo, ТЫ святой!!!
Автор: Гость 29.10.2006 11:17
Написание программы подходит к своему логическому завершению...))) Осталось только организовать вывод информации на принтер. В справке я нашёл модуль Printer, и подключил его. Но после запуска вылетела ошибка что переменная Lst не открыта для вывода, хотя в справке написано что никакой инициализации для переменной не требуется.... Need help
Автор: klem4 29.10.2006 13:31
Что-то очень странно, покажи свой код ...
ps Lst инициализируется в испольняемой части модуля, ничего больше делать с ней не надо ...
Unit Printer; Interface Var Lst: Text; Implementation Begin Assign(Lst, 'LPT1'); <----- Rewrite(Lst); END.
uses Printer; begin Writeln(Lst, 'Hello, Printer !'); end.
Автор: мисс_граффити 29.10.2006 13:41
а принтер вообще есть? физически... и куда он подключен?
Автор: Гость 30.10.2006 5:01
Цитата(мисс_граффити @ 29.10.2006 9:41)
а принтер вообще есть? физически... и куда он подключен?
Пробовал на старом принтере СМ(какоето число) ещё советский принтер переделанный, но не получилось. Подкл. к LPT1... Тока шо в одной книге (неважно какой но учебник по Паскалю серьёзный это я вам точно говорю) вобщем там было сказано чтото типа
Цитата
Для распечатки некоего текста в Паскале, нужно присвоить строку в переменную, и эту переменную записать в "prn". Пример:
Код
var a:string; ... a:="Text"; writeln(a,'prn');<--Типа распечатать
Вобщем кажется бред, а может я что-то не так понял или запомнил, но может кто-нить что-нить подскажет. C принтером шото не клеится никак....