Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2009, 11:58   #1
Оптимист
 
Регистрация: 01.05.2009
Сообщений: 9
По умолчанию Нужно вытащить их файлика текст между определёнными символами...

Добрый день.
Хотел бы спросить каким образом можно "вытащить" кусочки текста из текстового файла, нужный текст находится в специальных символах "+| и |+" ("+|" начало нужного кусочка, "|+" конец). Нужно чтобы каждый кусочек "вытаскивался" в новую строку.
Сам текст находится вот тут.
Если у кого то будет свободное время то буду очень благодарен за помощь.
Оптимист вне форума Ответить с цитированием
Старый 01.05.2009, 12:02   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А что непонятно и что не получается?
Читаете файл посимвольно. Если установлен флаг, то при этом пишем символы в строку. Если встретили '+', то читаем следующий символ. Если это '|', то устанавливаем флаг. Если наоборот, сначала '|' а потом '+', то сбрасываем флаг.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 12:15   #3
Оптимист
 
Регистрация: 01.05.2009
Сообщений: 9
По умолчанию

Непонятно как это организовать и какие компоненты использовать.
А ещё непонятно как за два года я разучился программировать на делфи, ведь раньше всё было отлично а сейчас когда надо что то написать нечего не получается, приходиться обращаться за помощью на различные сообщества и форумы.
Оптимист вне форума Ответить с цитированием
Старый 01.05.2009, 12:20   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Непонятно как это организовать
Так, как я написал.
Цитата:
и какие компоненты использовать.
Ну, кнопку для начала работы, и, например, Memo, для целевого тескта.

Вы начните, а когда зайдете в тупик, тогда уже и спрашивайте.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 13:12   #5
Оптимист
 
Регистрация: 01.05.2009
Сообщений: 9
По умолчанию

У строк есть такой караметр параметр номер символа, есть ли такое у Мемо?

Вот пока что получилось, но что то мне подсказывает что не так всё нужно реализовывать.
Код:
unit TextGrab;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;
    IdAntiFreeze1: TIdAntiFreeze;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
s:string;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
//Memo1.Lines.LoadFromFile('1.txt');
Memo1.Lines.Text:='<h2>КАТАЛОГ САЙТОВ :: , +|julia_olimp@mail.ru,vfrcbv|+ - поиск по тегу</h2>';
Memo2.Lines.Text:='';
s:=Memo1.Lines.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,ni:integer;

begin
i:=0;
for i:=0 to length(s) do
if s[i]='+' then Break;
if s(i+1)='|' then begin
for j:=ni+2 to length(s) do begin
Edit2.Text:=Edit2.Text+s(j);
if s(j)='|' then Break;
end;
end;
if s(j+1)='+' then Break;
end;
end.
Оптимист вне форума Ответить с цитированием
Старый 01.05.2009, 13:27   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот. На форме два Мемо (первый - для текста, второй - для результата) и кнопка.
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
//Memo1.Lines.LoadFromFile('1.txt');
Memo1.Lines.Text:='<h2>КАТАЛОГ САЙТОВ :: , +|julia_olimp@mail.ru,vfrcbv|+ - поиск по тегу</h2>';
Memo2.Lines.Text:='';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i,j,len:integer;
fl : boolean;
s : string;
begin
fl := false;
s := Memo1.Text;
len := length(s);
i:=1;
while i<=len do
 begin
 if s[i]='+' then
  begin
  if i+1<=length(s) then
   if s[i+1]='|' then
    begin
    fl := true;
    inc(i);
    end;
  end
 else if s[i]='|' then
  if i+1<=length(s) then
   if s[i+1]='+' then
    begin
    fl := false;
    inc(i);
    end;
 if fl then Memo2.Text := Memo2.Text + s[i];
 inc(i);
 end;

end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 13:42   #7
Оптимист
 
Регистрация: 01.05.2009
Сообщений: 9
По умолчанию

Благодарю.
Буду разбираться и вспомнить
Оптимист вне форума Ответить с цитированием
Старый 01.05.2009, 15:02   #8
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Sazary, старый добрый pos никто еще не отменял
text - текст
Код:
var
  text,str:string;
begin
  text:='<h2>КАТАЛОГ САЙТОВ :: , +|julia_olimp@mail.ru,vfrcbv|+ - поиск по тегу</h2>';
  while pos('+|',text)<>0 do begin
    str:=copy(text,pos('+|',text)+2,pos('|+',text)-1);
    delete(text,1,pos('|+',text)+2);
    //и делаем чо хошь со строкой str, это вытянутый кусок :)';
  end;
end.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 01.05.2009, 15:23   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Dj_smart
Sazary, старый добрый pos никто еще не отменял
Знаю ) Просто изначально речь шла о файле. Вот я и написал, чтобы было легко переделать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 01.05.2009, 16:44   #10
Оптимист
 
Регистрация: 01.05.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Dj_smart Посмотреть сообщение
Sazary, старый добрый pos никто еще не отменял
text - текст
Код:
var
  text,str:string;
begin
  text:='<h2>КАТАЛОГ САЙТОВ :: , +|julia_olimp@mail.ru,vfrcbv|+ - поиск по тегу</h2>';
  while pos('+|',text)<>0 do begin
    str:=copy(text,pos('+|',text)+2,pos('|+',text)-1);
    delete(text,1,pos('|+',text)+2);
    //и делаем чо хошь со строкой str, это вытянутый кусок :)';
  end;
end.
Спасибо и за такой вариант, но изначально у меня огромный файл в котором очень много таких кусочков и думаю что первый вариант проще изменить
Оптимист вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вытащить текст из ячейки Tirendus Microsoft Office Excel 18 29.01.2012 19:51
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi MASIK Общие вопросы Delphi 7 22.12.2010 18:23
Поиск между символами в документе viter.alex Microsoft Office Word 7 24.05.2009 20:00
Нужно заполнить круг символами. Vova1995 Помощь студентам 1 28.01.2009 19:59
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу c++ DimaG Общие вопросы C/C++ 1 01.11.2007 21:50