Einzelnen Beitrag anzeigen

Sankt Rochus

Registriert seit: 30. Nov 2012
15 Beiträge
 
#9

AW: XE7 Debugger hält bei Exception eine Funktion darüber an.

  Alt 6. Jul 2015, 15:35
Zitat:
Kannst du die entsprechende Funktion, die Zeile darin, wo der Fehler auftritt, und die Zeilen, wo die in exportKData aufgerufen wird, mal zeigen?
Kann ich machen. Ich habe hier gerade schon wieder einen anderen Fall, vergiss also bitte exportKData().

Die Funktion exportMedikament(...) ruft TSTDUtils.LittleEndianDateStringToDate(aValue: string): TDateTime auf. Letztgenannte Funktion soll einen speziellen Datumsstring parsen, schlägt aber fehl, da der String dem Datumsformat nicht entspricht. Da die Funtkion exportMedikament(...) sehr umfassend ist, möchte ich nur den Ausschnitt hier zeigen:

Hier die aufrufende Funktion:

Delphi-Quellcode:
if m_LicenseManager.License.IsLicensed('Patientendaten/Patient/Medikamente/Medikament/Absetzdatum') then
begin
  if ((i = 10) and not l_Zusatz.IsEmpty) then l_Medikament.Absetzdatum := TSTDUtils.LittleEndianDateStringToDate(l_Zusatz); // Hier wird die Funktion aufgerufen und genau hier hält der Debugger
end;
Und hier die Funktion, in der die Exception kommt, in einer anderen Unit, wohlbemerkt:

Delphi-Quellcode:
class function TSTDUtils.LittleEndianDateStringToDate(aValue: string): TDateTime;
var
  l_CirculatedDateTime: string;
begin
  l_CirculatedDateTime := Copy(aValue, 7, 2) + FormatSettings.DateSeparator + Copy(aValue, 5, 2)
    + FormatSettings.DateSeparator + Copy(aValue, 1, 4);
  if (Copy(l_CirculatedDateTime, 1, 5) = '00.00') then l_CirculatedDateTime := '01.01.' + Copy(l_CirculatedDateTime, 7, 4);
  result := StrToDate(l_CirculatedDateTime); // Hier tritt vermutlich die Exception auf
end;
Die Exception lautet:
".04.2014" ist kein gültiges Datum.

Und hier nochmals der Aufrufstack:

:7654c42d KERNELBASE.RaiseException + 0x58
:00426dca ConvertErrorFmt + $1E
uSTDExport.TSTDExport.exportMedikament(...)
...
  Mit Zitat antworten Zitat