Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.07.2012, 16:41
Rocat Rocat вне форума
Прохожий
 
Регистрация: 04.07.2012
Адрес: Киров
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию найти слово в тексте

имеется текстовый файл с данными. небходимо написать процедурку которая будет записывать текст в ячейку стрингГрид-а, находящийся между двух определенных подстрок, например:
<условие>
нужный текст
<#условие>

понимаю что надо читать файл до тех пор, пока не встретим необходимую комбинацию символов...как реализовать?..

Последний раз редактировалось Rocat, 04.07.2012 в 16:58.
Ответить с цитированием
  #2  
Старый 04.07.2012, 20:11
Аватар для R-18Rus
R-18Rus R-18Rus вне форума
Новичок
 
Регистрация: 08.04.2012
Сообщения: 68
Версия Delphi: Delphi 7
Репутация: 127
По умолчанию

Файл можно и не читать. Есть функция POS.
Код:
var a,b:char;

a:=pos('первое что ищем', номер строки);
b:=pos('второе что ищем', номер строки);
Текст между этими pos'ами будет
Код:
copy(строка,a - начало,b-a+1 - количество символов)
Т.е. копируем в "строке" "количество символов", начиная с "начала".

Работает только с одной строкой. Но в ячейку тоже всё одной строкой придётся записывать. А вот текст между несколькими строками уже не знаю как вычленить.

Последний раз редактировалось R-18Rus, 04.07.2012 в 20:13.
Ответить с цитированием
  #3  
Старый 04.07.2012, 21:34
Rocat Rocat вне форума
Прохожий
 
Регистрация: 04.07.2012
Адрес: Киров
Сообщения: 6
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от R-18Rus
Файл можно и не читать. Есть функция POS.

но я ведь не знаю, в какой строке окажется это слово. может можно как то перевести текст в массив строк?
Ответить с цитированием
  #4  
Старый 04.07.2012, 21:39
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Можно "читать" файл в цикле для поиска нужной строки, можно сразу загрузить всё в StringList и использовать его возможности по поиску.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 04.07.2012, 21:39
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Цитата:
Сообщение от R-18Rus
Код:
var a,b:char;

a:=pos('первое что ищем', номер строки);
b:=pos('второе что ищем', номер строки);
Функция pos возвращает все-таки значение типа integer, значит
Код:
var a,b:integer;
И ищет она не в номере строки, а в самой строке, отсюда:
Код:
a:=pos('первое что ищем', Строка);
b:=pos('второе что ищем', Строка(или "строка[номер]"-смотря откуда она);
Все остальное кажись верно, только copy - тоже функция, отсюда
Код:
StringGrid1.Cells[aCol, aRow]:=copy(строка,a,b-a+1);
Ответить с цитированием
  #6  
Старый 04.07.2012, 21:45
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Можешь загружать файл в стринглист, тогда его свойство Text будет содержать все строки файла:
Код:
var StrLst:TStringList;
a,b:integer;
begin
strlst:=TStringList.Create;
StrLst.LoadFromFile('путь к файлу');
a:=pos(substr1, StrLst.Text);
b:=pos(substr2, StrLst.Text);
StringGrid1.Cells[aCol, aRow]:=copy(StrLst.Text,a+length(substr1),b-(a+length(substr1))+1);
StrLst.Free.
end;

Последний раз редактировалось YVitaliy, 04.07.2012 в 21:51.
Ответить с цитированием
  #7  
Старый 05.07.2012, 08:27
Аватар для R-18Rus
R-18Rus R-18Rus вне форума
Новичок
 
Регистрация: 08.04.2012
Сообщения: 68
Версия Delphi: Delphi 7
Репутация: 127
По умолчанию

Цитата:
Сообщение от YVitaliy
a+length(substr1)
Это будет начало того, чего искали? По-моему это конец.
А с переменными спутал маленько, извините.
Ответить с цитированием
  #8  
Старый 05.07.2012, 08:34
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

для начала: какой макс. размер файла? байты, Кб, Мб, Гб, Тб?
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025