Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 1 298

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, эксперты!
почему при компиляции delphi 7 ругается на строчку типа

StrToDateTime(MinDate, 'yyyy-mm-dd');

пишет :
[Error] Unit2.pas(356): There is no overloaded version of 'StrToDate' that can be called with these arguments

Сидаровский Георгий Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Сидаровский Георгий (статус: Посетитель)
Вопрос отправлен: 29 января 2008, 13:24
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович

Здравствуйте, Сидаровский Георгий - 847!
Вероятно MinDate имеет какой-то тип отличный от String.

Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 29 января 2008, 13:32
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: min@y™

Читай внимательнее хэлп, т.к. это наиболее полная база знаний по программированию на Delphi.
В частности, про функцию StrToDateTime():

function StrToDateTime(const S: string): TDateTime; overload;
function StrToDateTime(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload;

Функция в любом случае должна ВОЗВРАЩАТЬ результат типа TDateTime как результат преобразования СТРОКИ, например такой:

uses
  SysUtils;
 
var
  dt: TDateTime;
 
begin
  dt:= StrToDateTime('30.01.2008');
end;

Вторая функция имеет второй аргумент const FormatSettings: TFormatSettings. Смотрим справку - это структура, задающая начальный контекст форматирования входной строки:

type
 
  TFormatSettings = record
    CurrencyFormat: Byte;
    NegCurrFormat: Byte;
    ThousandSeparator: Char;
    DecimalSeparator: Char;
    CurrencyDecimals: Byte;
    DateSeparator: Char;
    TimeSeparator: Char;
    ListSeparator: Char;
    CurrencyString: string;
    ShortDateFormat: string;
    LongDateFormat: string;
    TimeAMString: string;
    TimePMString: string;
    ShortTimeFormat: string;
    LongTimeFormat: string;
    ShortMonthNames: array[1..12] of string;
    LongMonthNames: array[1..12] of string;
    ShortDayNames: array[1..7] of string;
    LongDayNames: array[1..7] of string;
    TwoDigitYearCenturyWindow: Word;
  end;

З.Ы. Ну, и, конечно, в справке есть пример использования данной функции:

This example sets the value of a date-time field based on the value typed by the user into an edit control.

procedure TForm1.Button1Click(Sender: TObject);
var
  ADateAndTime: TDateTime;
begin
  ADateAndTime := StrToDateTime(Edit1.Text);
  Table1.FieldByName('TimeStamp').AsDateTime := ADateAndTime;
end;

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 30 января 2008, 08:21


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 29 января 2008, 14:57; участников в обсуждении: 2.
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 29 января 2008, 13:36 [#1]:

нет
var
MinDate, MaxDate : string;
Помфюк Владимир Степанович

Помфюк Владимир Степанович (статус: Абитуриент), 29 января 2008, 13:43 [#2]:

Sorry, лопухнулся
function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime;
а
TFormatSettings = record
CurrencyFormat: Byte;
NegCurrFormat: Byte;
ThousandSeparator: Char;
DecimalSeparator: Char;
CurrencyDecimals: Byte;
DateSeparator: Char;
TimeSeparator: Char;
ListSeparator: Char;
CurrencyString: string;
ShortDateFormat: string;
LongDateFormat: string;
TimeAMString: string;
TimePMString: string;
ShortTimeFormat: string;
LongTimeFormat: string;
ShortMonthNames: array[1..12] of string;
LongMonthNames: array[1..12] of string;
ShortDayNames: array[1..7] of string;
LongDayNames: array[1..7] of string;
TwoDigitYearCenturyWindow: Word;
end;
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 29 января 2008, 13:57 [#3]:

тоесть этот 'yyyy-mm-dd' формат не правильный ? а как же это записать
если из строки вида '2008-1-28' мне нужна дата 28-01-2008
Помфюк Владимир Степанович

Помфюк Владимир Степанович (статус: Абитуриент), 29 января 2008, 14:02 [#4]:

Попробуйте так:
var
FS:TFormatSettings;
.....
with fs do begin
DateSeparator:='-';
ShortDateFormat:='yyyy-mm-dd';
LongDateFormat:='yyyy-mm-dd';
end;
dt=StrToDate(MinDate,FS);
Сидаровский Георгий

Сидаровский Георгий (статус: Посетитель), 29 января 2008, 14:57 [#5]:

Спасибо помогло :)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 17 августа 2017, 18:23
Выполнено за 0.05 сек.
Рейтинг@Mail.ru