Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
[ÇÖZÜLDÜ]Server İşletim Sisteminde Çalışan Windows Servis te is not a valid date Hata
#1
S.a 
Otomatik Yedekleme yapmak için Ufak bir Servis Yazıyorum
Servis Windows 7 ve Windows 10 Çalışıyor ancak aynı servisi Windows 2008 R2 Çalıştırdığımda
Servis içerisinde Stringten Tarihe Dönüşüm Yaptığımğım Satır

TDateTime TYedekleme_Tarihi = Now ();
TYedekleme_Tarihi          = StrToDate( '17.08.2019');


is not a valid date Hatası Veriyor
Server Tarih Ataması nasıl olmalı
Cevapla
#2
strtodate yerine encodedate fonksiyonu ile dener misin.
Cevapla
#3
Muhtemelen tarih formatı Windows ile server farklı özellikle kısa tarih formatına bakın
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#4
selamlar, aynı konu 2 gün önce benim başıma geldi. Windows 10 işletim sisteminde yapmış olduğum programda normal olarak çalışırken, server 2018 de çalışmadı program. Tarih sorgusunun devamına +'AM' veya da +'PM' kodunu da ekleyince sorunum tamamen çözülmüş oldu. Aşağıdaki şekilde deneyebilirsin. Ama serverin bölgesel ayarlarından kısa tarih ve uzun tarih ile saat ayarlarını iki haneli hale getirmeyi unutma..

if edit3.Text = '11:00:00 PM' then

  begin
Yazılımcı, kahveyi koda çeviren bir organizmadır.
Cevapla
#5
(26-08-2019, Saat: 20:46)3ddark Adlı Kullanıcıdan Alıntı: Muhtemelen tarih formatı Windows ile server farklı özellikle kısa tarih formatına bakın

Hem Server 2008 de hemde windows 7 
kısa tarih formatı gg.aa.yyyy
Uzun tarih formatı gg aaaa yyyy gggg
Her ikinsinde tarih formatı aynı
ayrı kodları vcl forma yapıştırıp server 2008 çalıştırdıgımda sorun olmuyor
Serviste neden hata veriyor anlayamadım

strtodate yerine encodedate fonksiyonu kullanmak istemiyorum 

Çünkü hem strtodate kullanımı daha basit 

Hemde strtodate strtotime servisin birçok yerinde kullandım



A.s Wiseman 


Yarın deneyip bilgi vereceğim inşaallah 
Cevapla
#6
Çünkü service olarak çalıştığındaki user ile vcl olarak çalışan user farklı . Muhtemeldir ki service olarak çalışırken kullandığı user in formatı farklı. Format settings. Shirtdatrformati setlersen sorunun çözülür. Hatta bunu bir alışkanlık haline getirmek icab eder ki sonradan sonradan ayrı ayrı ama aynı konu hakkında mülahazalara girmeyesin.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#7
(26-08-2019, Saat: 21:57)wiseman Adlı Kullanıcıdan Alıntı: selamlar, aynı konu 2 gün önce benim başıma geldi. Windows 10 işletim sisteminde yapmış olduğum programda normal olarak çalışırken, server 2018 de çalışmadı program. Tarih sorgusunun devamına +'AM' veya da +'PM' kodunu da ekleyince sorunum tamamen çözülmüş oldu. Aşağıdaki şekilde deneyebilirsin. Ama serverin bölgesel ayarlarından kısa tarih ve uzun tarih ile saat ayarlarını iki haneli hale getirmeyi unutma..

if edit3.Text = '11:00:00 PM' then

  begin

(26-08-2019, Saat: 22:44)ahmet_sinav Adlı Kullanıcıdan Alıntı: Çünkü service olarak çalıştığındaki user ile vcl olarak çalışan user farklı . Muhtemeldir ki service olarak çalışırken kullandığı user in formatı farklı. Format settings. Shirtdatrformati setlersen sorunun çözülür. Hatta bunu bir alışkanlık haline getirmek icab eder ki sonradan sonradan ayrı ayrı ama aynı konu hakkında mülahazalara girmeyesin.

Evet servis ile vcl form ayrı kullanicilarda çalışıyor
Yarın Format settings deneyeyim inşallah 
Yardımlarınız için allah razı olsun
Cevapla
#8
Sorunum Servis ile Çalıştığı System Kullanıcısının Tarih ayarları ingilizce olmasından kaynaklanıyormuş

TFormatSettings *FS = new TFormatSettings();
    FS->DateSeparator = '.';
    FS->ShortDateFormat ="dd.mm.yyyy";
    FS->LongDateFormat  ="dd.mm.yyyy hh:ss:nn";
    FS->LongTimeFormat  ="hh:nn:ss";
    FS->TimeSeparator   =':';

Bu Şekilde Çözdüm 
Yarımlarınlarınız için allah razı olsun
Cevapla
#9
İlave olarak connection nesnesi ile sql e bağlandıktan hemen sonra "set dateformat dmy" gibi bir sorgu ile o bağlantıda çalışan sorgularda kullanılacak formatı ayarlayabilirsiniz.
Cevapla
#10
DPR içerisinde aşağıdaki yöntemlerden biri kullanılabilir

procedure pr_SystemDateTimeStandart;
Var
 // Tarih/Saat Formatları Sistemden Bağımsız Düzeltmek için
 {$IF CompilerVersion >= 23}
    FormatSettings: System.SysUtils.TFormatSettings;
 {$ELSE}
    FormatSettings: TFormatSettings;
 {$IFEND}
begin
   Application.UpdateFormatSettings := False;
   {$IF CompilerVersion >= 23}
       FormatSettings := TFormatSettings.Create(LOCALE_SYSTEM_DEFAULT);
   {$ELSE}
       GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, FormatSettings);
   {$IFEND}
   FormatSettings.ThousandSeparator := ',';
   FormatSettings.DecimalSeparator  := '.';
   FormatSettings.DateSeparator     := '.';
   FormatSettings.TimeSeparator     := ':';
   FormatSettings.ShortTimeFormat   := 'hh:nn';
   FormatSettings.LongTimeFormat    := 'hh:nn:ss'; // 'hh:mm'
   FormatSettings.ShortDateFormat   := 'dd.mm.yyyy';
end;

initialization
Application.UpdateFormatSettings := False;
SysUtils.FormatSettings.ThousandSeparator := '.';
SysUtils.FormatSettings.DecimalSeparator := ',';
SysUtils.FormatSettings.DateSeparator := '.';
SysUtils.FormatSettings.TimeSeparator := ':';
SysUtils.FormatSettings.ShortDateFormat := 'dd.mm.yyyy';
SysUtils.FormatSettings.ShortTimeFormat := 'hh:nn';
SysUtils.FormatSettings.LongTimeFormat := 'hh:nn:ss';
SysUtils.FormatSettings.CurrencyString:='₺';
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  AdoQuery ile ilgili bir sorun. (Çözüldü) Bay_Y 4 111 17-04-2024, Saat: 10:58
Son Yorum: Bay_Y
  Değişik bir hata ikurt07 2 197 30-03-2024, Saat: 14:34
Son Yorum: ikurt07
  Web Servis SOAP eyln 19 1.070 22-03-2024, Saat: 13:06
Son Yorum: eyln
  Fastreport İçindekiler Sayfası Oluşturma [ÇÖZÜLDÜ] bydelphi 1 237 18-03-2024, Saat: 12:11
Son Yorum: bydelphi
  Rest Hata Yakalama m_ekici 9 1.552 08-03-2024, Saat: 19:30
Son Yorum: aegean



Konuyu Okuyanlar: 1 Ziyaretçi