Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ссылочный тип, Text файлы, массив ссылок 
V
    Опции темы
UpL1nK
Дата 22.6.2006, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.12.2005
Где: Тюмень

Репутация: нет
Всего: нет



Здраствуйте, посмтрите пожалуйста программу. Проблема в следущем : нужно считать из файла А строки и после каждой четной строки добавить символ w, у меня получает что в Б файл записывается сначала все строки а в конце уже только символы, в данном случае 3 символа, так как всего 7 строк.
т.е в Б файле у меня вот такое : лывраврыоаровыраовasd@@@, а надо лыврав@рыоаро@выраов@asd
Код

Const
     N = 7;
Type Ref = ^String;
     Tekst= array [1..N] of Ref;
Var
   w:char;
   f,f2:text;
   st,s:string;
   i:byte;x:tekst;
Procedure Add(w:char);
var g:byte;
Begin
reset(f);
rewrite(f2);
while not eof(f) do begin
for i:=1 to n do begin
readln(f,x[i]^);
if i mod 2 = 0 then
     begin
     write(f2,st);
     write(f2,w);
     end
else write(f2,x[i]^);
end;
end;
End;
Begin
Assign(f,'a.txt');
Assign(f2,'b.txt');
Rewrite(f);Rewrite(f2);
for i:=1 to n do begin
new(x[i]);
Writeln('Введите строку ');
Readln(x[i]^);
write(f,x[i]^);
end;
Writeln;
Write('*Введите символ -> ');Read(w);Writeln;
Add(w);
Writeln('запись второго файла выполнена');
Writeln;
Close(f);
Close(f2);
End.
  

Это сообщение отредактировал(а) UpL1nK - 22.6.2006, 00:01
--------------------
Макс
PM MAIL ICQ   Вверх
volvo877
Дата 22.6.2006, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



UpL1nK, проблема вся в том, что у тебя здесь:
Код

Writeln('Введите строку ');
Readln(x[i]^);
write(f,x[i]^);

все пишется в одну строку, а потом, при чтении ВСЯ строка считывается за один раз... Так что, лучше так:
Код

Writeln('Введите строку ');
Readln(x[i]^);
writeLN(f,x[i]^); { <--- Внимание !!! }

Да и процедуру Add я бы заменил... Незачем тебе пользоваться И For-ом И While not Eof... Что-то одно (лучше - до конца файла, процедура получится более универсальной...):
Код

Procedure Add(w:char);
var st: string;
Begin
  reset(f);
  rewrite(f2); i := 1;
  while not eof(f) do begin
    readln(f,st);
    write(f2,st);
    if i mod 2 = 0 then write(f2,w);
    inc(i);
  end;
End;
 
PM MAIL   Вверх
UpL1nK
Дата 22.6.2006, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 3.12.2005
Где: Тюмень

Репутация: нет
Всего: нет



Все понял, спасибо! 
--------------------
Макс
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.