![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем Привет. Подскажите как вывести символы из Memo1 в ValueListEditor т.е. символ= количество вхождений.Попытался сам нечего не получилось
Код:
For I := 0 To Memo1.Lines.Count-1 Do
if not ValueListEditor1.FindRow(Memo1.text[i],k) then
ValueListEditor1.Strings.Add(Memo1.text[i]+'=1');
else
{ здесь алгоритм увеличения значение для ключа} |
|
#2
|
||||
|
||||
|
Чё-то не понял заданного вопроса, вхождений чего и куда?
|
|
#3
|
|||
|
|||
|
вхождений в текст первая колонка символ, вторая кол-во символов встречающихся в тексте
![]() |
|
#4
|
||||
|
||||
|
А символы от куда берёшь?
Я так понимаю, у тебя есть перечень символов, например "абвгд", надо найти количество вхождений каждого из них? Или символы откуда из другого места беруться? |
|
#5
|
|||
|
|||
|
Есть текст в поле memo1. Нужно каждый символ вписать в ValueListEditor и сколько раз он встречается в тексте.
|
|
#6
|
|||
|
|||
|
вот пример, мне надо написать такую программу:
![]() |
|
#7
|
||||
|
||||
|
Код:
procedure TForm1.FindSymbols;
var i,j,c: integer; s,t: string;
begin
ValueListEditor1.Strings.Clear;
s:=Edit1.Text;
For i:=1 to Length(s) do begin
t:=Memo1.Text; c:=0;
For j:=1 to Length(t) do
if t[j] = s[i] then c:=c+1;
ValueListEditor1.InsertRow(s[i],IntToStr(c),true);
end;
end;Вот посмотри может не самый оптимальный, но рабочий. В эдите находится строка символов "абвгд" не чем не разделённая. Поиск произойдёт для каждого символа из этой строки. |
|
#8
|
|||
|
|||
|
спасибо поробую
|
|
#9
|
|||
|
|||
|
Вот тебе рабочий вариант.
Подсчитывает кол-во каждого символа в тексте., Код:
procedure TForm1.FindSymbols;
var
a:array [0..255] of Integer;
i:integer;
begin
for i:=Low(a) to high(a) do a[i]:=0;
with Memo1 do
for i:=1 to Length(Text) do
Inc(a[Ord(Text[i])]);
ValueListEditor1.Strings.Clear;
for i:=32 to 255 do
if a[i]>0 then
ValueListEditor1.InsertRow(Char(i),IntToStr(a[i]),true);
end; |
|
#10
|
|||
|
|||
|
спасибо
![]() |
|
#11
|
|||
|
|||
|
А можно еще и для слов такое сделать
![]() |
|
#12
|
|||
|
|||
|
Держи,,
Код:
procedure TForm1.Button1Click(Sender: TObject);
type
tRec = record
Str:String;
aCnt:Integer;
end;
var
i,z,cnt:integer;
b:byte;
tmpStr:String;
tmpRecs:array of tRec;
f:boolean;
begin
tmpStr:='';
cnt:=0;
SetLength(tmpRecs,cnt);
with Memo1 do
begin
for i:=1 to Length(Text) do
if AnsiUpperCase(Text[i])[1] in ['А'..'Я'] then tmpStr:=tmpStr+LowerCase(Text[i])
else
if (Text[i] in [' ',#10,#13]) then
begin
f:=false;
if cnt>0 then
for z:=Low(tmpRecs) to high(tmpRecs) do
if tmpStr = tmpRecs[z].Str then
begin
Inc(tmpRecs[z].aCnt);
f:=true;
break;
end;
if not f then
begin
Inc(cnt);
SetLength(tmpRecs,cnt);
with tmpRecs[Pred(cnt)] do
begin
Str:=tmpStr;
aCnt:=1;
end;
end;
tmpStr:='';
end;
ValueListEditor1.Strings.Clear;
for i:=Low(tmpRecs) to high(tmpRecs) do
with tmpRecs[i] do
ValueListEditor1.InsertRow(Str,IntToStr(aCnt),false);
SetLength(tmpRecs,0);
end;
end; |
|
#13
|
|||
|
|||
|
спасибо огромное
![]() |