Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 067
от 15.12.2002, 10:50

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 119
Отправлено ответов: 326
Активность: 273.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Lexus
Статус: Начальный
Общий рейтинг: 150
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.27
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Vadim
Статус: Доверительный
Общий рейтинг: 144.06
[Подробней >>]
 
Pinman
Статус: Опытный
Общий рейтинг: 145.25
URL: Программирование и заработок
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.41
URL: Пристанище неодинокого программиста
[Подробней >>]
X-RayMan
Статус: Начальный
Общий рейтинг: 145.45
[Подробней >>]
 
Tancho
Статус: Доверительный
Общий рейтинг: 127.77
[Подробней >>]
portos
Статус: Опытный
Общий рейтинг: 122.27
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 115. у меня не работает программа.вы не поможете?? задание такое: дан внешний текстовый файл "book.... (ответов: 8)

Вопросов: 1, ответов: 8


 Вопрос № 115

у меня не работает программа.вы не поможете??
задание такое: дан внешний текстовый файл "book.txt" Написать программу, которая, игнорируя исходное деление этого файла на строки, переформатирует его, разбивая на строки так, чтобы каждая строка оканчивалась точкой либо содержала ровно 60 литер, если среди них нет точки.
я сделала так: создала вспомогательный файл "helpbook.txt", в который записала все строки из "book" в одну(это работает)и дальше пытаюсь форматировать уже эту одну строку...но вот это-то и не работает.


Приложение:


Вопрос отправлен: 12.12.2002, 10:41
Отправитель: Julka

[Следующий вопрос >>] [Список вопросов]

Отвечает Lexus

Здравствуйте, Julka!
Попробуй ввести другой счетчик, скажем j, который отсчитывает кол-во символов до 60. Встречая точку обнуляй как его так и s1, копируя при этом полученную строку в новый файл. Если не понятно, позвони. Рядом живём :)

Ответ отправлен: 12.12.2002, 12:30
Отправитель: Lexus


Отвечает Sensey

Здравствуйте, Julka!
Естественно у тебя не получится, так как строка в Паскале ограничена до 255 символов...
Держи правильный вариант. Если непонятно - пиши.


Приложение:

Ответ отправлен: 12.12.2002, 12:53
Отправитель: Sensey


Отвечает Vadim

Доброе время суток, Julka!
А если файл будет больше, чем позволяет вместить одна строка (255 байт)?
Предлагаю несколько другой способ (см. приложение).
Загнать файл в одну строку можно с помощью типа PChar (до 65535 байтов).
Или читать построчно из исходного файла, с помощью ReadLn, а записывать не с помощью WriteLn, а с помощью Write. Тогда все запишется в одну строку. Но опять-же, размеры получившейся строки . . . :)


Приложение:

Ответ отправлен: 15.12.2002, 08:09
Отправитель: Vadim


Отвечает Pinman

Здравствуйте, Julka!
Ошибка в том, что ты используешь ReadLn для чтения информации из вспомогательного файла. Эта процедура читает информацию до символа окончания строки, а переменные String не могут собержать более 255 символов . Используй Read.

Ответ отправлен: 12.12.2002, 14:32
Отправитель: Pinman


Отвечает Артём Шегеда

Здравствуйте, Julka!

У Sensey'я что-то не получилось с кодировкой - я подправлю...

Приложение:

Ответ отправлен: 12.12.2002, 13:07
Отправитель: Артём Шегеда


Отвечает X-RayMan

Доброе время суток, Julka!
В том-то и проблема, что ты все строки в одну загоняешь - ограничение по длине строки 255 символов. Поэтому лучше сичтывать посимвольно. См. приложение.

Приложение:

Ответ отправлен: 14.12.2002, 22:13
Отправитель: X-RayMan


Отвечает Tancho

Здравствуйте, Julka!
мне кажеться что ты опорочила своя прогу изначале.Ты не
читала что в Pascal-е переменная стринг не может превишать
длину 255 байтов? Если читал то что значить -
while not eof(f)do
begin
readln(f,st);
s1:=s1+st+' ';
end;
write(z,s1);
close(f);
или твой файл не будеть длиной больше 255 символов?
Если ты хочешь експертов написать такая прога то ето другая
вешт!


Ответ отправлен: 14.12.2002, 17:22
Отправитель: Tancho


Отвечает portos

Здравствуйте, Julka!
ты читаешь информацию из вспомагательного файла в строку, куда она не влазит - это раз. во вторых, после вырезания подстроки из строки меняется ее размер и соответсвенно нужно начинать цикл сначала.
лучше читай из файла символы в переменную char, если точка или прочитала 60 символов после последнего перевода строки тогда writeln(g,c(твоя символьная переменная)); k:=0 (k - счетчик записаный в строку символов) если нет тогда write(g,c); k:=k+1; при этом кстати промежуточный файл не нужен, просто из исходного читаеть тоже по символу и протускаешь те, что равны eoln

Ответ отправлен: 14.12.2002, 13:49
Отправитель: portos



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (40)
C / C++ (30)
Perl (6)
Delphi (23)
Pascal (26)
Basic / VBA (11)
Java / JavaScript (9)
PHP (5)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (31)
Windows NT/2000/XP (22)
"Железо" (30)
Поиск информации (12)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (15)
Юристу
Гражданское право (9)
Семейное право (3)
Трудовое право (6)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное