Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: CL | DM;

Вниз

текст разделить на слова   Найти похожие ветки 

 
be_love ©   (2006-06-23 13:22) [0]

У меня есть текст например : Memo1.Text:="Мама мыла раму". Этот текст должен быть поделён на слова таким образом: Edit1.Text:="мама"; Edit2.Text:="мыла"; Edit3.Text:="раму". Кто сделает напишите ответ сюда. Потому что я обшарил весь инет (конечно я находил такие примеры и для функции POS и так же для функции PosEx, но там толком не написно куда, что откуда. Так же там не написано какой модуль необходим для работы (так что незабудте написать)). если хотите посмотреть похожий пример и понятно обьяснить нам всем - даю вам ссылку (http://narod.yandex.ru/cgi-bin/yandmarkup?cluster=14&prog=0x2757571A&HndlQuery=557623808&PageNum=0&g=0&d=0&q0=6 0166672&p=). Заранее спасибо!


 
Курдль ©   (2006-06-23 13:38) [1]


> Кто сделает напишите ответ сюда.

А почему бы не написать "кто первый сделает - пусть напишет сюда и тогда он будет удостоен моей снисходительной похвалы"?


 
Игорь Шевченко ©   (2006-06-23 13:40) [2]

http://kladovka.net.ru/delphibase/?action=viewfunc&topic=strconvert&id=10077


 
Сергей М. ©   (2006-06-23 13:41) [3]


> я обшарил весь инет


Смелое заявление. Ришпект)


 
Еж ©   (2006-06-23 13:48) [4]

2 be_love

Извини, не смог сделать :( Тож все обшарил и ниччче не понял - куда, что откуда?


 
Rouse_ ©   (2006-06-23 13:57) [5]

А скока денег платишь? :)
Предлагаю стартовую - 3 бакса за слово ;)


 
Карелин Артем ©   (2006-06-23 14:15) [6]


> Потому что я обшарил весь инет

Это как в фильме Стэлс за пару секунд самолет выкачал ВСЮ музыку из всего инета


 
Zeqfreed ©   (2006-06-23 14:17) [7]

uses
 Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls;

type
 TEnumWordsCallback = procedure(const Word : String; Pos : Integer) of object;

 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 private
   procedure MyEnum(const Word : String; Pos : Integer);
 public
   { Public declarations }
 end;

. . .

function EnumWords(const Src : String; EnumFunc : TEnumWordsCallback) : Integer;
type
 TEnumWordsState = (ewsNone, ewsWord);
const
 SpaceChars = [" ", #9, #13, #10, "?", ",", ".", "!", ";", "…", ":"];
var
 i, num : Integer;
 State : TEnumWordsState;
 Entity : String;
begin
 num := 0;
 i := 1;
 Entity := "";
 State := ewsNone;

 repeat
  case State of
   ewsNone : begin
    if not (Src[i] in SpaceChars) then begin
     Entity := Src[i];
     State := ewsWord;
    end;
   end;

   ewsWord : begin
    if (Src[i] in SpaceChars) then begin
     if (Entity <> "") then begin
      Inc(num);
      EnumFunc(Entity, num);
      Entity := "";
     end;

     State := ewsNone;
    end else
     Entity := Entity + Src[i]
   end;
  end;

  Inc(i);
 until (i > length(Src));

 if (Entity <> "") then begin
  Inc(num);
  EnumFunc(Entity, num);
 end;

 Result := num;
end;

procedure TForm1.MyEnum(const Word: String; Pos : Integer);
var
 x : TComponent;
begin
 x := FindComponent("Edit" + IntToStr(Pos));

 if Assigned(x) then begin
  if (x is TEdit) then (x as TEdit).Text := Word
 end else begin
  with TEdit.Create(Self) do begin
   Parent := Self;
   Name := "Edit" + IntToStr(Pos);
   Left := 8;
   Top := 8 + ((Pos - 1) * 26);
   Text := Word;
  end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 EnumWords(Memo1.Text, MyEnum);
end;


Демпингую по-черному :)


 
Сергей М. ©   (2006-06-23 14:18) [8]


