Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Запись (Record)

Автор: Tan 16.03.2007 23:10

Написал процедурку, которая из файла переписывает в файл чётные записи, спецификация :

type STR = strin[40];
type MyRec= record
field1 : STR;
field2 : STR;
end;
type Myfiletype = file of MyRec;


Проблема в том, что на экран и файл ничего не выводиться, может кто заметит что и как? Файл с которого считываем точно содержит записи. Выручайте!

procedure Pair  ( var fff : MyFiletype; var NewFile : MyFiletype  ;var Fileopen: boolean);
var
i : integer;
NewFileName : String;
rec : MyRec;
begin
if (FileOpen=False) then
begin
WriteLntext(' Файл не открыт ; Действие нельзя выполнить');
exit;
end;
writeln ('Введите название файда в который пишем чётные записи ');
readln (NewFileName);
i:=-1;
{I-}
assign (NewFile,NewFileName + '.txt');
reset (fff);
rewrite (NewFile);
{$I+}
If IOResult = 0 then writeln ('файл ',NewFileName, ' успешно создан');
seek (fff,i);
while (eof(fff) <> True) do
begin
inc (i);
read (fff,rec);
if i mod 2 = 0 then
begin
write (NewFile,rec);
writeln (rec.field1[i],' ',rec.field2[i]);
end;
end;
seek(fff,0);
{$I-}
close (fff);
close (NewFile);
{$I+}
end;

Автор: volvo 16.03.2007 23:17

Цитата
   seek (fff,i);
При i = -1 ??? Убери это, тогда должно заработать...

Автор: Tan 16.03.2007 23:47

Очень странно, вроде всё перебробывал, что-то выводит и даже в нужном количестве (сужу по пробелам). Но, что мне не видно.

Автор: volvo 17.03.2007 0:02

Цитата
Но, что мне не видно.
То есть? Пробелы тебе видно, а остальное - нет? Вопросы что-ли отображаются?

Автор: Tan 17.03.2007 0:13

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

Автор: volvo 17.03.2007 0:16

Запакуй исходник своей программы и файл данных, и прикрепи архив сюда, тогда можно будет сказать что-то, не прибегая к гаданиям ...

Автор: Tan 17.03.2007 0:26

всё понял

Автор: volvo 17.03.2007 0:35

Ну, и где файл с данными? Почему надо обязательно делать двойную работу? У меня сейчас созданный мной файл отработает, я скажу что все в порядке, а у тебя по-прежнему работать не будет...

Поэтому пока ты не присоединишь свой файл, я ничего больше не буду говорить...

Автор: Tan 17.03.2007 0:39

програма сама создаёт и заполняет, погляди =) Только введи название; то есть нет смысла скидывать файл.

Автор: Tan 17.03.2007 1:39

Всё, решил проблему, в процедуре я выводил поля записи как элементы массива, которого нет, просто убрал [i] и всё выдаёт.