![]() |
Datum umwandeln..
Hallo zusammen, weiß nicht wie ich mein momentanes Problem lösen kann.
Folgendes.. Habe zwei Projektkonstanten die öfters verwendet werden z.B. in ShowMessages.
Delphi-Quellcode:
....SDatumVon0101 = 'Datum von: 01.01.'; SBis3112 = 'bis 31.12.';
Delphi-Quellcode:
Das ist aber logischerweiße nur korrekt, wenn das Datumsformat auf dd.MM.yyyy steht.
lbPrjDatumAlt.Caption := SDatumVon0101 + IntToStr(year) + #13#10 + ' ' +
SBis3112 + IntToStr(year); An anderen Stellen kann ich das Datum ohne Probleme anpassen.
Delphi-Quellcode:
Aber wie könnte ich das Datum der Projektkonstanten ändern?!? z.B. auf T.M.JJ oder ein anderes?
qJahresplan.SQL.Text := 'INSERT INTO Jahresplan (Startdatum, Enddatum) VALUES (' +
QuotedStr(DateToStr(EncodeDate(year,10,01))) + ',' + QuotedStr(DateToStr(EncodeDate(year,12,31))) + ')'; ... Hoffe ihr versteht mein Problem mfg David |
AW: Datum umwandeln..
Verwende bei SQL-Abfragen am Besten Parameter
|
AW: Datum umwandeln..
Hallo...
Idee aus dem Bauch: Statt Konstante als Variable und via DateUtils beim Start des Programmes entsprechend der Systemeinstellungen setzen. |
AW: Datum umwandeln..
Das mit dem datum hab ich so gemacht:
Delphi-Quellcode:
procedure TfrmUmwandeln.FormShow(Sender: TObject);
var fs: TFormatSettings; begin GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT,fs); if not (AdsSettings1.DateFormat = fs.ShortDateFormat) then AdsSettings1.DateFormat:= fs.ShortDateFormat; Zitat:
mfg |
AW: Datum umwandeln..
Delphi-Quellcode:
und dann vor Ort über
const SDatum = 'Datum von: %s bis %s';
![]() Wobei für SQL dieses auch in etwa damit
Delphi-Quellcode:
und über dieses die predefinierten Parameter machen könnte, wie schon bei "Verwende bei SQL-Abfragen am Besten Parameter" vorgeschlagen.
const SDatum = 'Datum von: :VON bis :BIS';
In beiden Fällen dann den ganzen String über DateToStr + EncodeDate befüllen. |
AW: Datum umwandeln..
Uff ^^
das mit dem Format, peil ich schon nicht... :( war auf ![]() d = Decimal (integer) e = Scientific f = Fixed g = General m = Money n = Number (floating) p = Pointer s = String u = Unsigned decimal x = Hexadecimal Also erst die Parameter mit Format füllen (was ich nicht verstehe) ^^ und dann eben diese zwei Parameter über DateToStr und EncodeDate befüllen?!? Vll nen kleines Beispiel, an dem ich mich orientieren kann? |
AW: Datum umwandeln..
Such mal nach FormatDateTime (SysUtils) in Deiner lokalen Hilfe ...
|
AW: Datum umwandeln..
Das sind 2 Dinge; Format für Anzeigestrings und der Parameter bei SQL-Abfragen
Delphi-Quellcode:
var
von, bis: TDate; ... von := EcodeDate( jahr, 1, 1); bis := EncodeDate ( Jahr, 12, 31); ... anzeige := 'Von ' + FormatDateTime( 'dd.mm.yyyy', von) + ' bis ' + FormatDateTime( 'dd.mm.yyyy', bis); qJahresplan.SQL.Text := 'INSERT INTO Jahresplan (Startdatum, Enddatum) VALUES ( :start, :ende)'; qJahresplan.ParamByName('start').Value := von; qJahresplan.ParamByName('end').Value := bis; ... |
AW: Datum umwandeln..
Delphi-Quellcode:
So schwer ist ds doch eigentlich nicht?
SDatumVon := 'von ';
SDatumBis := ' bis '; Anzeige := SDatumVon + DateToStr(von) + SDatumBis + DateToStr(bis); SDatum := 'von %s bis %s'; Anzeige := Format(SDatum, [DateToStr(von), DateToStr(bis)]); |
AW: Datum umwandeln..
Delphi-Quellcode:
Als Projektkonstanten hab ich ja schon SDatumVon, SDAtumBis die einen festen Wert haben. Logisch dass diesen Konstanten keine anderen Werte zugeordnet werden können.
const
SDatumVon = '01.01.'; SDatumBis = '31.12.'; procedure TForm1.Button1Click(Sender: TObject); var jahr: Word; von, bis: TDate; Anzeige: String; SDatum: String; begin von := EncodeDate( jahr, 1, 1); bis := EncodeDate ( Jahr, 12, 31); anzeige := 'Von ' + FormatDateTime( 'dd.mm.yyyy', von) + ' bis ' + FormatDateTime( 'dd.mm.yyyy', bis); SDatumVon := 'von '; //<-- Der linken Seite kann nichts zugewiesern werden SDatumBis := ' bis '; Anzeige := SDatumVon + DateToStr(von) + SDatumBis + DateToStr(bis); SDatum := 'von %s bis %s'; Anzeige := Format(SDatum, [DateToStr(von), DateToStr(bis)]); ShowMessage(Anzeige); end; Entferne ich diese Projektkonstanten und deklariere sie als einfache Stringvariable
Delphi-Quellcode:
What am I doing wrong?
procedure TForm1.Button1Click(Sender: TObject);
var jahr: Word; von, bis: TDate; Anzeige: String; SDatum: String; sDatumVon, SDatumBis: String; begin von := EncodeDate( jahr, 1, 1); // --> Ungültiges Argument zum Codieren des Datums. bis := EncodeDate ( Jahr, 12, 31); anzeige := 'Von ' + FormatDateTime( 'dd.mm.yyyy', von) + ' bis ' + FormatDateTime( 'dd.mm.yyyy', bis); SDatumVon := 'von '; SDatumBis := ' bis '; Anzeige := SDatumVon + DateToStr(von) + SDatumBis + DateToStr(bis); SDatum := 'von %s bis %s'; Anzeige := Format(SDatum, [DateToStr(von), DateToStr(bis)]); ShowMessage(Anzeige); end; |
AW: Datum umwandeln..
Zitat:
Du hast diesem noch garnichts zugewiesen ... da hannst'e froh sein, daß hier rein zufällig ein Wert drinsteht, der eine ungültige Jahreszahl darstellt. |
AW: Datum umwandeln..
Eine Konstante ist konstant. Man kann an sie nichts mehr anhängen
|
AW: Datum umwandeln..
Ich Volldepp.
hätte dem jahr schon noch nen genauen Wert zuweisen sollen.
Delphi-Quellcode:
DecodeDate(now, jahr, monat, tag);
|
AW: Datum umwandeln..
Delphi-Quellcode:
könnte mir bitte nochmal jemand erklären was hier alles geschieht, einiges ist mir noch nicht wirklich klar. Schließlich sollte man den Code vestehen, den man verwendet!!!
Anzeige := ' von ' + FormatDateTime( 'dd.mm.yyyy', von) + ' bis ' + FormatDateTime( 'dd.mm.yyyy', bis);
Anzeige := SDatumVon + ' ' + DateToStr(von) + SDatumBis + ' ' + DateToStr(bis); SDatum := 'Datum von: %s' + #13#10 + ' bis: %s'; Anzeige := Format(SDatum, [DateToStr(von), DateToStr(bis)]); Aktueller Stand:
Delphi-Quellcode:
const
SDatumVon0101 = 'Datum von 01.01.'; SDatumBis3112 = 'Datum bis 31.12.'; SDatumVon = 'Datum von'; SDatumBis = ' bis'; .... procedure TfrmUmwandeln.Button1Click(Sender: TObject); var jahr, monat, tag: Word; von, bis: TDate; Anzeige: String; SDatum: String; sDatumVon, SDatumBis: String; begin pnlPrjConst.Visible := True; decodedate(now, jahr, monat, tag); von := EncodeDate( jahr, 1, 1); bis := EncodeDate ( Jahr, 12, 31); Anzeige := ' von ' + FormatDateTime( 'dd.mm.yyyy', von) + ' bis ' + FormatDateTime( 'dd.mm.yyyy', bis); Anzeige := SDatumVon + ' ' + DateToStr(von) + SDatumBis + ' ' + DateToStr(bis); SDatum := 'Datum von: %s' + #13#10 + ' bis: %s'; Anzeige := Format(SDatum, [DateToStr(von), DateToStr(bis)]); lbPrjDatumAlt.Caption := SDatumVon0101 + IntToStr(jahr) + #13#10 + ' ' + SDatumBis3112 + IntToStr(jahr); lbPrjDatumNeu.Caption := Anzeige; end; Nochmals eine Frage, ich kann meine Konstanten SDatumVon0101 uns SDatumBis3112 nicht in ein anderes Format umwandeln, da es Konstanten sind und immer einen festen Wert besitzen, der nicht veränderbar ist? Richtig verstanden? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz