Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 71

Обнуление значения перед выводом в StringGrid

10.03.2014, 02:49. Показов 1325. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема состоит в том, что есть StringGrid в который заносится интервал времени видео клипа в первый столбец, в определенный интервал заносится число (int S_P++) и прибавляется каждый раз по 1, как сделать чтобы в последующей ячейки (второго столбца), сперва переменная S_P обнулялась и считала заного с 0.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    
    int S_P++; 
 
    Label3->Caption = "SP "  + IntToStr(S_P);
 
    TDateTime time1(Label1->Caption); //текущая позиция в видео клипе
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
 
    for (int i = 1; i < StringGrid4->RowCount - 1; i++)
    {
        TDateTime time2(StringGrid4->Cells[0][i + 1]);
        DecodeTime(time1,hh1,mm1,ss1,ms1);
        DecodeTime(time2,hh2,mm2,ss2,ms2);
        if (hh1 == hh2)
        {
            if (mm1 < mm2)
            {
                StringGrid4->Cells[1][i] = IntToStr(S_P);
                break;
            }
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2014, 02:49
Ответы с готовыми решениями:

Добавление информации в ячейку StringGrid перед выводом в Word
Есть проблемы и просьба, код указанный ниже, создает турнирную таблицу, код отрабатывает нормально, но он создает таблицу только для восьми...

Обнуление массива перед считыванием его из файла
Необходимо сгенерировать три случайных массива в 100 элементов, вывести эти массивы на экран и в текстовый файл, обнулить в памяти массивы,...

Изменение данных перед выводом
Здравствуйте! У меня возникла такая проблема — необходимо перед тем, как выводить данные, полученные через get запрос, обрабатывать их. Вот...

10
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 71
10.03.2014, 03:01  [ТС]
Выглядит это так
Изображения
 
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
11.03.2014, 15:01
Цитата Сообщение от Patr1ck Посмотреть сообщение
как сделать
Вот так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int S_P++; 
 
    Label3->Caption = "SP "  + IntToStr(S_P);
 
    TDateTime time1(Label1->Caption); //текущая позиция в видео клипе
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
 
    for (int i = 1; i < StringGrid4->RowCount - 1; i++)
    {
        TDateTime time2(StringGrid4->Cells[0][i + 1]);
        DecodeTime(time1,hh1,mm1,ss1,ms1);
        DecodeTime(time2,hh2,mm2,ss2,ms2);
        if (hh1 == hh2)
        {
            if (mm1 < mm2)
            {
                StringGrid4->Cells[1][i] = IntToStr(S_P);
                S_P = 0;
                break;
            }
        }
    }
0
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 71
11.03.2014, 17:34  [ТС]
Нет Так будет проходить цикл и записывать в определенный интервал 0... и не будет считать.
Изображения
 
0
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 71
11.03.2014, 21:43  [ТС]
Может вам не понятно, может подробней пояснить задачу?
0
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
12.03.2014, 03:15
Цитата Сообщение от Patr1ck Посмотреть сообщение
Может вам не понятно, может подробней пояснить задачу?
Я еще вчера видел твой вопрос, но нифига не понял и прошел мимо )
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
12.03.2014, 08:37
Цитата Сообщение от +1 Посмотреть сообщение
Я еще вчера видел твой вопрос, но нифига не понял и прошел мимо )
Такая ж фигня. Но я хоть предположил чего-то.

Цитата Сообщение от Patr1ck Посмотреть сообщение
может подробней пояснить задачу?
Да. Будьте добры.
Особенно хотелось бы знать, что значит "определенный интервал" и что считает переменная S_P.
0
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 71
12.03.2014, 16:44  [ТС]
Надо было с этого и начинать)))) Пишу программу которая звучит так "Программа для учета загруженности перекрестка". Переменная S_P содержит число сколько прошло пешеходов на север. Насчет "определенного интервала", у меня есть Panel в которую я вывожу видео клип (при помощи MediaPlayer) и Label в которую я заношу продолжительность видео клипа. Потом в TimePicker (обычный Edit с маской времени 00:00:00) я выбираю позицию откуда буду ввести отсчет (5 минута, 10 минута и т.д.), с этого времени видео клип будет делиться на интервалы по 15 минут до конца клипа и заносится в StringGrid (как было показано на рисунке выше). Вот мне необходимо по нажатию на кнопку переменная S_P (наши пешеходы) заносились в определенную ячейку по определенному времени (то есть если клип на 7 минуте занесется в первую ячейку, если клип идет на 16 минуте занесется во вторую), проблема в том что все заносится правильно только продолжается счет пешеходов дальше, а мне необходимо что в последущей ячейке переменая становилась ноль и начинала считать 1, 2, 3 и т.д. Если что не понятно спрашивайте)))))



Кода на TimePicker.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
TDateTime time1(sTimePicker1->Time);
    TDateTime time2(Label2->Caption); //длина видео клипа
    TDateTime nult("00:00:00");
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
    int x = 0;
 
        if (time1 != nult)
            StringGrid4->Cells[0][++x] = time1.TimeString();
        while (time1 < time2)
        {
            DecodeTime(time1,hh1,mm1,ss1,ms1);
            if (mm1 % 15 == 0)
            {
                StringGrid4->RowCount++;
                StringGrid4->Cells[0][++x] = time1.TimeString();
            }
            TDateTime time3("00:01:00");
            time1 += time3;
        }
        StringGrid4->Cells[0][++x] = time2.TimeString();
Код на кнопку добавления пешехода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    S_P++;
    Label3->Caption = "Север пешеход "  + IntToStr(S_P);
 
    TDateTime time1(Label1->Caption);
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
 
    for (int i = 1; i < StringGrid4->RowCount - 1; i++)
    {
        TDateTime time2(StringGrid4->Cells[0][i + 1]);
        DecodeTime(time1,hh1,mm1,ss1,ms1);
        DecodeTime(time2,hh2,mm2,ss2,ms2);
        if (hh1 == hh2)
        {
            if (mm1 < mm2)
            {
                //next = false;
                S_P = 0;
                StringGrid4->Cells[1][i] = IntToStr(S_P);
                break;
            }
        }
       //next = true;
    }
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
12.03.2014, 19:34
Не совсем понятно (точнее, совсем не понятно), в какой момент должно происходить обнуление.
Однако вот код (пришлось связаться с космосом). Выбирай любой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 int S_P = 0;
    Label3->Caption = "Север пешеход "  + IntToStr(S_P);
 
    TDateTime time1(Label1->Caption);
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
 
    for (int i = 1; i < StringGrid4->RowCount - 1; i++)
    {
        TDateTime time2(StringGrid4->Cells[0][i + 1]);
        DecodeTime(time1,hh1,mm1,ss1,ms1);
        DecodeTime(time2,hh2,mm2,ss2,ms2);
        S_P++;
        if (hh1 == hh2)
        {
            if (mm1 < mm2)
            {
                //next = false;
                StringGrid4->Cells[1][i] = IntToStr(S_P);
                break;
            }
        }
       //next = true;
    }
или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 int S_P;
    S_P++;
    Label3->Caption = "Север пешеход "  + IntToStr(S_P);
 
    TDateTime time1(Label1->Caption);
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
 
    for (int i = 1; i < StringGrid4->RowCount - 1; i++)
    {
        TDateTime time2(StringGrid4->Cells[0][i + 1]);
        DecodeTime(time1,hh1,mm1,ss1,ms1);
        DecodeTime(time2,hh2,mm2,ss2,ms2);
        if (hh1 == hh2)
        {
            if (mm1 < mm2)
            {
                //next = false;
                StringGrid4->Cells[1][i] = IntToStr(S_P);
                S_P = 0;
                break;
            }
        }
       //next = true;
    }
