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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2012, 18:38   #1
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию Посимвольное считывание Pascalabc.net

Подскажите пожалуйста. Имеются 2 символьных файла f1 и f2. Мне необходимо переписать в файл f посимвольно из файлов f1 и f2 (один символ из файла f1, один символ из файла f2). Все это событие должно происходить по нажатию кнопки, после чего содержимое f выводится в listbox. Компиляция прошла без ошибок. Запускается также без ошибок. Вот в чем но, при нажатии на кнопку(переписать посимвольно) в listbox записывается немного не то, что надо и происходит ошибка "Ошибка времени выполнения: Чтение после конца потока невозможно.". Ругается на read(f2,c1);
Код:
uses FormsABC;
var
  f,f1,f2:file of char;
  opf1,opf2:openFileDialog;
  bopen1,bopen2,bpvf:button;
  l1,l2,l3:listbox;
  c,c1:char;
  
procedure main; Forward;

//Открываем f1
procedure OpenFile1;
begin
  opf1:=new OpenFileDialog();
  if opf1.ShowDialog()=DialogResult.OK then
    begin
      reset(f1);
      while not EOF(f1) do
        begin
          read(f1,c);
          l1.Items.Add(c);
        end;
       Close(f1);
    end;
end;

//Открываем f2
procedure OpenFile2;
begin
  opf2:=new OpenFileDialog();
  if opf2.ShowDialog()=DialogResult.OK then
    begin
      reset(f2);
      while not EOF(f2) do
        begin
          read(f2,c);
          l2.Items.Add(c);
        end;
       Close(f2);
    end;
end;

//Посимвольно в f из f1 и f2
procedure Posvfile;
var
  i,j:integer;
begin
  Rewrite(f);
  Reset(f1);
  Reset(f2);
  for i:=1 to FileSize(f1) do
    begin
      Read(f1,c);
      seek(f1,i);
      write(f,c);
      l3.Items.Add(c);
      for j:=1 to FileSize(f2) do
        begin
          read(f2,c1); //вот на этой строке происходит ошибка
          seek(f2,j);
          write(f,c1);
          l3.Items.Add(c1);
        end;
    end;
    Close(f1);
    Close(f);
end;
  
procedure main;
begin
  bopen1:=new Button('Открыть файл 1');
  l1:=new ListBox();
  LineBreak;
  bopen2:=new Button('Открыть файл 2');
  l2:=new ListBox();
  assign(f,'f.txt');
  assign(f1,'f1.txt');
  assign(f2,'f2.txt');
  bopen1.Click+=OpenFile1;
  bopen2.Click+=OpenFile2;
  LineBreak;
  bpvf:=new Button('Посимвольно в файл');
  bpvf.Click+=posvfile;
  l3:=new ListBox();
end;

BEGIN
  main;
END.
Заранее благодарен.
Вложения
Тип файла: rar File.rar (865 байт, 5 просмотров)
Konstantin1706 вне форума Ответить с цитированием
Старый 14.10.2012, 20:51   #2
Konstantin1706
Пользователь
 
Регистрация: 02.03.2009
Сообщений: 32
По умолчанию

переделал процедуру posvfile. Теперь она заполняет файл перескакивая позиции, то есть 1 3 5 7 и 2 4 6 8 получается 12345678. Но если один файл будет содержать 3 символа а другой 6, то получается что некоторые позиции пустые и отображается некорректно.
Код:
procedure Posvfile;
var
  i,j,k:integer;
begin
  Rewrite(f);
  Reset(f1);
  Reset(f2);
  k:=0;
  for i:=1 to FileSize(f1) do
    begin
      Read(f1,c);
      seek(f1,i);
      seek(f,k);
      write(f,c);
      k:=k+2;
      //l3.Items.Add(c);
    end;
    k:=1;
    for j:=1 to FileSize(f2) do
      begin
          read(f2,c1);
          seek(f2,j);
          seek(f,k);
          write(f,c1);
          k:=k+2;
          //l3.Items.Add(c1);
      end;
    while not eof(f) do
    begin
      read(f,c2);
      l3.Items.Add(c2);
    end;
    Close(f1);
    Close(f);
Konstantin1706 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
посимвольное считывание salwator C++ Builder 0 14.12.2011 20:38
PascalABC.NET v1ktor Паскаль, Turbo Pascal, PascalABC.NET 0 21.06.2011 13:58
PascalABC.net gogomon93 Помощь студентам 5 17.04.2011 18:48
Посимвольное считывание из файла. Проблема кодировки. Кириллица в консоли. SrgGld Общие вопросы C/C++ 0 16.11.2010 20:34
посимвольное считывание DeFace Общие вопросы C/C++ 4 05.04.2009 23:11