Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 13
1

Через 5 символов переход на новую строку

11.02.2015, 18:33. Показов 2841. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добра и счастья вам, уважаемые участники форума)
Вопрос: как через 5 символов в memo переходить на новую строчку, я понимаю, что это цикл, но чего то нублю, уж простите, но через поиск не нашел. вот собственно код мой, надо еще добавить переходы на новую строчку..

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.Button3Click(Sender: TObject);
Var f:TextFile; // объявление файловой переменной
st,str:String; // строковая переменная
begin
AssignFile(f,'in.txt'); // привязка названия файла к файловой переменной
{$I-} // отключение контроля ошибок ввода-вывода
Reset(f); // открытие файла для чтения
{$I+} // включение контроля ошибок ввода-вывода
if IOResult<>0 then // если есть ошибка открытия, то
begin
ShowMessage('Ошибка открытия файла C:\1.TXT');
Exit; // выход из процедуры при ошибке открытия файла
end;
 
While not EOF(f) do // пока не конец файла делать цикл:
begin
ReadLn(f,st); // читать из файла строку
str:= AnsiUpperCase(st);
st:=StringReplace(str,' ','',[rfReplaceAll]);
Memo1.Lines.Add(st); // выводить строку пользователю
 
end;
CloseFile(f); // закрыть файл
Собственно, сейчас он считывает из файла, переводит в ВЕРХНИЙ регистр, удаляет пробелы.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2015, 18:33
Ответы с готовыми решениями:

Как заменить переход на новую строку на пробел, а пустую строку на переход на новую строку?
Подскажите как из одного текстового файла, в котором в каждом ряде содержится не больше одного...

Переход на новую строку после N символов
Привет народ. Мне нужна помошь. Как сделать чтоб программа не выводила в одной строке более N...

Поле с текстом в свободнй форме, переход через enter на новую строку
Добрый день. Необходимо поле типа &quot;Замечания&quot;, куда в свободной форме может вводиться все, что...

Программа подсчета символов не правильно считает символ "переход на новую строку"
Здравствуйте! У меня есть программа расчета символов в тексте, она считает всё: буквы, цифры,...

10
Заблокирован
11.02.2015, 18:40 2
через 5 символов или через 5 слов?
0
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 13
11.02.2015, 18:40  [ТС] 3
Символов, я же уже удалил все пробелы.
0
Заблокирован
11.02.2015, 18:43 4
И потом. если у вас мемо, то зачем открывать файл и не загрузить в мемо сразу?
0
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 13
11.02.2015, 18:44  [ТС] 5
Мне главное, чтобы был результат, это простая лабораторная работа по шифрованию...
0
Заблокирован
11.02.2015, 18:50 6
И потом, насколько я понимаю, вы читаете каждую строчку. а отом что хотите, из неё сделать по символов строчки?

Добавлено через 23 секунды
по 5 символов?

Добавлено через 46 секунд
и что у вас за шифр вообще? и зачем пробелы удалять?
0
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 13
11.02.2015, 18:50  [ТС] 7
Потом я просто читаю по столбцам, заношу в другое мемо.. но это я сделал, надо только форматирование сделать нормальное и все)
0
Заблокирован
11.02.2015, 19:15 8
Лучший ответ Сообщение было отмечено scorpik22 как решение

Решение

види те ли, знаком перехода на другую строку является код DA

Добавлено через 1 минуту
По идее его надо вставить после каждого 5 символа

Добавлено через 41 секунду
но луше это сделать синтезом строки

Добавлено через 1 минуту
то есть вы загружаете текст целиком в мемо и убираете все лишние знаки. Я не знаю как организован текст и поэтому трудно сказать что-либо


вы создаёте новую пустую строку.
скажем STR_

STR_:='';

Весь текст в мемо это memo1.text


ну и начинаем
делаем счётчик символов SC:=0;

И начинаем перебирать все символы


то есть

Delphi
1
2
3
4
5
6
SC:= SC + 1;
STR_:= STR_+ memo1.text[i];
if SC = 5 then begin
                     sc:=0;
                     STR_:= STR_+ chr($D) + chr($A); 
                    end;
То есть накапливаем


Это в цикле делается до конца строки.
Но есть один нюанс.
При этом методе возникает проблема с завершение если дина строки не кратна 5-и
Когда цикл закончится смотрим чему равно SC
если SC меньше 5-и, то добавляем хвост в конец строки


когда строка готова, отправляем её в мемо
memo1.text:= STR_;
1
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 13
11.02.2015, 19:20  [ТС] 9
Спасибо, очень помогли. Вот код, если кто будет искать подобную тему. Там в последней строке удаляются символы "лишние" значит))
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TForm1.Button3Click(Sender: TObject);
Var f:TextFile; // объявление файловой переменной
st,str,STR_:String; // строковая переменная
i,SC:integer;
begin
AssignFile(f,'in.txt'); // привязка названия файла к файловой переменной
{$I-} // отключение контроля ошибок ввода-вывода
Reset(f); // открытие файла для чтения
{$I+} // включение контроля ошибок ввода-вывода
if IOResult<>0 then // если есть ошибка открытия, то
begin
ShowMessage('Ошибка открытия файла in.TXT');
Exit; // выход из процедуры при ошибке открытия файла
end;
 
While not EOF(f) do // пока не конец файла делать цикл:
begin
ReadLn(f,st); // читать из файла строку
str:= AnsiUpperCase(st);
st:=StringReplace(str,' ','',[rfReplaceAll]);
Memo1.Lines.Add(st); // выводить строку пользователю
 SC:=0;
 L:=Length (st);
 for i := 1 to L do
  begin
 SC:= SC + 1;
STR_:= STR_+ memo1.text[i];
if SC = 5 then begin
sc:=0;
STR_:= STR_+ chr($D) + chr($A);
 Memo1.Lines.Add(STR_);
end; end;
end;
CloseFile(f); // закрыть файл
end;
0
Заблокирован
11.02.2015, 19:36 10
Вот так добавляется оставшийся хвост

if sc < 5 then STR_:=STR_+ RightStr(Memo1.Text,SC);

Надеюсь не шибко заумно?

Добавлено через 2 минуты
Не . намного проще всё

Добавлено через 10 секунд
Щас напишу

Добавлено через 8 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Memo1.Lines.LoadFromFile('in.txt');
Memo1.text:=StringReplace(Memo1.text,' ','',[rfReplaceAll]);
Memo1:=StringReplace(Memo1.text,  chr($D) + chr($A),'',[rfReplaceAll]);
STR_:='';
SC:=0;
L:=Length (Memo1.Text);
for i := 1 to L do
begin
  SC:= SC + 1;
  STR_:= STR_+ memo1.text[i];
    if SC = 5 then begin
                        sc:=0;
                        STR_:= STR_+ chr($D) + chr($A);
                       end;
end;
if sc < 5 then STR_:=STR_+ RightStr(Memo1.Text,SC); 
Memo1.Lines.Add(STR_);
Добавлено через 3 минуты
Это весь код надо только переменные объявить
0
0 / 0 / 0
Регистрация: 05.01.2012
Сообщений: 13
11.02.2015, 19:44  [ТС] 11
В первом коде надо добавить еще чистку мемо1. собственно, вот что получилось:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
procedure TForm1.Button3Click(Sender: TObject);
Var f:TextFile; // объявление файловой переменной
st,str,STR_,RStr:String; // строковая переменная
i,SC:integer;
begin
AssignFile(f,'in.txt'); // привязка названия файла к файловой переменной
{$I-} // отключение контроля ошибок ввода-вывода
Reset(f); // открытие файла для чтения
{$I+} // включение контроля ошибок ввода-вывода
if IOResult<>0 then // если есть ошибка открытия, то
begin
ShowMessage('Ошибка открытия файла in.TXT');
Exit; // выход из процедуры при ошибке открытия файла
end;
 
While not EOF(f) do // пока не конец файла делать цикл:
begin
ReadLn(f,st); // читать из файла строку
str:= AnsiUpperCase(st);
st:=StringReplace(str,' ','',[rfReplaceAll]);
//Memo3.Clear;
//Memo3.Lines.Add(st); // выводить строку пользователю
 SC:=0;
 L:=Length (st);
 for i := 1 to L do
  begin
 SC:= SC + 1;
STR_:= STR_+ st[i];
if SC = 5 then begin
sc:=0;
STR_:= STR_+ chr($D) + chr($A)  ;
 str:=str_;
 Memo1.Clear;
 Memo1.Lines.Add(STR);
end; end;
end;
CloseFile(f); // закрыть файл
end;
Все таки решил этим кодом пользоваться, спасибо за помощь)
0
11.02.2015, 19:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2015, 19:44
Помогаю со студенческими работами здесь

Переход на новую строку
Добрый день, цикл должен считывать из файла 12 слов (начиная со второй строки файла), но он этого...

Переход на новую строку
У меня есть имя человека полное ФИО которое выводиться в строку макета, а мне надо что бы после...

Переход на новую строку
Доброго времени суток! у меня такая проблема: у меня стоит visual C++ 2008 и я не могу перейти на...

Переход на новую строку
Файл открыт в текстовом режиме. Есть строка , ее надо записать в файл, и перейти на новую строку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru