Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 1
Регистрация: 11.11.2014
Сообщений: 34
1

Промежуток между датами в StringGrid

17.11.2014, 12:40. Показов 1485. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Stringgrid заполнен на 10 строк датами

Delphi
1
2
3
4
5
6
7
procedure TForm2.Button4Click(Sender: TObject);
var
i:Integer;
begin
  for i:=1 to 50 do
StringGrid1.Cells[2,i]:=(IntToStr(YearsBetween((StrToDateTime(Edt22.Text)),(StrToDateTime(StringGrid1.Cells[1,i])))));
end;
Вышибает с ошибкой '' is not a valid date and time.

Если написать
Delphi
1
for i:=1 to 10 do
то считает как надо. В будущем таблица будет заполнятся пользователем больше чем на 10 строк.Подскажите как бороться с этим.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2014, 12:40
Ответы с готовыми решениями:

Расчёт разницы между датами в StringGrid
Доброго времени, помогите пожалуйста с расчётами. Имеется StringGrid c данными. Фото ниже. При нажатие на кнопку, хотел посчитать разницу...

Выбрать даты в StringGrid находящиеся между двумя другими датами
Добрый день. Подскажите пожалуйста как решить следующую задачу. У меня имеется две даты: дата начала периода и дата конца периода...

Промежуток между датами
Есть две даты в виде String переменных. String one = '01.01.03'; String two = '15.01.03'; Надо в JTextArea вывести даты по порядку в...

7
Модератор
 Аватар для D1973
9692 / 6294 / 2435
Регистрация: 21.01.2014
Сообщений: 26,851
Записей в блоге: 3
17.11.2014, 12:51 2
Первое: Не делать пустые строки, а добавлять их в Грид при необходимости, типа такого вот кода
Delphi
1
StringGrid1.RowCount := StringGrid1.RowCount + 1;
Второе: Делать проверку на заполненность ячейки грида...
Delphi
1
if not StringGrid1.Cells[1, i].IsEmpty then ...
0
0 / 0 / 1
Регистрация: 11.11.2014
Сообщений: 34
17.11.2014, 13:38  [ТС] 3
Вот со вторым не до конца понял.
Типо
Delphi
1
2
   if not StringGrid1.Cells[1,i]:=('') then
          Exit;
??
0
Модератор
 Аватар для D1973
9692 / 6294 / 2435
Регистрация: 21.01.2014
Сообщений: 26,851
Записей в блоге: 3
17.11.2014, 14:32 4
Почему Exit? Если ячейка в первой колонке и i-той строке не пустая - заполняем ячейку во второй колонке иначе просто ничего не делаем. Вот примерно так как-то...
Delphi
1
2
3
for i:=1 to 50 do
 if not StringGrid1.Cells[1, i].IsEmpty 
  then StringGrid1.Cells[2,i]:=(IntToStr(YearsBetween((StrToDateTime(Edt22.Text)),(StrToDateTime(StringGrid1.Cells[1,i])))));
1
0 / 0 / 1
Регистрация: 11.11.2014
Сообщений: 34
17.11.2014, 16:27  [ТС] 5
Честно я новичок и я не понимаю почему ругается IsEmpty
Delphi
1
if not StringGrid1.Cells[1, i].IsEmpty
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33091 / 21388 / 8216
Регистрация: 22.10.2011
Сообщений: 36,715
Записей в блоге: 9
17.11.2014, 16:28 6
Лучший ответ Сообщение было отмечено Wandalin как решение

Решение

D1973, .IsEmpty - это из Билдера, в Дельфи - проверка на пустую строку. Но лучше - опять же через функцию TryStrToDateTime:
Delphi
1
2
3
4
5
6
7
8
var
  i: integer;
  dt: TDateTime;
begin
  for i := 1 to 50 do
    if TryStrToDateTime(StringGrid1.Cells[1, i], dt) then
      StringGrid1.Cells[2, i] := IntToStr(YearsBetween(StrToDateTime(edt22.Text), dt));
end;
Не пренебрегайте этими функциями, они не просто так сделаны, очень удобно ими пользоваться...
2
0 / 0 / 1
Регистрация: 11.11.2014
Сообщений: 34
17.11.2014, 16:48  [ТС] 7
Спасибо! Выручили. А можно сделать чтобы вычисляло этот промежуток от нынешней даты при вводе даты в ячейку?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33091 / 21388 / 8216
Регистрация: 22.10.2011
Сообщений: 36,715
Записей в блоге: 9
17.11.2014, 17:32 8
Лучший ответ Сообщение было отмечено Wandalin как решение

Решение

Ну, значит, замени значение из Edit-а на Today:
Delphi
7
StringGrid1.Cells[2, i] := IntToStr(YearsBetween(Today, dt));
А если надо именно при вводе даты в ячейку первого столбца - то вот такой обработчик на OnSetEditText повесь:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
  const Value: string);
var
  grid: TStringGrid;
  dt: TDateTime;
begin
  grid := Sender as TStringGrid;
 
  if grid.EditorMode then
    Exit;
  if ACol = 1 then
  begin
    if TryStrToDateTime(Value, dt) then
      grid.Cells[2, ARow] := IntToStr(YearsBetween(Today, dt));
  end;
end;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2014, 17:32
Помогаю со студенческими работами здесь

Заполнить StringGrid датами с первого числа по конец месяца
Доброго времени суток! помогите со следующей задачей.... нужно заполнить Stringrid датами месяца с первого числа по конец месяца c...

Промежуток между блоками таблицы
Добрый день! Есть элементарная таблица состоящая из двух строк по 3 ячейки каждая. Заливаю в бэкграунд ячейки картинки и указываю размеры...

SVG: промежуток между элементами
Проблема. Координаты границ совпадают (т. е. должно быть впритык), а промежуток все равно есть. ...

Промежуток времени между функциями
У меня задача написать программируемый кликер. Мне не хватает только отделения функций временем. Мне нужно как-то это реализовать.

Убрать промежуток между div и li
Есть вот такой кусок страницы: <div id="test"> <div class="jumbotron"> <h3>Teг...


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Winforstrap или красявый дизайн своими руками на HTML+JS+Winform­s
anomal6 04.03.2025
Сидел тут вечером ковырял проект на MAUI, и как же глупо создаются пакеты MSIX и система обновлений пакета публикации, но не об этом. Бывает нужен современный дизайн программы а писать на MAUI,. . .
Формат данных для симуляции физики, посредством распространённы­­­­х не обученных моделей.
Hrethgir 04.03.2025
Что-то как-то снова потерялось, зато катангенсы закатангесились в одном сообщении. На днях писал, что планирую для работы апгрейдить (на этот раз удачно) девайс для работы (конкретно - здоровья для,. . .
Концепция variadic
CoderHuligan 04.03.2025
Мне не очень нравится (а кому это нравится?) что у нас есть отдельно компилятор, отдельно линковщик, причем со своим собственным командным языком. При этом усложнении надо знать помимо языка. . .
Java Record или Kotlin Data Class: что лучше для неизменяемых данных
Wired 04.03.2025
Java Record и Kotlin Data Class — два мощных инструмента для обуздания неизменяемых структур данных, каждый со своим уникальным подходом к решению этой задачи. История их появления весьма. . .
Создание производительны­­­х API с Java и gRPC
Wired 04.03.2025
В мире микросервисной разработки вопрос производительности часто становится краеугольным камнем. И хотя REST API давно завоевал сердца разработчиков своей простотой и интуитивностью, при высоких. . .
Что нового в JDK 24
Wired 04.03.2025
JDK 24 — это настоящий прорыв в эволюции Java, который кардинально меняет правила игры. В этом релизе разработчики Oracle наконец-то довели до ума множество критически важных улучшений в. . .
Разработка блокчейн с использованием Java: смарт-контракты и dApp
Wired 04.03.2025
Погружаясь в мир блокчейн-разработки на Java, разработчик получает доступ к внушительному арсеналу инструментов. В отличие от Solidity, который "заперт" в экосистеме Ethereum, Java предоставляет. . .
WebAssembly в Kubernetes
stackOverflow 03.03.2025
В современной экосистеме облачных технологий WebAssembly (Wasm) становится все более значимым компонентом, предлагая уникальный подход к выполнению кода в распределенных системах. Эта технология. . .
GitHub Actions или Jenkins: Выбираем CI/CD платформу
stackOverflow 03.03.2025
Непрерывная интеграция и развертывание (CI/ CD) изменили подход к разработке программного обеспечения, превратив его в бесшовный процесс от написания кода до развертывания в продакшн. GitHub Actions и. . .
Автоматизация тестирования Pull Request в Kubernetes: Интеграция с GitHub Actions и GKE
stackOverflow 03.03.2025
Масштабные проекты с использованием Kubernetes требуют надежной системы тестирования изменений перед их внедрением в продакшн-среду. Традиционный подход с ручной проверкой Pull Request не справляется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru