Форум: "Прочее";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
Внизтекст разделить на слова Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.012 c