0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 6
1

StringGrid и подсчет одинаковых значений в строке

21.05.2015, 14:59. Показов 2293. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
У меня стоит задача примерно такая:
1. в первой строке StringGrid1 кликаю правой кнопкой мыши по ячейке и записываю в нее значение
2. если это "УП", то в ячейке StringGrid2 [1,1] появляется 1-ца
3. если "УП" во всем StringGrid1 я натыкала 5, то в в ячейке StringGrid2 [1,1] появляется 5
4. если я где-нибудь ее стерла, то в ячейке StringGrid2 [1,1] появляется 4
5. если я ввела например "ПП", то допустим в StringGrid2 в ячейке [2,1] появляется 1-ца
6. если все тоже самое ввела во второй строке StringGrid1, то количество одинаковых значений уже выводится в
StringGrid2 [2,1] и [2,2] соответственно
и т.д.

У меня есть код, но что то не выходит.. не подскажете в чем ошибка?
может я вообще что то не так делаю..

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
var
i,j:integer;
s:string;
begin
 for i:=1 to stringgrid1.colcount-9 do
 for j:=1 to stringgrid1.rowcount-1 do
    s:=s+stringgrid1.cells[i,j];
for i:=1 to length(s) do
 begin
  if(s[i]='УП') then stringgrid2.cells[1,1]:=IntToStr(StrToInt(stringgrid1.cells[i,1])+1);
  if(s[i]='ПП') then stringgrid2.cells[2,1]:=IntToStr(StrToInt(stringgrid1.cells[i,1])+1);
 end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2015, 14:59
Ответы с готовыми решениями:

Подсчет одинаковых значений
Здравствуйте уважаемые гуру. Подскажите начинающему... Есть такой запрос... Надо...

Stringgrid подсчет значений
есть таблица stringgrid в ней столбец с различными словами , нужно подсчитать их и перезаписать в...

Подсчет количества одинаковых значений
Здравствуйте, подскажите пожалуйста, какой функцией нужно воспользоваться, что бы можно было в...

Подсчитать количество одинаковых значений в StringGrid
ДУмал дооолго не вернусь = )) Есть таблица 1 2 6 , kby 2 2 5 [hty 3 4 4 [hty 3 4 3 [hty 3...

10
22 / 22 / 50
Регистрация: 18.05.2015
Сообщений: 89
21.05.2015, 15:53 2
Цитата Сообщение от tuppy Посмотреть сообщение
Delphi
1
2
if(s[i]='УП') then stringgrid2.cells[1,1]:=IntToStr(StrToInt(stringgrid1.cells[i,1])+1);
 if(s[i]='ПП') then stringgrid2.cells[2,1]:=IntToStr(StrToInt(stringgrid1.cells[i,1])+1);
Ошибка, надо не cells[i,1], а cells[1,1]:
Delphi
1
2
if(s[i]='УП') then stringgrid2.cells[1,1]:=IntToStr(StrToInt(stringgrid1.cells[1,1])+1);
 if(s[i]='ПП') then stringgrid2.cells[2,1]:=IntToStr(StrToInt(stringgrid1.cells[2,1])+1);
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 6
21.05.2015, 16:02  [ТС] 3
так тоже делала.. все равно не срабатывает почему то
0
22 / 22 / 50
Регистрация: 18.05.2015
Сообщений: 89
21.05.2015, 16:05 4
Ещё одна опечатка: stringgrid2, а не stringgrid1:

Delphi
1
2
if(s[i]='УП') then stringgrid2.cells[1,1]:=IntToStr(StrToInt(stringgrid2.cells[1,1])+1);
 if(s[i]='ПП') then stringgrid2.cells[2,1]:=IntToStr(StrToInt(stringgrid2.cells[2,1])+1);
Добавлено через 53 секунды
и ещё не s:=s+stringgrid1.cells[i,j];, а

Delphi
1
s:=s+stringgrid1.cells[i,j]+#13#10;
0
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 6
21.05.2015, 16:09  [ТС] 5
все равно не выводит(
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,738
21.05.2015, 16:38 6
как 1 символ может быть равен двум?
Delphi
1
s[i]='УП'
Добавлено через 9 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var
i,j:integer;
s:TStringList;
begin
s:=TstringList.Create;
 for i:=1 to stringgrid1.colcount-9 do
 for j:=1 to stringgrid1.rowcount-1 do
    s.add(stringgrid1.cells[i,j]);
for i:=0 to s.count-1 do
 begin
  if(s.strings[i]='УП') then stringgrid2.cells[1,1]:=IntToStr(StrToInt(stringgrid1.cells[i,1])+1);
  if(s.strings[i]='ПП') then stringgrid2.cells[2,1]:=IntToStr(StrToInt(stringgrid1.cells[i,1])+1);
 end;
FreeAndNil(s)
1
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 6
21.05.2015, 17:05  [ТС] 7
теперь получается так.. если есть например в одной ячейке значение УП или ПП, то во второй грид выдается значение 2, если же заполнены несколько ячеек то ошибка: is not a valid integer value
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,738
21.05.2015, 17:51 8
Лучший ответ Сообщение было отмечено tuppy как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  var
  COUNTYP,COUNTPP,i,j:integer;
  begin
   for i:=0 to stringgrid1.colcount-1 do begin
     COUNTYP:=0;
     COUNTPP:=0;
   for j:=0 to stringgrid1.rowcount-1 do begin
      if StringGrid1.Cells[j,i]='УП' then
        inc(COUNTYP);
      if StringGrid1.Cells[j,i]='ПП' then
        inc(COUNTPP);
 
      if j=stringgrid1.rowcount-1 then begin
          stringgrid2.Cells[0,i]:=inttostr(COUNTYP);
          stringgrid2.Cells[2,i]:=inttostr(COUNTPP);
      end;
   end;
 end;
end;
1
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 6
21.05.2015, 19:05  [ТС] 9
Вы меня извините, но видимо эта процедура меня не любит... работает, но не верно
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,738
21.05.2015, 19:17 10
Все работает, в 1 стрингрид пишешь УП и ПП куда хочешь, во второй она выведе сколько их на той или иной строчке, обязательно большими буквами
1
0 / 0 / 0
Регистрация: 16.04.2015
Сообщений: 6
21.05.2015, 19:42  [ТС] 11
он считает если они рядом и начало ведется с первой ячейки.. а если после ячеек с этим значением есть пустые или с другим обозначением, то он перестает считать..

Добавлено через 11 минут
Я не знаю что за мистика.. но заработало! Спасибо за терпение и помощь
0
21.05.2015, 19:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2015, 19:42
Помогаю со студенческими работами здесь

Подсчет одинаковых букв в строке
Есть график задействований, в строках напротив фамилий стоят условные обозначения типа Р; Н; В;...

Подсчет одинаковых символов в строке
Подсчет одинаковых символов в строке

Подсчет одинаковых значений выдает ошибку
$os = array(); $result = mysqli_query($bd, "SELECT * FROM messages WHERE id2='".$_SESSION."'");...

Количество одинаковых чисел в строке StringGrid
Помогите пожалуйста решить задачку. Есть стринг грид заполнений примерно так 2,5 2,5 2,5 2,5 5 7...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru