Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#6

AW: TryStrToFloat/TryStrToInt, leeren String nicht als 0 erhalten

  Alt 30. Apr 2022, 16:32
Bei meinem Ansatz mit Variant geht die Typsicherheit mit Sicherheit flöten und Nebenwirkungen sind gerade bei Float (zufällig ohne Nachkommastellen) und Integer eher zu erwarten als auszuschließen.

Alternative:

Die Routine, die UI ins Objekt / DB schreibt, prüft ob das UI-Feld leer ist.
Delphi-Quellcode:
  if Edit.Text = 'then
    qry.FieldByName('Nummer').AsVariant := EmptyParam // Das müsste in der DB dann NULL werden.
  else
  begin
    if TryStrToFloat(Edit.Text, myFloat) then
      qry.FieldByName('Nummer').AsFloat := myFloat
    else
      // was ist hier im Fehlerfalle zu machen?
  end;
Bei leerem Edit.Text wird qry.FieldByName('Nummer').AsString := Edit.Text eher als Leerstring in der DB landen als als Null. Aber hier könnte es je nach Datenbank(schnittstelle) auch Unterschiede geben.

qry.FieldByName('Nummer').AsString := Edit.Text funktioniert allerdings auch, wenn Nummer in der DB als Integer oder Float definiert ist. Enthält Edit.Text allerdings etwas, was nicht zum Typ von Nummer passt, wird es eine Exception geben.
  Mit Zitat antworten Zitat