> Еж ©   (23.06.06 13:48) [4]


> все обшарил и ниччче не понял


Да уж .. сложно вам, ежам) ...

Что не понял-то ?


 
Gero ©   (2006-06-23 14:20) [9]

StringList.Delimiter = " ";
StringList.DelimitedText = Memo1.Text;


 
Карелин Артем ©   (2006-06-23 14:29) [10]

Memo1.Text:=StringReplace(Memo1.Text," ",#13#10,[rfReplaceAll]))//или там #10#13 будет...


 
Еж ©   (2006-06-23 14:36) [11]

2 Сергей М. ©   (23.06.06 14:18) [8]

Откуда - Что - Куда? :(


 
Еж ©   (2006-06-23 14:42) [12]

> Zeqfreed ©   (23.06.06 14:17) [7]

Мудрено больно, я ничче не понял :(  Сам попробовал WordCount и ExtractWord из RxLib - вроде работает.


 
antonn ©   (2006-06-23 15:36) [13]

ба-бах!
procedure Text2Slovs(text:string; OutText:Tstrings);
var i,i_last:integer;  _semafor:boolean;
begin
text:=" "+text+" ";
_semafor:=false;
i_last:=0;
for i:=1 to length(text) do begin
if (text[i]=" ") then begin
if _semafor then begin
    OutText.Add(copy(text,i_last+1,i-i_last-1));
    end;
 i_last:=i;
 _semafor:=false;
end else _semafor:=true;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Text2Slovs(edit1.Text,listbox1.Items);
end;


 
Сергей М. ©   (2006-06-23 15:42) [14]


> Еж ©   (23.06.06 14:36) [11]
> Откуда - Что - Куда? :(


Оттуда - То - Туда !)

Где конкретности ?


 
Еж ©   (2006-06-23 16:00) [15]

2 Сергей

конечно я находил такие примеры и для функции POS и так же для функции PosEx, но там толком не написно куда, что откуда. Так же там не написано какой модуль необходим для работы


 
Cerberus ©   (2006-06-23 16:19) [16]

Запускай цикл.
Так как стринг является массивом то перебирай все значения пока не натнёшся на пробел записывай конечную позицию и начальную потом оператором copy(s,start,stop);
где s строка start стартовая позиция stop конечная позиция.
По мойме предельно просто. Обычный паскаль.


 
Ketmar ©   (2006-06-23 16:19) [17]

>Еж ©   (23.06.06 16:00) [15]
а еду тебе тоже пережёваную в рот кладут?


 
Сергей М. ©   (2006-06-23 16:29) [18]


> Еж ©   (23.06.06 16:00) [15]


Ты станд.справку к PosEx() читал ?
Что там тебе не понятно ?


 
Еж ©   (2006-06-23 16:41) [19]

Ну че вы такие серьезные? Пятница ведь! Стебаюсь я, хоть бы поддеРЖАЛ кто :)


 
Сергей М. ©   (2006-06-23 16:43) [20]

Ежи оне в любой день ежи)


 
Еж ©   (2006-06-23 16:49) [21]

2 Сергей М.

СерЕЖ, ты ведь тож немножко Еж ;)


 
Ketmar ©   (2006-06-23 17:31) [22]

>Еж ©   (23.06.06 16:41) [19]
у кого пятница, а у кого юзвери. а юзвери очень негативно влияют на чувство юмора. %-(



Страницы: 1 вся ветка

Текущий архив: 2006.07.23;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.027 c
15-1150880370
Layner
2006-06-21 12:59
2006.07.23
Отправка SMS от любого номера


15-1150953186
Rentgen
2006-06-22 09:13
2006.07.23
установить GLOBUS VCL на D2006.


15-1151067536
Ламот
2006-06-23 16:58
2006.07.23
Понимаю что не в тему, но все же


2-1151949475
HBreaker
2006-07-03 21:57
2006.07.23
Ошибка CoInitialize has not been called


15-1150877404
ANB
2006-06-21 12:10
2006.07.23
Алгоритмы проверки ИНН и номера ПФР