![]() |
Fehler?? Datum1:=strtodatetime('01/01/2001 23:01');
Hallo!
Datum1 ist vom Typ TDateTime. Nun möchte ich eine bestimmte Zeit und ein bestimmtes Datum zuweisen. In der Hilfe steht, man soll dies nach dem System machen: Datum1:=strtodatetime('01/01/2001 23:01'); Geht abba net *hoil Was ist falsch? |
Code:
Kann ich Kompilieren.
procedure TForm1.Button1Click(Sender: TObject);
var Datum1: TDateTime; begin Datum1 := StrToDateTime('01/01/2001 23:01'); ShowMessage(DateTimeToStr(Datum1)); end; Wenn ich das SM weglass, dann kommt nur die Warnung dass Datum1 nie benutzt wird. Was ist das Problem? Fehlermeldung? Mehr Infos Bitte! |
Hehe .. wahrscheinlich liegt es an den Variablen, die in Delphi steuern, wie ein gültiges Datum auszusehen hat. Denn die Delphi-Hilfe schreibt weiter:
Zitat:
|
compilieren
Hi!
Danke für deine schnelle Hilfe ;) Kompilieren kann ich auch noch. Aber wenn ich auf den Button klick, bekomm ich ne EConvertError kein Gültiger Datum-Zeit-Wert (frei nach mia). Muss ich vielleicht irgendwas mit Format machen?? |
delphi5
Hi!
Ich hab Delphi5! Kannst du mir konkret sagen...wie ich das hinbekomm? Dankö |
Hmm... Ich nicht das Prog starten, sondern nur Kompilieren weil bei mir das Windows kaputt ist.
Willst du die Systemzeit ändern? |
Nee
Nein. Ich will einen Countdown basteln. Die Funktion hab ich schon. Die benötigt abba nen TDateTime. Sagt euch:
{ StrToDate converts the given string to a date value. The string must consist of two or three numbers, separated by the character defined by the DateSeparator global variable. The order for month, day, and year is determined by the ShortDateFormat global variable--possible combinations are m/d/y, d/m/y, and y/m/d. If the string contains only two numbers, it is interpreted as a date (m/d or d/m) in the current year. Year values between 0 and 99 are assumed to be in the current century. If the given string does not contain a valid date, an EConvertError exception is raised. } Quelle: Sysutils was? |
Probier mal das Jahr in der Zukunft zu wählen. Vielleicht mag es nicht weil das Datum bereits vorbei ist und nicht bis dahin Zählen kann.
|
Ich bekomm den gleichen Fehler wieder ;(
|
Moin Frankle,
im Prinzip hat Daniel die Lösung schon gegeben:
Code:
Das Datum kann nur dann von StrToDateTime konvertiert werden, wenn Du auch das richtige Trennzeichen verwendest.
Datum1 := StrToDateTime('01'+DateSeparator+'01'+DateSeparator+'2001 23'+TimeSeparator+'01');
Um dies unabhängig von dem System zu machen, auf dem das Programm läuft, nimmst Du einfach die vordefinierten Variablen. Das führt erst dann zu einem Fehler, falls jemand, nachdem das Programm gestartet wurde, die Systemeinstellungen für die Trennzeichen verändert. Diese Variablen werden beim Initialisieren der Unit SysUtils mit Werten gefüllt, also je Programmstart einmal. Diesen, wohl höchst seltenen Fehlerfall kannst Du dann nur noch umgehen, wenn Du jeweils, bevor Du die Trennzeichen verwendest, diese selber ausliest. Ich denke aber, dass Du Dir diese Mühe wirklich sparen kannst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 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