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

Нестандартное считывание текста

16.11.2016, 19:04. Показов 1295. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! В txt файле после определенного слова-указателя надо считать следующее слово (одно, до знака пробела) и сохранить его.
Пример: [ххх] ууу zzz
Т.е надо считать yyy.
Указатель [xxx] постоянный.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2016, 19:04
Ответы с готовыми решениями:

Считывание текста
Программе на вход подается текст (текст представляет собой предложения, разделенные точкой....

Считывание текста
Построить программу,которая считывает английский текст из файла и выводит его на экран,заменив...

Считывание текста
Привет всем помогите пожалуйста осуществить коечто я хочу чтобы моя программа понимала текст я...

считывание текста
помогите написать програму,которая считывает английский текс с файла и выводит на екран слова...

13
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,158
Записей в блоге: 20
16.11.2016, 21:00 2
файл считать в TStringStream
поиск подстроки в stringStream.DataString как обычно - функция pos / posEx
копирование части строки - copy(s, откуда, сколько)
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 21:17 3
Pascal
1
2
3
4
5
6
i:=pos(' ',stroka);
s:='';
repeat
inc(i);
s:=s+stroka[i];
until stroka[i]=' ';
0
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 22
16.11.2016, 21:18  [ТС] 4
проблема в том что yyy может быть различной длинны. Т.е. надо как-то привязать к пробелу, который свидетельствует об окончании слова.
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 21:28 5
bkmzk, в строке "[ххх] 147654565898907 zzz"
код найдет именно "147654565898907" в строке, независимо от длины "ууу"

Добавлено через 2 минуты
код с комментариями:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
stroka,s:string; //stroka -первоначальная строка, s - результат
begin
stroka:=edit1.Text; //вносим в stroka текст с edit1
i:=pos(' ',stroka); //находим позицию первого пробела
s:=''; //результат очищаем
repeat //запускаем цикл
inc(i);
s:=s+stroka[i]; //добавлять к строке по символу
until stroka[i]=' '; //пока символ не будет равен пробелу
form1.caption:=s; //вывожу результат в "шапку формы"
end;
0
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 22
16.11.2016, 21:29  [ТС] 6
Но в моем сообщении может быть: [sss] yyyyyy zzz
И это слово мне уже не нужно.
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 21:36 7
bkmzk, еще какие то вопросы?
тоже самое, но с COPY()
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var i,start:integer;
stroka:string;
begin
stroka:=edit1.Text;
start:=pos(' ',stroka);
i:=start;
repeat
inc(i);
until stroka[i]=' ';
form1.caption:=copy(stroka,start,i-start);
end;
Изображения
 
1
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 21:38 8
Цитата Сообщение от bkmzk Посмотреть сообщение
И это слово мне уже не нужно.
как не нужно? вам нужно найти первое слово от [какой-то_там_текст] и до пробела. я вам этот код написал. пользуйтесь на здоровье.
0
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 22
16.11.2016, 22:06  [ТС] 9
Прошу прощения, может я не совсем понятно пояснил, но на примере вот такого сообщения:
[xxx] yyyyy 123
[zzz] YYYYY 456
Мне нужно записать только слово после [xxx], т.е. yyyyy
YYYYY мне не нужно.
Уж простите за тупость.
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 22:19 10
Лучший ответ Сообщение было отмечено bkmzk как решение

Решение

bkmzk, код сильно не поменялся:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Button1Click(Sender: TObject);
var i,start:integer;
stroka:string;
begin
form1.Caption:='';
stroka:=edit1.Text;
if pos('[xxx]',stroka)=0 then exit;
start:=length('[xxx] ');
i:=start;
repeat
inc(i);
until stroka[i]=' ';
form1.caption:=copy(stroka,start,i-start);
end;
Миниатюры
Нестандартное считывание текста  
1
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 22
16.11.2016, 22:21  [ТС] 11
Спасибо огромное, под конец я и сам вроде понял!
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 22:37 12
Цитата Сообщение от cfbogd Посмотреть сообщение
start:=length('[xxx] ');
start:=pos(' ',stroka);, так лучше
1
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 22
16.11.2016, 22:57  [ТС] 13
cfbogd, подскажи, хочу результат вывести в Memo просто заменив form1.caption:= на Memo1.Lines.Add:=
Но выдаёт ошибку о том что нет актуальных параметров ([Error] Unit1.pas(42): Not enough actual parameters)
Вопрос снят! туплю!
0
botsik
262 / 262 / 140
Регистрация: 05.06.2016
Сообщений: 1,247
Записей в блоге: 1
16.11.2016, 22:59 14
bkmzk,
Delphi
1
Memo1.Lines.Add(copy(stroka,start,i-start));
1
16.11.2016, 22:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2016, 22:59
Помогаю со студенческими работами здесь

Считывание текста из файла
Собственно, задача такая: есть файл info.txt в ней строки такого формата...

Считывание текста с input
Надо считать строку с input и записать в массив строк. Реализовал следующим образом, но вместо...

Считывание текста из LabelEdit
подскажите, пожалуйста, можно ли сохранить содержимое LabelEdit в переменной типа char, чтобы в...

Построчное считывание текста
Мне нужно занести текст из файла в переменную, причем в таком же виде, как в в самом файле. И если...


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

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