![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как сделать такое
новычек © (2007-08-25 15:09:00)Мастера подскажите как сделать следующее:
в мемо в каждой строчке типо того:
A1=
A1=
A4=
A1=
A3=
A4=
Как мне в другое мемо записать кол-во каждого из 'A =' ...
т.е. чтобы результат был в мемо такой:
A1 = 3
A4 = 2
A3 = 1
спасибо
новычек (2007-08-25 16:28:00) [1]спасибо, работает :)
Turbouser (2007-08-25 16:23:00) [2]:-)
procedure TForm1.Button1Click(Sender: TObject);
var
i, Idx: integer;
begin
Memo2.Clear;
for i := 0 to Pred(Memo1.Lines.Count) do
if (Memo1.Lines.Names[i] > '') then
begin
Idx := Memo2.Lines.IndexOfName(Memo1.Lines.Names[i]);
if Idx < 0 then
Memo2.Lines.Add(Memo1.Lines.Names[i] + '=1')
else
Memo2.Lines.ValueFromIndex[Idx] :=
IntToStr(StrToInt(Memo2.Lines.ValueFromIndex[Idx]) + 1);
end;
end;
Turbouser (2007-08-25 16:22:00) [3]> [5] новычек (25.08.07 16:14)
procedure TForm1.Button1Click(Sender: TObject);
var
i, Idx: integer;
begin
Memo2.Clear;
for i := 0 to Pred(Memo1.Lines.Count) do
begin
Idx := Memo2.Lines.IndexOfName(Memo1.Lines.Names[i]);
if (Memo1.Lines.Names[i] > '') then
if Idx < 0 then
Memo2.Lines.Add(Memo1.Lines.Names[i] + '=1')
else
Memo2.Lines.ValueFromIndex[Idx] :=
IntToStr(StrToInt(Memo2.Lines.ValueFromIndex[Idx]) + 1);
end;
end;
новычек (2007-08-25 16:14:00) [4]чет не так делаю, повторяются:
var
k,j,i,l:integer;
s:string;
list:tstringlist;
begin
list:=tstringlist.Create;
for i:=0 to memo1.Lines.Count - 1 do
begin
k:=0;
s:=memo1.Lines.Strings[i];
for l:=0 to list.Count - 1 do
if list.Strings[l] <>s then
list.Add(s);
for j:=0 to memo1.Lines.Count - 1 do
begin
if memo1.Lines.Strings[j] = s then
inc(k);
end;
memo2.Lines.Add(S+' = '+inttostr(k));
end;
list.Free;
sniknik (2007-08-25 16:08:00) [5]логика это элементарно...
сортируешь записи по значению до =
дальше читаешь значение первой записи и пока она равна такой же перебираешь записи с одновременным подсчетом, как только станет не равна (или конец записей) сохраняешь значение и счетчик в другое место, принимаешь новое значение скидываешь счетчик и продолжаешь цикл. все.
но вообще в том что понадобилось уже просматривается нужда если не в базах то хотябы в структурах для работы с данными (рекордсетах/подобия)... пихать в мемо структурированные(по идее) данные это себе дороже в итоге выйдет.
Zeqfreed (2007-08-25 16:00:00) [6]Выделяешь массив достаточного размера. Инициализируешь нулями. В цикле проходишься в списку. Берешь текущий индекс из строчки. По этому индексу инкрементируешь элемент массива. После завершения цикла проходишься по массиву, записывая необходимую информацию в текстовое поле.
новычек (2007-08-25 15:32:00) [7]не могу придумать логику для реализации этого
Turbouser (2007-08-25 15:31:00) [8]А в чем трудность?
Показывай как делаешь и что не получается.