Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: Programm startet nicht: "Invalid data"

  Alt 3. Apr 2014, 10:07
Mann kann natürlich auch klein anfangen und mit ein paar Try-excepts seinen Startcode absichern, bzw. mit einer netten "Positionsangabe" die Exception-Message erweitern.

Entweder den Startcode ins OnCreate, wie es viele machen, aber wenn auf der Form schon Datenkomponenten sind, welche beim Start schon was machen, dann:

constructor Create(AOwner: TComponent); override;
Delphi-Quellcode:
constructor TForm1.Create(AOwner: TComponent);
begin
  try
    inherited;
  except
    if not HandleCreateException then
      raise;
  end;
end;
PS: Ungefähr so ist auch das OnCreate abgesichert (seit, ich weiß nicht wann), so daß selbst bei einer Exception im OnCreate die Form nicht komplett verreckt.

Wobei es hier dennoch nicht schlecht gewesen wäre, wenn man dem Handle Exception noch die adresse mitgegeben hätte.


Delphi-Quellcode:
constructor TForm1.Create(AOwner: TComponent);
begin
  try
    inherited;
  except
    on E: Exception do begin
      //E.Message := Self.SecureClassName + '(' + Self.SecureName + '): ' + E.Message; // ich hab mir via Class-Helper da bein paar geschützte Property geschaffen, da sie öfters verwendet werden, welche auch mit nil und ungültigen Zeigern zurechtkommen
      try
        E.Message := Self.ClassName + '(' + Self.Name + '): ' + E.Message;
      except
        E.Message := 'TForm.Create: ' + E.Message;
      end;
      if not HandleCreateException then
        raise;
    end;
  end;
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat