Delphi Can

Orjinalini görmek için tıklayınız: işletim sistemine göre date farklılığı
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhaba;

Kendi bilgisayarımda çalıştırdığım uygulama arkadaşın bilgisayarında (isnot a valid date and time) hatası verdi.
Kullandığım kodlar aşağıda. Farklı bilgisayarda tarih formatıyla ilgili hata almamak için he yapabilirim.
Aşağıdaki date formatı için yeterli değil mi?


procedure TForm1.AraClick(Sender: TObject);
var
  Sayi: Integer;
  Bugun, SonGun: TDateTime;
begim
  Bugun := Date; // Bugün tarih
   SonGun := StrToDate('10.07.2018'); // Son tarih
    Sayi := Trunc(SonGun) - Trunc(Bugun); // Kalan gün
    if Sayi <= 0 then
    begin
    ...



2aa9Zv.png
Bknz. FormatSettings  Rolleyes
Yıllardır en sinir bozucu sorunlardan biridir. Her sistem kafasına göre standartlar oluşturmaya çalışmış. Neyse ki son yıllarda daha azaldı.
Bense fi tarihinden beri günleri tamsayıya çevirip kullanmayı tercih ediyorum. Hala aynı şekilde devam ederim ve yirmi yıldan fazladır hiç sorun yaşamadım.
Gerçi birisi kullanmayı denemiş ama yapamamış. Epey antika bir yol demek ki Smile
http://www.yqcomputer.com/411_173_1.htm


str1=FormatFloat('#', Date) //str1='36736'

Sorgu.SQL.Text= 'SELECT * FROM ..... WHERE Date1=' + FormatFloat('#', Date);
(30-07-2018, Saat: 12:41)ssahinoglu Adlı Kullanıcıdan Alıntı: [ -> ]Yıllardır en sinir bozucu sorunlardan biridir. Her sistem kafasına göre standartlar oluşturmaya çalışmış. Neyse ki son yıllarda daha azaldı.
Bense fi tarihinden beri günleri tamsayıya çevirip kullanmayı tercih ediyorum. Hala aynı şekilde devam ederim ve yirmi yıldan fazladır hiç sorun yaşamadım.
Gerçi birisi kullanmayı denemiş ama yapamamış. Epey antika bir yol demek ki Smile
http://www.yqcomputer.com/411_173_1.htm


str1=FormatFloat('#', Date) //str1='36736'

Sorgu.SQL.Text= 'SELECT * FROM ..... WHERE Date1=' + FormatFloat('#', Date);

Aşağıdaki kodları procedure yap. kullandığın tüm formların oncreate bölümünden çağır.
Sadece senin programda ayarları değiştirir.


  
 formatsettings.ThousandSeparator := '.';
 formatsettings.DecimalSeparator := ',';
 formatsettings.DateSeparator := '.';
formatsettings.ShortDateFormat := 'dd.mm.yyyy';
formatsettings.LongDateFormat := 'dd.mm.yyyy dddd';
formatsettings.ShortTimeFormat := 'HH:mm';
formatsettings.LongTimeFormat := 'HH:mm : s s'; // burayı bitişik yazınca üzüntülü ifade ekliyor o nedenle s s ler arası boşluk ekledim
formatsettings.TimeSeparator := ':';
@cinarbil 
Sürekli çağrım yapmana gerek yok.Programının proje dosyasında format olarak sistem ayarlarını kullanmayacağım kendi ayarlarımı
kullanacağım diye ayarlaman yeterli.

Eski zamanlarda başka bir mekanda soruya cevap vermişim,
Link
(30-07-2018, Saat: 16:56)QuAdR Adlı Kullanıcıdan Alıntı: [ -> ]@cinarbil 
Sürekli çağrım yapmana gerek yok.Programının proje dosyasında format olarak sistem ayarlarını kullanmayacağım kendi ayarlarımı
kullanacağım diye ayarlaman yeterli.

Eski zamanlarda başka bir mekanda soruya cevap vermişim,
Link

Yeni bir şey daha öğrendim. 
Benim uygulamam dan daha pratik.
Sizin yöntemi hemen aktif projede kullanacağım teşekkür ederim Allah c.c razı olsun.

Bilmek güzel olabilir ama Öğrenmek daha güzel
(30-07-2018, Saat: 16:56)QuAdR Adlı Kullanıcıdan Alıntı: [ -> ]@cinarbil 
Sürekli çağrım yapmana gerek yok.Programının proje dosyasında format olarak sistem ayarlarını kullanmayacağım kendi ayarlarımı
kullanacağım diye ayarlaman yeterli.

Eski zamanlarda başka bir mekanda soruya cevap vermişim,
Link

Çok iyi , ilgili unite ekliyordum genelde , bu şekilde projelerde her yere etki ediyoruz.
(30-07-2018, Saat: 13:03)cinarbil Adlı Kullanıcıdan Alıntı: [ -> ]
(30-07-2018, Saat: 12:41)ssahinoglu Adlı Kullanıcıdan Alıntı: [ -> ]Yıllardır en sinir bozucu sorunlardan biridir. Her sistem kafasına göre standartlar oluşturmaya çalışmış. Neyse ki son yıllarda daha azaldı.
Bense fi tarihinden beri günleri tamsayıya çevirip kullanmayı tercih ediyorum. Hala aynı şekilde devam ederim ve yirmi yıldan fazladır hiç sorun yaşamadım.
Gerçi birisi kullanmayı denemiş ama yapamamış. Epey antika bir yol demek ki Smile
http://www.yqcomputer.com/411_173_1.htm


str1=FormatFloat('#', Date) //str1='36736'

Sorgu.SQL.Text= 'SELECT * FROM ..... WHERE Date1=' + FormatFloat('#', Date);

Aşağıdaki kodları procedure yap. kullandığın tüm formların oncreate bölümünden çağır.
Sadece senin programda ayarları değiştirir.


  
 formatsettings.ThousandSeparator := '.';
 formatsettings.DecimalSeparator := ',';
 formatsettings.DateSeparator := '.';
formatsettings.ShortDateFormat := 'dd.mm.yyyy';
formatsettings.LongDateFormat := 'dd.mm.yyyy dddd';
formatsettings.ShortTimeFormat := 'HH:mm';
formatsettings.LongTimeFormat := 'HH:mm : s s'; // burayı bitişik yazınca üzüntülü ifade ekliyor o nedenle s s ler arası boşluk ekledim
formatsettings.TimeSeparator := ':';

Merhaba; Konu güzel fakat tam olarak anlayamadım. aşağıdaki kodları procedure altında mı çalıştıracağız.

begin
Application.Initialize;
Application.UpdateFormatSettings := False;
ThousandSeparator := ',';
DecimalSeparator := '.';
DateSeparator := '.';
TimeSeparator := ':';
ShortDateFormat := 'dd.mm.yyyy';
ShortTimeFormat := 'hh:mm';
LongTimeFormat := 'hh:mm';
end;
(11-09-2018, Saat: 11:16)ahmetb Adlı Kullanıcıdan Alıntı: [ -> ]
(30-07-2018, Saat: 13:03)cinarbil Adlı Kullanıcıdan Alıntı: [ -> ]Aşağıdaki kodları procedure yap. kullandığın tüm formların oncreate bölümünden çağır.
Sadece senin programda ayarları değiştirir.


  
 formatsettings.ThousandSeparator := '.';
 formatsettings.DecimalSeparator := ',';
 formatsettings.DateSeparator := '.';
formatsettings.ShortDateFormat := 'dd.mm.yyyy';
formatsettings.LongDateFormat := 'dd.mm.yyyy dddd';
formatsettings.ShortTimeFormat := 'HH:mm';
formatsettings.LongTimeFormat := 'HH:mm : s s'; // burayı bitişik yazınca üzüntülü ifade ekliyor o nedenle s s ler arası boşluk ekledim
formatsettings.TimeSeparator := ':';

Merhaba; Konu güzel fakat tam olarak anlayamadım. aşağıdaki kodları procedure altında mı çalıştıracağız.

begin
Application.Initialize;
Application.UpdateFormatSettings := False;
ThousandSeparator := ',';
DecimalSeparator := '.';
DateSeparator := '.';
TimeSeparator := ':';
ShortDateFormat := 'dd.mm.yyyy';
ShortTimeFormat := 'hh:mm';
LongTimeFormat := 'hh:mm';
end;

Bu kodları projenizde  Project  /  ViewSource içine yazarsanız sadece sizin projede her yerde  geçerli olacak şekilde ayarları değiştirir. 
Procedure olarak kullanırsanız projedeki tüm formlarda ihtiyaç halinde çağırmanız gerekir. 
Cari form da çağırdınız kullandınız. Cari yi kapatıp stok formunu çağırsanız bu ayarları kullanabilmek için tekrar procedure çağırmanız gerekir.
 "Project / ViewSource"  ilgili formatsetting araştırdım fakat bir şey bulamadım Confused  neyi yanlış yapıyorum?




program CalisanList;

uses
 System.StartUpCopy,
 FMX.Forms,
 Main in 'Main.pas' {Form1};

{ Form1 }

{$R *.res}

var
 s: string;
 d: TDateTime;
 FmtStngs: TFormatSettings;
begin
   GetLocaleFormatSettings(GetThreadLocale, FmtStngs);
   FmtStngs.ShortDateFormat := 'dd mmm yyyy';
   FmtStngs.TimeSeparator := ':';
   FmtStngs.LongTimeFormat := 'hh:nn';
   s := FormatDateTime('', Now, FmtStngs);
   d := StrToDateTime(s, FmtStngs);
end;

 begin
   Application.Initialize;
   Application.CreateForm(TForm1, Form1);
   Application.Run;
 end;

end.
Sayfalar: 1 2