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

Вниз

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

 
новычек   (2007-08-25 15:09) [0]

Мастера подскажите как сделать следующее:
в мемо в каждой строчке типо того:
A1=
A1=
A4=
A1=
A3=
A4=

Как мне в другое мемо записать кол-во каждого из "A ="  ...
т.е. чтобы результат был в мемо такой:
A1 = 3
A4 = 2
A3 = 1

спасибо


 
Turbouser ©   (2007-08-25 15:31) [1]

А в чем трудность?
Показывай как делаешь и что не получается.


 
новычек   (2007-08-25 15:32) [2]

не могу придумать логику для реализации этого


 
Zeqfreed ©   (2007-08-25 16:00) [3]

Выделяешь массив достаточного размера. Инициализируешь нулями. В цикле проходишься в списку. Берешь текущий индекс из строчки. По этому индексу инкрементируешь элемент массива. После завершения цикла проходишься по массиву, записывая необходимую информацию в текстовое поле.


 
sniknik ©   (2007-08-25 16:08) [4]

логика это элементарно...
сортируешь записи по значению до =
дальше читаешь значение первой записи и пока она равна такой же перебираешь записи с одновременным подсчетом, как только станет не равна (или конец записей) сохраняешь значение и счетчик в другое место, принимаешь новое значение скидываешь счетчик и продолжаешь цикл. все.

но вообще в том что понадобилось уже просматривается нужда если не в базах то хотябы в структурах для работы с данными (рекордсетах/подобия)... пихать в мемо структурированные(по идее) данные это себе дороже в итоге выйдет.


 
новычек   (2007-08-25 16:14) [5]

чет не так делаю, повторяются:
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;


 
Turbouser ©   (2007-08-25 16:22) [6]

> [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;


 
Turbouser ©   (2007-08-25 16:23) [7]

:-)
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;


 
новычек   (2007-08-25 16:28) [8]

спасибо, работает :)



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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1187532488
DelphiKettle
2007-08-19 18:08
2007.09.16
WM_CONTEXTMENU


2-1187701008
Falameezar
2007-08-21 16:56
2007.09.16
Редактор реестра


15-1187689000
vann
2007-08-21 13:36
2007.09.16
Подскажите компонент для календаря


2-1187980519
led
2007-08-24 22:35
2007.09.16
Edit


2-1187963085
Jimmy
2007-08-24 17:44
2007.09.16
Вывод текста на 256-ти цветном bitma е