Вопросы по Delphi (все версии) - часть 3 - [94] :: Прикладное программирование :: Компьютерный форум Ru.Board
Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста такую проблему:
как надежно определять последние числа месяца, года и т.п.
 
Возьмем для примера месяц:
Дело в том, что функции EndOfTheMonth(Date), он возвращает последнюю секунду месяца, но из-за округления (я так полагаю) мы в итоге нередко получаем первое число следующего месяца, когда делаем что-то типа
DateTimeToString(lStr, 'dd.mm.yy', EndOfTheMonth(Date))
или просто в дебаггере смотрим эту дату и она там целым числом прописана, т.е. без времени
 
пока борюсь заменяя EndOfTheMonth(Date) на StartOfTheDay(EndOfTheMonth(Date))
 
Такой вариант пока работает надежно, кроме того за функциями Start* я такого глюка не замечал, хотя по логике он может выдавать последний день предыдущего периода, вместо первого у текущего..
 
Подскажите плиз, как лучше и надежнее такие штуки обрабатывать :-?

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 11:17 10-03-2008
MsdLamer

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
CopyFile('c:\1\'+ pchar(fn), 'c:\2\', true);

 
ту же самую ошибку выдает..... Incompatible types: 'String' and 'PChar'

Всего записей: 53 | Зарегистр. 26-07-2007 | Отправлено: 11:59 10-03-2008
Minissota



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем дня!
Подскажите, пожалуйста... У меня есть два DateTimePicker, мне нада от одной даты отнять другую и количество дней записать в edit. Как это можно сделать?
Заранее благодарен...

Всего записей: 13 | Зарегистр. 14-12-2007 | Отправлено: 12:32 10-03-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Minissota
DateUtils.DaysBetween/DaySpan ;)

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 12:41 10-03-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
MsdLamer

Код:
CopyFile(pchar('c:\1\' + fn), 'c:\2\', true);

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 14:57 10-03-2008
Minissota



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xy
Спасибо...

Всего записей: 13 | Зарегистр. 14-12-2007 | Отправлено: 17:26 10-03-2008
vidic777



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Jokerjar79

Цитата:
это на С.

Да, сорри, писал ночью ответ и недоглядел , вопрос был по Object Pascal.  

Всего записей: 1313 | Зарегистр. 16-02-2005 | Отправлено: 19:41 10-03-2008
Minissota



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как сделать прокрутку строк БД скролером мыши с использованием DBGrid????
Если пытаться прокрутить строки таблицы, выводимую через DBGrid, с помощью скроллера мыши, перемещается только курсор DBGrid'а а позиция в таблице остается неизменной. Искуственно ее крутить тоже не получается - событие формы OnMouseWheel при использовании DBGrid почему-то не вызывается.  
Может кто-нибудь знает как связать курсор DBGrid с DataSet'ом для такого случая????
Заранее благодарен!!!

Всего записей: 13 | Зарегистр. 14-12-2007 | Отправлено: 21:25 10-03-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Minissota
Скачай себе http://www.drkb.ru/ и первым делом туда ;)

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 21:39 10-03-2008
Minissota



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xy
Благодарю, за полезную информацию!!!

Всего записей: 13 | Зарегистр. 14-12-2007 | Отправлено: 21:45 10-03-2008
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xy

Цитата:
как надежно определять последние числа месяца

1 число след месяца - 1 день
DateToStr(StrToDate('01.03.2008')-1)

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 09:03 11-03-2008 | Исправлено: greenpc, 09:11 11-03-2008
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
function DaysInMonth(m,y:integer):integer;
const
  DInMonth: array[1..12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
Begin
  Result:=DInMonth[m];
  if (Y mod 4 = 0) and ((Y mod 100 <> 0) or (Y mod 400 = 0)) //Leap year
  then if M=2 then inc(Result);
End;

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 09:26 11-03-2008
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RostY
есть такая ф-ция DateUtils
function DaysInAMonth(const AYear, AMonth: Word): Word;
xy
формат TDateTime - целая часть дата, а вещественная - время
соотвественно  
DateTimeToString(lStr, 'dd.mm.yy', Trunc(EndOfTheMonth(Date)))  
будет точно давать последний день месяца

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 09:42 11-03-2008 | Исправлено: greenpc, 09:43 11-03-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
greenpc
Фактически Trunc - это и есть StartOfTheDay ;)
DateUtils.pas:

Код:
 
function StartOfTheDay(const AValue: TDateTime): TDateTime;
begin
  Result := Trunc(AValue);
end;
 

 
Спасибо, надеюсь больше не натыкаться на эти грабли :)


----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 10:02 11-03-2008
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Настройки программы хранятся в INI-файле.  
При чтении программа считывает значения ключа (параметра), если ключ не  
существует - она создает его. Хотелось бы к созданному ключу в INI-файле  
добавить комментарий.  
Знаю, что можно оставлять комментарий с помощью ;

Код:
 
[Section]
; Комментарий к KeyName
KeyName=KeyValue
 

Но при записи в INI-файл (при изменении KeyValue) комментарий либо перепутается, либо просто будет удалён, другими словами он не привязан к конкретному ключу.
Какие варианты реализации возможны?

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 11:23 11-03-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skinash

Цитата:
Какие варианты реализации возможны?

 
--следить и таскать за собой ещё парочку...
[Section]
; Комментарий к KeyName
KeyName=KeyValue  
KeyNameComment=KeyValueCommentStr
 
--отказаться от комментариев, не фиг юзерам туда лазить и править
 
--забить на ini и перейти на xml

Всего записей: 25518 | Зарегистр. 06-12-2002 | Отправлено: 11:38 11-03-2008
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
про xml - хорошая мысль. спасибо.

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 11:57 11-03-2008
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
skinash
не за что...
 
если оч сильно всё завязано именно на ini, то ещё можно
сделать отдельную секцию

Код:
[GlobalCommentsSection]
KeyName предназначен для бла-бла-бла и может принимать значения
KeyValue1 -- bla-bla-bla
KeyValue2 -- bla2-bla2-bla2

и её каждый раз переписывать...
или самому каждый раз при сохранении конфига append'ать в его конец такой мини-хелп-блок...

Всего записей: 25518 | Зарегистр. 06-12-2002 | Отправлено: 12:12 11-03-2008
Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А я в таком случае обычно сам руками создаю ini файл с комментариями, а параметры оставляю пустыми. Вкладываю этот ini в инсталлятор. При первом запуске программа заполняет параметры, а комментарии не перемешиваются

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 13:44 11-03-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
--забить на ini и перейти на xml

хм.. а какой класс работает с xml так же просто и доступно как TIniFile + читабельно для ручной настройки :-?


----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 18:32 11-03-2008
   

Страницы: 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru