Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Сравнение строк memo и их сложение


Автор: cezer987 12.5.2013, 16:57
Всем добрый вечер. подскажите пожалуйста, есть memo в него загружен текст: 

User, 192.168.0.103, 18:39:15, 3642, 1, 2, 0, 0
User, 192.168.0.103, 18:39:15, 3642, 3, 4, 0, 0
Admin, 192.168.0.103, 18:39:15, 3642, 2, 6, 0, 0
Admin, 192.168.0.103, 18:39:15, 3642, 7, 8, 0, 0

Нужно разбить каждую строку на несколько частей. И самое главное при считывании строк Если Имя повторяется то прибавлять 5 и 6й столбец, одного и того же имени.

теперь на примере: 
Имеется 4е строки которые описаны выше, в первых двух имя повторяется это значит что 5 и 6й столбец прибавляем между собой label5.caption:=1+3 и label6.caption:=2+4. Сколько строк за ранее не известно каждый раз прибавляются и имена могут чередоваться.

Как разбить строки нашёл, а как сделать так чтоб он по строчно разбивал складывал и тд и тп ума не приложу.

Автор: DarkProg 12.5.2013, 18:21
Что-то я не совсем понял задачу.

Опишите выходную последовательность которая должна получаться. Для данного примера.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id518fa0696ccc198a1d000002#findElement_E7045_518fb3786ccc192764004d06_0

Автор: cezer987 12.5.2013, 18:54
Цитата(DarkProg @ 12.5.2013,  18:21)
Что-то я не совсем понял задачу.

Опишите выходную последовательность которая должна получаться. Для данного примера.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id518fa0696ccc198a1d000002#findElement_E7045_518fb3786ccc192764004d06_0


Сканируем memo по строчно
в первой строке ищем значение до первой запятой User Admin или другие пользователи....
вообщем суть такая в мемо текст нужно будет запихать строки по столбцам в грид... в memo очень много пользователей и они повторяются и чередуются нужно для каждого пользователя вывести общее число сложив 5 и 6 столбец...
упрощённый вариант 

User, 1, 2
User, 1, 5
Admin, 1, 8
Vasya, 6, 9
Admin, 9, 5
Vasya, 10, 5

итог:
User | 2 | 7
Admin | 10 | 13
Vasya | 16 | 14

Автор: Poseidon 12.5.2013, 21:46
cezer987, что тебе нужно - понятно. Теперь хотелось бы разобраться, что именно у тебя не получается? Ты ведь не думаешь, что тут все сидят и ждут кому бы это написать код с 0, правда?

Автор: cezer987 12.5.2013, 21:56
Цитата(Poseidon @ 12.5.2013,  21:46)
cezer987, что тебе нужно - понятно. Теперь хотелось бы разобраться, что именно у тебя не получается? Ты ведь не думаешь, что тут все сидят и ждут кому бы это написать код с 0, правда?

Понял исправляюсь) Вот код уже готовый осталось только сделать так чтоб данные заносились в dbgrid но не как не выходит(((
Код

procedure TForm1.sButton2Click(Sender: TObject);
var
 q,w,e:TStrings;
 i: integer;
begin
 q:= TStringList.Create;
 w:= TStringList.Create;
 e:= TStringList.Create;
with text.Lines do
 for i:=0 to Count-1 do
  begin
   q.DelimitedText:= Strings[i];
   if q.count>7 then w.values[q[0]]:= IntToStr(StrToIntDef(w.values[q[0]],0)+ StrToInt(q[6]));
   if q.count>8 then e.values[q[0]]:= IntToStr(StrToIntDef(e.values[q[0]],0)+ StrToInt(q[7]));
  end;
 Label1.Caption:=w.Text;
 Label2.Caption:=e.Text;
 sdbgrid1.Columns[2].PickList.text:=(w.Text);
 sdbgrid1.Refresh;
 q.Free;
 w.Free;
 e.Free;
 end;


Сейчас он выводит данные вот так

label1.caption:=(User1=Сложанные цифры 7й колонки пользователя User1)
Label2.caption:=(User1=Сложенные цифры 8й колонки пользователя user1)

Надо как то прикруть к grid чтоб получалось вот так:
Имя    |                                      Цифры 1                                                |                                           Цифры 2                                          |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
User1 | (User1=Сложанные цифры 7й колонки пользователя User1) | (User1=Сложенные цифры 8й колонки пользователя user1) |
Admin | (Admin=Сложанные цифры 7й колонки пользователя User1) | (Admin=Сложенные цифры 8й колонки пользователя user1) |
Root   |   (Root=Сложанные цифры 7й колонки пользователя User1)   | (Root=Сложенные цифры 8й колонки пользователя user1) |

Вот без излишеств:

User   | 2   | 7   | 
Admin | 10 | 13 |
Root   | 16 | 14 |

Автор: Poseidon 12.5.2013, 22:29
Цитата(cezer987 @  12.5.2013,  21:56 Найти цитируемый пост)
Вот код уже готовый осталось только сделать так чтоб данные заносились в dbgrid но не как не выходит(((
Что бы данные отобразились в DBGrid, нужно их занести в базу данных, т.к. DBGrid предназначен для отображение таблицы из базы. Если у тебя вообще базой данных не пахнет, то используй StringGrid.

Если все же ты работаешь с базой, то почитай информацию про запросы Insert и Update и про компоненты *Query

Если базы нет, то почитай про StringGrid и свойство Cells

Автор: northener 13.5.2013, 01:11
Цитата(cezer987 @  12.5.2013,  21:56 Найти цитируемый пост)
 Вот код уже готовый осталось только сделать 

Осталось только "начать и кончить"!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)