0
Исправлен

отображение даты

Ярослaв 12 месяцев назад в Ошибки обновлен 12 месяцев назад 11

В мнемосхеме стоит панель, к которой привязан канал типа DataTime

Image 1535

  на мониторе идёт отображение

Image 1536

  причём команда DateTimeToStr выдаёт то "дата время", то "дата время время"  вот пример правильного и неправильного формирования при одном и том же скрипте.

Image 1539

Image 1538

Чем это может быть вызвано и как с этим бороться???

Ответ

+1
Ответ
Исправлен

День добрый.

Исправлено. 

ver. 4.7.7.79

На рассмотрении

День добрый.

Штатное поведение функции DateTimeToStr - при преобразовании даты/времени в строку - если время равно 0:00:00 то будет выведена только дата.

http://www.delphibasics.ru/DateTimeToStr.php

Пришлите текст скрипта нам на почту для анализа.

Добрый день, смущает не выдача даты, а то что после даты и время ещё раз повторяется время просто при отображении TdataTime на панели и иногда в формируемом выпадающем списке.

Место формирования выделено в скрипте жирным подчёркнутым  шрифтом.

Спасибо!

Var

begindate, enddate, date: TDateTime;

reccount,ryi,rvi,ry,rv: integer;

value: integer;

stream: TMemoryStream;

error: word;

ss,s:string;

masdv, masdy,masdr: array [0..1000] of TdateTime;

masvv,masvy: array [0..1000] of integer;

begin

begindate := ReadValue('дата нач');

// конечная дата

enddate := ReadValue('дата кон');

// считаем данные из БД в буфер

stream.clear;

error := StreamReadFromDatabase(begindate, enddate,'ваг вышли', stream);


ry := -1; // записей по выходу

if error = 0 then begin

reccount := GetCountRecordToStream(stream);

while GetValueFromStream(stream, date, value) do begin

inc(ry); if ry>1000 then ry:=1000;

masdy[ry]:=date; //дата выхода

masvY[ry]:=value; //номер вагонетки вышедшей

masdr[ry]:=0; //пока нет захода

end;

// дата начала

begindate := masdy[0]-1; // надо за 4 дня назад, пока 1 !!!

stream.clear;

error := StreamReadFromDatabase(begindate, enddate,'ваг вошли', stream);

rv := -1; //записей по входу

if error = 0 then begin

while GetValueFromStream(stream, date, value) do begin

inc(rv); if rv>1000 then rv:=1000;

masdv[rv]:=date; //дата заходаа

masvv[rv]:=value; //номер вагонетки зашедшей

end;

for ryi:=ry downto 0 do begin // поиск назад в вых

for rvi:=rv downto 0 do begin // поиск назад в заходе

if (masvy[ryi]=masvv[rvi]) then begin //найден заход

masdr[ryi]:=masdv[rvi];// когда заехала

break;

end;

end;

end;

end; //по заходу

end;// по выходу

ss:='';

for ryi:=ry downto 0 do begin// формирование списка

if masdr[ryi]=0 then s:='; Не вышел' else begin

s:=dateTimeToStr( masdy[ryi])+'; Всего:'+inttoStr(round((masdy[ryi]-masdr[ryi])*24*3600))+'сек';

end;

ss:=ss+intToStr(ryi+1)+' №'+IntToStr(masvy[ryi])+' '+DateTimeToStr(masdr[ryi])+'-'+s+',';

end;

SetComboBox('толчок22','ВыпадающийСписок',ss,0,true);

end.

Добрый вечер.

Не смогли у себя повторить такого поведения системы (какая версия СИМП установлена), давайте немного доработаем скрипт, и проверим:

var
  DTdy,DTdr: string;
...

for ryi := ry downto 0 do
begin // формирование списка DTdy := dateTimeToStr(masdy[ryi]);
DTdr := dateTimeToStr(masdr[ryi]); if masdr[ryi] = 0 then
s := '; Не вышел'
else
begin
s := DTdy + '; Всего:' +
inttoStr(round((masdy[ryi] - masdr[ryi]) * 24 * 3600)) + 'сек';
end;

ss := ss + inttoStr(ryi + 1) + ' №' + inttoStr(masvY[ryi]) + ' ' +
DTdr + '-' + s + ',';
end;

Добрый вечер.

Сможете проект на почту прислать? 

Добрый день!

Та же ерунда - время повторяется дважды просто на панелях и при формировании списка. С вашими изменениями. Проект и инструкцию прикладываю

Запустить мнемо "толчок22", 

нажать несколько раз (~10-12)  кн "толчок"

Подождать несколько секунд для записи в БД

нажать кн "сейчас"

нажать кн."список вышедших"

убедиться в правильной записи в выпадающий список

выбрать строчку в списке

Нажать "диаграмма по вагонетке 1", 

Повторить со "списка вышедших", убедиться в правильности списка.

На рис. все двойные отображения времени отмечены рамочками и стрелками.

"Список вышедших" запускает скрипт канала "Список"

Демо проект.slz 

День добрый.

Проблему локализовали, исправляем. 

Симп, выложите пожалуйста её решение.

День добрый.

Безусловно как задача будет решена, то мы выложим в общий доступ обновление.

+1
Ответ
Исправлен

День добрый.

Исправлено. 

ver. 4.7.7.79

Спасибо!!!
Скачал, обновил, всё работает прекрасно и, похоже, даже быстрей.

Сервис поддержки клиентов работает на платформе UserEcho