0
0 / 0 / 1
Регистрация: 06.01.2012
Сообщений: 71
12.03.2014, 22:14  [ТС]
Не один не подходит Я уже не знаю как вам объяснить.

Попробуй так объяснить, если клип идет в промежутке времени от 00:00:00 до 00:15:00 тогда заносится число (S_P) в первую ячейку при каждом нажатие прибавляется 1, 2, 3, 4 и т.д. Если пользователь перемотает на 00:16:00 тогда заносится во вторую ячейку в промежуток времени от 00:15:00 до 00:30:00.

Суть в том что он частично работает, если в первом промежутке уже 4 то в следующем будет 5,6,7 и т.д. (сколько раз нажму на кнопку), а мне надо чтобы он сбивал счет и во втором промежутке начинал с нуля считать 1,2,3.... и так до конца промежутков (смотря сколько идет видео клип).
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,014
12.03.2014, 23:33
Работоспособность не проверял, могут быть ошибки (но идею сможешь уловить).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
TDateTime time1(sTimePicker1->Time);
    TDateTime time2(Label2->Caption); //длина видео клипа
    TDateTime nult("00:00:00");
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
    String state = "";  // переменная для хранения состояний интервалов
    int x = 0;
 
        if (time1 != nult)
            StringGrid4->Cells[0][++x] = time1.TimeString();
        while (time1 < time2)
        {
            DecodeTime(time1,hh1,mm1,ss1,ms1);
            if (mm1 % 15 == 0)
            {
                StringGrid4->RowCount++;
                StringGrid4->Cells[0][++x] = time1.TimeString();
                state = state + "0";  // "наращиваем" длину переменной в зависимости от кол-ва строк таблицы
            }
            TDateTime time3("00:01:00");
            time1 += time3;
        }
        StringGrid4->Cells[0][++x] = time2.TimeString();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
S_P++;
    Label3->Caption = "Север пешеход "  + IntToStr(S_P);
 
    TDateTime time1(Label1->Caption);
    unsigned short hh1,mm1,ss1,ms1,hh2,mm2,ss2,ms2;
 
    for (int i = 1; i < StringGrid4->RowCount - 1; i++)  // почему тут -1 (последняя строка остается пустой)?
    {
        TDateTime time2(StringGrid4->Cells[0][i + 1]);
        DecodeTime(time1,hh1,mm1,ss1,ms1);
        DecodeTime(time2,hh2,mm2,ss2,ms2);
        if (hh1 == hh2)
        {
            if (mm1 < mm2)
            {
                // с помощью Tag и state учитывается (вроде как) ситуация с возможностью
                // повторного выбора интервала; но начинать заполнение нужно c 1-ого
                // интервала из-за начального значения Tag = 0 
                if (Tag != i-1)
                {
                  state[i] = '1';
                  state[Tag+1] = '0';
                }
                if (state[i] == '0')
                {
                  state[i] = '1';
                  S_P = 1;
                }
                Tag = i-1;
                StringGrid4->Cells[1][i] = IntToStr(S_P);
                break;
            }
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.03.2014, 23:33
Помогаю со студенческими работами здесь

Мусор перед выводом строки
Строка выводится, но перед ней где-то 20 каких-то рандомных символов из таблицы ASCII Как от этого избавиться и с чем это связано? ...

Уменьшение изображения перед выводом
Доброго времени суток ув.программисты! Такая ситуация: есть список файлов выводящийся на странице из БД, рядом с именем и описанием...

Задержка перед выводом текста
Здравствуйте. Как сделать так, что бы, элемент отображался по истечению какого-то времени? Например, в Form1_Load. Нужно использовать...

Подскажите с выводом из stringgrid
Доброе время суток! подскажите пожалуйста как можно добавитьполя из stringgrid в memo только там должны быть повторяющийся текст в каждой...

Изменить даные перед выводом в DataGrid
Перед выводом данных из БД их надо расшифровать, так как туда они попадают в зашифрованом виде, т.е. перед вывод надо наложить на каждую...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru