| 
| 
 | Вопрос # 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);
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |