![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() спасибо огромное
![]() |