AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Autom. fortlaufende Zahl auf Tastendruck
Thema durchsuchen
Ansicht
Themen-Optionen

Autom. fortlaufende Zahl auf Tastendruck

Ein Thema von berens · begonnen am 27. Aug 2007 · letzter Beitrag vom 27. Aug 2007
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Autom. fortlaufende Zahl auf Tastendruck

  Alt 27. Aug 2007, 10:21
Hi!

Ich plane alle meine Fehlermeldungen mit einer eindeutigen Nummer zu versehen, damit mir die Kunden am Telefon diese nennen können, und ich direkt weiss, wo das Problem aufgetreten ist.

Damit ich nicht mal im eifer des Gefechts versehentlich eine Nummer doppelt vergebe, wäre es super, wenn Delphi mit auf Tastendruck eine Zahl zur Verfügung stellt, die bisher noch nicht benutzt wurde.

Eine GUID scheidet leider aus, denn bis der Kunde diese am Telefon durchgegeben hat, ist der Tag halb vorbei

Am besten wären eindeutige Nummern innerhalb jeder Unit (die Units sind schon eindeutig nummeriert); es darf aber auch sein, dass die Nummer im kompletten Projekt nur einmalig vorkommt.


Ich denke mal, sowas kann die IDE nicht, oder?

Wie löse ich das am Besten? Einfach am Anfang der Unit den aktuellen Höchstwert merken?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Autom. fortlaufende Zahl auf Tastendruck

  Alt 27. Aug 2007, 10:54
Zitat von berens:
Ich plane alle meine Fehlermeldungen mit einer eindeutigen Nummer zu versehen, damit mir die Kunden am Telefon diese nennen können, und ich direkt weiss, wo das Problem aufgetreten ist.
In der Praxis führt das aber dazu, dass die Fehlermeldungen eher kryptisch und zu allgemein werden.
Zum Beispiel
Code:
1000=Datei nicht gefunden
1001=Datei kann nicht gespeichert werden
1002=Timeout überschritten
Das sind so allgemeine Fehlermeldungen mit denen man nicht viel anfangen kann.
"WELCHE" Datei wurde nicht gefunden ?
Wie lange dauerte der Timeout, der überschritten wurde ?

Anstatt sich auf Fehlernummern zu konzentrieren (und Zeit mit deren Verwaltung zu verschwenden) sollte man besser den Fehler so genau wie möglich anzeigen.
Beispiel:
Delphi-Quellcode:
  try
    LadeMessdatenwerte(dateiname);
  except
    on E: Exception do
    begin
      e.Message := 'Fehler beim Laden der Messdatendatei <'+dateiname+'>'#13#10+
        e.Message;
      raise;
   end
Die Fehlermeldung könnte dann so aussehen:
Fehler beim Laden der Messdatendatei <C:\voltmeter.txt>
Ungültige Variantumwandlung.
Damit lässt sich schon einiges mehr anfangen.
Man kann auch jeden Fehler mit einem Hilfekontext (ein Integerwert) versehen.
siehe: http://www.delphipraxis.net/internal...ct.php?t=20329

Dann sieht das Telefongespräch mit dem Kunden so aus:
Code:
Kunde: BUÄÄÄÄH. Da steht, dass er die Datei soundso wegen der Versionsnr nicht laden kann.
Support: Haben Sie schon auf Hilfe gedrückt, wenn die Fehlermeldung kommt ?
         Da wird erklärt, was Sie tun müssen.
Kunde: Hab ich jetzt gar nicht gesehen; ... aha, da steht, die Datei muss mit der Programmvers.
       2.0 oder höher erzeugt sein. Hmmm, meine Datei ist aber noch von Version 1.0.
       Und jetzt ?
Support: Das steht auch in der Hilfe. Sie müssen das Konvertprogramm verwenden.....
Wäre der Kunde nicht so ein DAU gewesen, hätte er das Problem selbst lösen können.
Ergo: zuerst auf gute & vollständige Fehlermeldungen konzentrieren.
Bei sehr grossen Programmen kann eine Fehlernummer dem Programmierer helfen, den Punkt im Sourcecode
zu finden an dem der Fehler ausgelöst wird.
Aber eine Fehlernummer zusammen mit einer allgemeinen Fehlermeldung führt nur dazu das der Kunden anrufen muss. Und das wollen wir doch nicht.
Andreas
  Mit Zitat antworten Zitat
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Autom. fortlaufende Zahl auf Tastendruck

  Alt 27. Aug 2007, 11:12
Das stimmt natürlich.

Ich habe mir ein Modul geschrieben, dass die regulären "ShowMessage" und "MessageDlg" ersetzt. Der Benutzer bekommt die Frage gestellt mit einem genaueren, erläutenderem Text. Falls die Frage immernoch nicht klar ist, kann er auf "weitere Informationen" klicken und landet in unserer Wiki auf einer Seite, die sich speziell mit dieser Fehlermeldung beschäftigt.

Wichtig: Eine Wikiseite für jede Quellcodezeile, die diese/meine Showmessage aufruft. D.h. es gibt in meinem Programm _keine_ generelle Fehlermeldung. Deshalb brauche ich ja speziell eine eindeutige Nummer, die in meinem gesamten Programm nur einmal auftreten darf.

Die URL für die Wiki setzt sich aus dem Meldungstyp (Fehler, Info, ...), der Modulnummer und dieser gesuchten eindeutigen Nummer zusammen. So weiss ich schon bei Nennung der Fehlernummer ( (Ab-)Frage, Modul Datenbank, Meldung 17) grob, worum es bei dieser Meldung geht, und ich kann mir die URL recht schnell zusammenbauen, ohne dass der Kunde mir die URL komplett durchgeben muss. Eine GUID macht sich, denke ich mal, auch nicht wirklich gut als URL, oder?

Wenn möglich, darf der Kunde auch bei diesen Abfragen "Antwort merken" anklicken, womit dieser Dialog dann immer automatisch die Frage beanwortet, wenn der Kunde das nächste Mal diese Aktion ausführt (lässt sich natürlich auch wieder deaktivieren). So reduziere ich die Anzahl der ggf. nervenden Pop-Ups. Dafür brauche ich aber auch wieder eine eindeutige ID.

Beispiel Wiki:
Meldung: Die Datei ist veraltet und kann nicht geladen werden.
Erweiterte Beschreibung (steht auch noch in der Meldung in meinem Programm selbst) : Die Datei ist in dem Format von Programmversion 1.0. Sie verwenden im Moment die Version 2.0.

Ursache: Der Benutzer versucht beim Öffnen einer Datei im Hauptprogramm Dateien der alten Version zu Laden.

Abhilfe: Bitte Verwenden Sie unseren Konverter (Anleitung -->klick) um die Datei in der neueste Format umzuwandeln. Versuchen Sie dann erneut das Öffnen.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Autom. fortlaufende Zahl auf Tastendruck

  Alt 27. Aug 2007, 12:28
Du könntest dir eine neue Unit erstellen:
Delphi-Quellcode:
Unit ErrorMessages;

interface

const ENO_DB_INVALID_CONNECTION = 100; // Unit MyDatabase
const ENO_DB_BAD_USER_PW = 101;
...
Jede neue Fehlermeldung wird einfach in diese Unit eingetragen.
Etwas Schreibarbeit, aber so bleibt der Überblick erhalten.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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