Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вроде простой вопрос, а ответа никто не знает! [D6, IB5.x]


Ser_Grey ©   (2002-02-01 09:08:00) 

Как получить из даты фората "dd.mm.yyyy hh.mm.ss" Дату формата: "dd.mm.yyyy"?
Я пытаюсь так:
udfSub_Str(Date,1,11), но при этом удаляется первая буква если там "0"?
Потом пытался создвть свою функцию:
Function My_Copy(My_Date: PChar) : PChar;
var s: string;
Begin
s:= Copy(My_Date,1,11);
Result:=@s[1];
end;
Резутьтат тот же.
Может кто подскажет другой способ?


Alexandr   (2002-02-01 12:59:00) [1]

2Serg_Grey:
ну вы, блин, даете.
Нет слов.

1) База в date не хранит строковое представление, а хранит в float.
2) в UDF Rfunc есть функция для форматирования даты.
3) То, что FreeUDFLib не компилируется это проблема твоих кривых рук, впрочем что и так очевидно в твоих действиях.

P.S. Злой я сегодня


Ser_Grey   (2002-02-01 11:12:00) [2]

Все, что с делфей связанно, было просто UDF для IB базы.
База, оказывается просто в Date не хранит первый символ, если он="0".
Всем спасибо окончательное решение было:
s:=Copy(Date,1,11)+#0;
if Pos("-",s)=2 Then
S:= "0"+s;
Result:=@s[1];
Подсказали :) Сам я никак.


DenK_vrtz   (2002-02-01 11:10:00) [3]

Привет!
Может я не понял суть проблемы, но если на Delphi, то через
FormatDateTime("dd.mm.yyyy",Дата, которую нужно привести к формату). И у дня и у месяца впереди будут нули, если значения одночисловые.


panov   (2002-02-01 11:04:00) [4]

Так из какого формата все-таки преобразовать надо?
В формате "dd.mm.yyyy hh:nn:ss"не может не быть лидирующего нуля после преобразования TDateTimeк String.
Соответственно, и Copyсработает правильно, однозначно.
Если ты строку получаешь не функцией FormatDateTime, тогда как?
Долго еще гадать будем?


AlexSV   (2002-02-01 10:46:00) [5]

Может быть так (не уверен что понял правильно вопрос):

procedure ...
var
vDate: TDateTime;
sDate: string;
begin
vDate := now;
sDate := DateToStr(now);
end;


ser_Grey   (2002-02-01 10:36:00) [6]

ПРоблема в том, что надо дату полностью получить, т.е. должно быть так: "01.11.2001", а не так: "1.11.2001"
Даже Copy() в Delphi возвращает вторым способом! А там ведь PChar! Неужели делфи проверят PChar в Copy на наличие "0" в первом символе?
Александр, эта библиотеку еще вчера качал, но она даже не компилится! Может только у меня?


Alexandr   (2002-02-01 09:36:00) [7]

а если на дельфи, то достаточно округлить значение даты+время, останется только дата.


Sergey13   (2002-02-01 09:33:00) [8]

А если попробовать через DecodeDate. Вот пример их Help

This example uses a button and two labels on a form. When the user clicks the button, the current date and time are reported in the captions of the two labels.

procedure TForm1.Button1Click(Sender: TObject);

var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
Label1.Caption := "Today is Day " + IntToStr(Day) + " of Month "
+ IntToStr(Month) + " of Year " + IntToStr(Year);
DecodeTime(Present, Hour, Min, Sec, MSec);
Label2.Caption := "The time is Minute " + IntToStr(Min) + " of Hour "
+ IntToStr(Hour);
end;


Alexandr   (2002-02-01 09:25:00) [9]

UDF
F_STRIPTIME
из FreeUDFLib эту библиотеку UDF можно наити на ib.demo.ru

благодарностей не надо.


Наверх

Титульная страница Поиск, карта сайта Написать письмо