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