|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
06.06.2010, 02:21 | #1 (permalink) |
Новичок
Регистрация: 06.06.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вставка символа "конец строки" (Pascal)
нужно вставить #10 (конец строки) через каждые 150 символов в нетипизированный файл. если встречается #13 (enter), то далее отсчет символов начинать заново. причем слова в тексте не должны разрываться, т.е. вставку делать перед следующим пробелом кое-что нашла, но не могу понять, что такое in, и как его обозначить в var Код:
var f: file; f2:file; j,n:integer; s:string begin assign(f, text.txt); reset(f); assign(f2, file1.txt); rewrite(f2); n:=0; while n+150<length(s) do begin for j:=n+150 to n+1 do begin if s[j]=' ' then begin in:=j; break; end; end; insert(#10,s,n); end; writeln(f2,s); close(f); close(f2); end. Код:
while not EOF(f) do |
06.06.2010, 02:21 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ваша тема очень схожа с некоторыми топиками на форуме, которые вы скорее всего не просмотрели "Никитин" пообещал новые иски против пользователей "ВКонтакте" Пропали кнопки "Вперёд", "Назад" и "Вверх" Видеокамера SONY записывала в формате в "mpg", а теперь стала в "m2ts". Почему? Увеличение "бегущей строки" |
06.06.2010, 09:39 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
f: file; f2:file; j,n:integer; s:string Идем дальше: Код:
assign(f, text.txt); reset(f); assign(f2, file1.txt); rewrite(f2); Код:
var st:String; begin st:='D:\text.txt'; Assign(f, st); end; Код:
assign(f, 'text.txt'); Код:
for j:=n+150 to n+1 do Можно и дальше продолжать, но, я полагаю, достаточно. Мне кажется, что программа должна выглядеть как-то так: Код:
var f,f2: TEXT; n:Byte; s:string; begin assign(f, 'D:\text.txt'); reset(f); assign(f2, 'D:\file1.txt'); rewrite(f2); Repeat ReadLn(f,s); If Length(s)>150 then begin n:=150; Repeat Inc(n); Until (s[n]=' ') or (s[n]=#13); If s[n]=' ' then insert(#10,s,n); end; WriteLn(f2,s); Until EoF(f); close(f); close(f2); end. Да, естественно, пути к файлам поставьте свои. |
|
06.06.2010, 15:58 | #3 (permalink) |
Новичок
Регистрация: 06.06.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Дело в том, что решила использовать нетипизированный тип файлов потому, что строки в моем случае привышают 255 символов. а в дальнейшем к этим строкам еще и добавляеются символы. вот и ищу выход, как разбить эти строки на более маленькие, чтобы можно было далее работать с текстовым типом.
может, конечно, есть другой выход, но пока в голову пришло только делить на более маленькие. а может Вы знаете, как увеличить эти 255? text.txt попыталась переделать в нетипизированный, но при этом текст просто переносится без изменений Код:
var f,f2:file of char; n:Byte; s:string; b:char; begin assign(f, 'text.txt'); reset(f); assign(f2, 'file1.txt'); rewrite(f2); Repeat Read(f,b); If Length(s)>150 then begin n:=150; Repeat Inc(n); Until (s[n]=' ') or (s[n]=#13); If s[n]=' ' then insert(#10,s,n); end; Write(f2,b); Until EoF(f); close(f); close(f2); end. |
06.06.2010, 18:21 | #4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
var f,f2:file of char; n:Byte; b:char; begin assign(f, 'D:\text.txt'); reset(f); assign(f2, 'D:\file1.txt'); rewrite(f2); n:=0; Repeat Repeat Inc(n); Read(f,b); Write(f2,b); Until (n=150) or (b=#13) or Eof(f); If b=#13 then n:=0 else If n=150 then begin Repeat Read(f,b); Write(f2,b); Until (b=' '); Write(f2,#10); n:=0; end; Until Eof(f); close(f); close(f2); end. |
|
06.06.2010, 19:35 | #5 (permalink) |
Новичок
Регистрация: 06.06.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
не работает. просто копирует текст без изменения
сначала не понравилась строка Код:
Write(f2,#10); Код:
p:=#10; Write(f2,p); |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
06.06.2010, 19:47 | #6 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да нет, работать-то она работает:
К сожалению, в Вашем файле русский текст и под DOS кодировка не соответствует, но вставленные символы #10 (светлые на темном фоне) очень даже видны. Другое дело - как тот или иной редактор их обрабатывает, и вообще показывает или скрывает. Но задача, как видите, решена. |
06.06.2010, 20:58 | #8 (permalink) |
Новичок
Регистрация: 06.06.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
не идет ни в какую. даже исправляла, чтобы он интеры вставлял. все равно никак.
пишу в Turbo Pascal результат смотрю через блокнот. Уж интеры бы точно в блокноте отобразились. Вы бы не могли выложить свой .pas файл |
06.06.2010, 21:15 | #9 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Боюсь, что блокнот тут не годится. В DOS я знаю, как увидеть символы, а вот в Windows... Сейчас кое-что попробую. Пока же могу посоветовать написать простенькую программку посимвольного чтения файлов и выдачи на экран их кодов (командой Ord(p)). Считать оба файла и сверить результаты. |
|
06.06.2010, 21:22 | #10 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Так, проверил одну идею - работает. Если у Вас установлен пакет MS Office, то откройте оба файла WORD'ом и нажмите кнопку отображения символов. Увидите различия.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|