[Delphi] Duidelijke foutmeldingen vertalen in applicatie*

Pagina: 1
Acties:

  • Mitsah
  • Registratie: Februari 2002
  • Laatst online: 09-10-2024
Ik wil de afhandleing van database-fouten vertalen.
Bij de fout-afhandeling wordt standaard een foutnummer en een complete (engelstalige) tekst meegeven.
In deze tekst is ook de kolomnaam en tablenaam, waar de fout op opgetreden is verweven (soort invulplaatsen in errormessage).
Voor mijn vertaalde foutmelding wil ik beschikken over deze stukjes.
Dan kan ik bv ook vertellen in welke kolom er een unieke sleutel-fout is opgetreden.
Ik gebruik Delphi 6, met Firebird (IB6 equivalent)

  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
En wat is je probleem dan?
Ik bedoel: je hebt een (voor mij) vaag verhaal over foutmeldingen die je wilt vertalen of zoiets. En je wilt die dan weer in Delphi kunnen gebruiken? Of in Interbase? Leg ff uit wat je precies wilt hebben en wat je zelf al gedaan hebt.

Verwijderd

De foutmelding moet Delphi op het scherm geven.
De fout wordt veroorzaakt in de database.
Stel:
In Delphi probeer ik een record te schrijven(naar de database dus), waar een waarde zit, die niet toegestaan is, vanwege een constraint.
Hierdoor word een event afgevuurd.
Voor het afhandelen van de fout beschik ik dan over een fout-object.
Met dit object beschik ik over een foutnummer een een foutboodschap.
Deze foutboodschap is in het engels, en daardoor niet geschikt om op het scherm te laten zien.
Aan de hand van de foutnummer wil ik een eigen foutboodschap op het scherm laten zien, die wel in het nederlands is.
Hiervoor heb ik echter wel de informatie nodig, welk veld het probleem heeft veroorzaakt.
In de errormessage, die vanuit interbase komt, staat deze informatie wel, maar als een stuk tekst in de zin. Hieruit is alleen met kunstgrepen(=slecht onderhoudbaar) de gewenst info te herleiden
De foutnummer biedt hiervoor geen houvast, omdat daarin alleen SOORT fout staat.

Ik hoop dat hiermee de vraag wat verhelderder is!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Exception handling:

code:
1
2
3
4
5
6
7
8
9
10
try
   doe hier een aantal statements
   waar een database error kan optreden
except
 on EDatabaseError : e do begin
     vang hier de error op
     doe de nodige foutafhandeling
     toon eventueel een gepaste/duidelijke fout
 end;
end;


Bepaalde strings uit het exception-object filteren zal wel geen makkie zijn. Het exception object heeft wel een property Message met daarin de foutmelding die je te zien krijgt als je de error niet opvangt, maar om daar bv. de tabelnaam uit te gaan filteren....
Echter, als jij weet vanuit welke tabel je records wilt verwijderen, dan kan je zelf wel een gepaste foutmelding verzinnen.

[ Voor 41% gewijzigd door whoami op 10-03-2003 11:00 ]

https://fgheysels.github.io/


Verwijderd

Ja, WhoAmI,

Dat stukje:
'toon eventueel een gepaste/duidelijke fout'
Daar gaat mijn vraag over!

In dit voorbeeld weet ik dus wel welke tabel er geschreven wordt, maar alle velden worden beschreven. Het is zeer vriendelijk naar de gebruiker, als je ook ff vertelt WELKE KOLOM de bottleneck vormt.....
In het engels is deze info beschikbaar, waarom niet als elementaire info, maar verwerkt in een lap tekst?

[ Voor 63% gewijzigd door Verwijderd op 10-03-2003 11:08 ]


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dat hangt van de exceptie af die gegooid wordt. Een exceptie is niets anders dan een klasse. Die bevat altijd een Message die getoond wordt, maar vaak ook een ErrorID. Deze zou je kunnen gebruiken voor je eigen melding. Sommige excepties geven meer informatie weg. Of dat bij jouw ook het geval is kan je zelf zien door maar de declaratie van die exceptie klasse te kijken.

We adore chaos because we like to restore order - M.C. Escher

Pagina: 1