Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   iOS System.DateUtils.TryISO8601ToDate(..) (https://www.delphipraxis.net/200161-system-dateutils-tryiso8601todate.html)

Der schöne Günther 25. Mär 2019 10:04

Delphi-Version: 10 Seattle

System.DateUtils.TryISO8601ToDate(..)
 
Hallo-

Die Implementation von TryIso8601ToDate(..) ist bei 10.0 Seattle:

Delphi-Quellcode:
function TryISO8601ToDate(const AISODate: string; out Value: TDateTime; AReturnUTC: Boolean = True): Boolean;
begin
  Result := False;
  try
    Value := ISO8601ToDate(AISODate, AReturnUTC);
    Result := True
  except

  end;
end;
Mich nervt nicht nur die Exception im Debugger, sondern auch dass unsere Anwendungen alle Exceptions loggen. Meine Frage: Ist das in einer aktuelleren Delphi-Version immer noch so?

sakura 25. Mär 2019 10:09

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1428637)
Meine Frage: Ist das in einer aktuelleren Delphi-Version immer noch so?

Ja.

Du kannst aber im Debugger bestimmte Exceptions zum Ignorieren hinterlegen, und in Eurer Anwendung könntet Ihr das sicherlich auch so konfigurieren.

...:cat:...

Der schöne Günther 25. Mär 2019 10:16

AW: System.DateUtils.TryISO8601ToDate(..)
 
Doof 😤. Danke für die Antwort.

QuickAndDirty 25. Mär 2019 12:36

AW: System.DateUtils.TryISO8601ToDate(..)
 
Ja habe dafür extra ne leerstring Behandlung eingeführt...
Bzw. ein Eigenes
Delphi-Quellcode:
ISO8601ToDateDef
geschrieben.
Seit ich die XtoYDef funktionen gefunden habe benutze ich nur nich die. Eben weil Exceptions nur um Initialisierungen auszulösen nerven.

Rudy Velthuis 25. Mär 2019 18:53

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1428656)
Ja habe dafür extra ne leerstring Behandlung eingeführt...
Bzw. ein Eigenes
Delphi-Quellcode:
ISO8601ToDateDef
geschrieben.
Seit ich die XtoYDef funktionen gefunden habe benutze ich nur nich die. Eben weil Exceptions nur um Initialisierungen auszulösen nerven.

Normalerweise sollte zuerst eine TryXY()-Funktion definiert werden, die dann von XY() und XYDef() benutzt werden kann. XY() sollte, wenn TryXY() False zurückgibt, eine Exception auslösen und XYDef() sollte in dem Fall den Default-Wert zurückgeben.

Die Reihenfolge in TryISO8601ToDate ist m.e. Falsch. So sollte man das nie machen.

Der schöne Günther 25. Mär 2019 19:00

AW: System.DateUtils.TryISO8601ToDate(..)
 
Finde ich auch 👍

QuickAndDirty 26. Mär 2019 15:19

AW: System.DateUtils.TryISO8601ToDate(..)
 
Wo kann ich dafür unterschreiben?

dummzeuch 26. Mär 2019 17:12

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von Rudy Velthuis (Beitrag 1428688)
Die Reihenfolge in TryISO8601ToDate ist m.e. Falsch. So sollte man das nie machen.

Ich habe mir mal sagen lassen, das sei die übliche Implementation in JAVA. Damals hatte ich mich über ein Visual Basic 6 Programm beschwert, das durchgehend so programmiert war.

Kann aber auch sein, dass der Typ mich verarscht hat. ;-)

twm

Rudy Velthuis 29. Mär 2019 19:45

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von dummzeuch (Beitrag 1428809)
Zitat:

Zitat von Rudy Velthuis (Beitrag 1428688)
Die Reihenfolge in TryISO8601ToDate ist m.e. Falsch. So sollte man das nie machen.

Ich habe mir mal sagen lassen, das sei die übliche Implementation in JAVA. Damals hatte ich mich über ein Visual Basic 6 Programm beschwert, das durchgehend so programmiert war.

Kann aber auch sein, dass der Typ mich verarscht hat. ;-)

twm

Wusste nicht, dass Java auch solche TryXXX-Funktionen hat. Habe mich mal umgeschaut: hat Java wohl wirklich nicht, also muss man sich die aus den anderen Funktionen basteln und Exceptions abfangen, wie TryISO8601ToDate.

Aber in Delphi wird es normalerweise richtig gemacht. Nur hier nicht.

TurboMagic 30. Mär 2019 07:11

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1428792)
Wo kann ich dafür unterschreiben?

Du kannst in quality.embarcadero.com einen Eintrag dafür erstellen und dann können wir dafür stimmen, wenn du die Eintragsnummer danach hier postest.

mjustin 31. Mär 2019 07:50

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von Rudy Velthuis (Beitrag 1429141)
Habe mich mal umgeschaut: hat Java wohl wirklich nicht

In Java gibt es keine out- oder var Parameter, daher läßt sich eine TryConvertXXX(Input: ...; out Value: ...): Boolean; Methode nicht (oder nur auf Umwegen) in Java realisieren.

Rudy Velthuis 1. Apr 2019 13:06

AW: System.DateUtils.TryISO8601ToDate(..)
 
Zitat:

Zitat von mjustin (Beitrag 1429170)
Zitat:

Zitat von Rudy Velthuis (Beitrag 1429141)
Habe mich mal umgeschaut: hat Java wohl wirklich nicht

In Java gibt es keine out- oder var Parameter, daher läßt sich eine TryConvertXXX(Input: ...; out Value: ...): Boolean; Methode nicht (oder nur auf Umwegen) in Java realisieren.

Das stimmt. Aber dann müsste eben was anderes zurückgegeben werden. Das geht schon, ist aber etwas aufwendiger. Aber das erklärt schon warum das selten gemacht wird.

Der schöne Günther 1. Apr 2019 18:15

AW: System.DateUtils.TryISO8601ToDate(..)
 
In Java ist das mit den "erwarteten Exceptions" sowieso ein bisschen anders. Wenn man z.B. ein
Delphi-Quellcode:
SimpleDateFormat
erstellt zwingt einen z.B. der Compiler dazu eine
Delphi-Quellcode:
IllegalArgumentException
zu behandeln.

Das vermisse ich an Java wirklich

Rudy Velthuis 1. Apr 2019 19:20

AW: System.DateUtils.TryISO8601ToDate(..)
 
[QUOTE=Der schöne Günther;1429274]In Java ist das mit den "erwarteten Exceptions" sowieso ein bisschen anders. Wenn man z.B. ein
Delphi-Quellcode:
SimpleDateFormat
erstellt zwingt einen z.B. der Compiler dazu eine
Delphi-Quellcode:
IllegalArgumentException
zu behandeln.

Nicht ganz. Es zwingt einem dazu, eine throws-Direktive zur Methode hinzuzufügen oder die Exception zu behandeln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz