|
Вопрос # 1 298/ вопрос открыт / |
|
Здравствуйте, эксперты!
почему при компиляции 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.
Ответ #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: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);
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|