Autoren: Gruppen projekt98 und projekt99
in Bearbeitung <name> <datum>
(Jeder erkannte Fehler in den Quellfiles ist hier zu dokumentieren. Ist darüber hinaus eine 'problemlose' Fehlerbehebung möglich (ohne Seiteneffekte, ...), so kann diese am Quelltext vorgenommen werden. Sie ist dort kenntlich zu machen und außerdem hier als vorgenommene Korrektur zu erwähnen.)
Statusarten:
Nr. | Datum | Status | Wer? | Beschreibung |
---|---|---|---|---|
1 | 15.9.2000 | 1st FIX |
gollnick kullmann, reinecke |
Charakterisierung: In der Steering Funktion StartTimer kommt es zum Setzen der Zustandsvariable bTimerActive auf TRUE, auch wenn die Timerinitialisierung misslingt, da zuerst die Variable gesetzt wird und dann die Initialisierung erfolgt. Behebung: bTimerActive wurde auskommentiert, ein aktiver Time kann mit nEvent!=0 ermittelt werden. |
2 | 18.07.2002 09.08.2002 |
1ST FIX |
hanisch hanisch |
Charakterisierung: Kein Unterschied bei Auswahl von Option "Ausführlicher Report" Ursache: Variable bSendReport wird vor Ausführung eines Makros unabhängig vom Zustand der Checkbox immer auf TRUE gesetzt Behebung: Steering.Visualising(TRUE, TRUE) ersetzt durch Steering.Visualising(Steering.IsResponding(), TRUE) |
3 | 08.08.2002 21.10.2002 |
1ST FIX |
hanisch hanisch |
Charakterisierung: Das Makro-Kommando wird direkt aufgerufen aus der Funktion TTopographyExecute::Dlg_OnCommand(). Dabei wird das Objekt der Klasse dynamisch erzeugt. (TheCmd=(TControlFlankCmd*) new TControlFlankCmd(Cmd);). Das zuletzt ausgeführte Kommando-Objekt wird beim Programmende nicht gelöscht. Ursache: Löschen der Kommando-Objekte geschieht immer nur vor der Erzeugung eines neuen Kommando-Objekts. Behebung: Löschen des Kommando-Objekts im Destruktor von TSteering. Diesen Destruktor gibt es nicht ! Einfügen eines Destruktors für die Klasse TSteering: TSteering::~TSteering(void) { if (TheCmd) delete (TheCmd); } |
4 | 28.07.2002 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Zahlreiche Member vom TSteering werden nicht initialisiert. Ein Teil der Member wird bei einigen Kommandos nur geschrieben und in anderen nur gelesen. Wenn man ein lesendes Kommando vor einem schreibenden aufruft, werden uninitialisierte Werte verwendet, die nichtdeterministisches Verhalten zur Folge haben. Behebung: Im Konstruktor erfolgt nun die Initialisierung mit 0. |
5 | 12.11.2001 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: U.U. schlägt das Laden von Makros fehl. Behebung: LoadMacro benutzt nun das Verzeichnis aus dem die DEVELOP.EXE gestartet wurde, statt dem aktuellen Verzeichnis. |
6 | 04.06.2002 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: * Das Laden von Makros im Unix-Textdateienformat schlägt fehl. * Nicht in jedem Fall wird das Dateihandle wieder freigeben. Behebung: LoadMacro verwendet nun die Klasse TTxtRead zum Lesen der mak-Dateien. Sonstige Fehler wurden auch behoben. |
7 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Beim Aufruf von TSteering.Reset() stützt das Programm ab. Behebung: Die notwendigen Initialisierungen und Freigabe von Speicherplatz wurden aus ToggleInterrupt() übernommen. |
8 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Methode GetMacroByNumber kann uninitialisierte Werte außerhalb von aMacroList zurückgegeben. Behebung: Die Methode gibt nun ggf. NULL zurück. |
9 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Behebung: * Methode DeleteMacro löscht nun wirklich das gesuchte Makro, das war vorher (in mehrfacher Weise) nicht der Fall. * Absturzursache beseitigt, wenn das zu löschende Makro nicht vorhanden war. |
10 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Das Kommando SetupAreaScan wird beim Parsen der mak-Datei akzeptiert, aber nirgends implementiert. Wenn man es verwendet, tritt ein Fehler auf. Behebung: Auskommentiert, so dass es beim Parsen nicht mehr akzeptiert wird. |
11 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Die Anweisungen friend RecallSteering, friend FrameWndProc und friend TMacroExecute sind sinnlose Friend-Relationen. Behebung: auskommentiert |
12 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Die Makroverarbeitung ist sehr stark mit dem Hauptfenster verknüpft und auch der Timer, der die Verarbeitung der Kommandos im Hintergrund ermöglicht, arbeiten nur auf demSteering-Objekt. Es muss sichergestellt werden, dass der Benutzer kein eigenes Objekt erstellen kann. Die Kopienbildung beim Initialisieren des Steering-Objekts sollte vermieden werden. Behebung: Copykonstruktor und Zuweisungsoperator sind nun private. Der Standardkonstruktor kann nicht private sein, weil das Steering-Objekt sonst nicht erstellt werden kann. Kopienbildung auskommentiert. |
13 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Für bestimmte Parameter bei den Methoden Visualising und StartMacroExecution ist der Wertebereich BOOL ausreichend, dadurch wird der Benutzer nicht verleitet durch unsinnige Werte Fehler zu verursachen. Behebung: korrigiert |
14 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Die Methoden ParsingMacroId und ParsingCmd geraten durch das methodenumschließende while(1) in eine Endlosschleife, wenn die zu parsende Bezeichnung nicht gefunden wird. Behebung: entfernt |
15 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: TCmd::eStep wird nicht initialisiert, das hätte beim leer implementierten (TInquireCmd) oder neuen Kommandos zur Endlosschleife führen können. Behebung: im Konstruktor initialisiert |
16 | 12.01.2003 | WIS FIX |
kullmann, reinecke |
Charakterisierung: Es wäre wünschenswert den Fortschritt der Makroverarbeitung, abhängig vom Symbol GermanVersion, entweder in deutsch oder englisch auszugeben. Behebung: korrigiert und Testskripte angepasst |
17 | 12.01.2003 | 1ST FIX |
kullmann, reinecke |
Charakterisierung: Wenn der gewünschte Detektor bei TChooseDetectorCmd nicht ausgewählt werden konnte, werden die Parameter des falschen (zuvor gewählten) Detektors geändert. Behebung: nun wird sofort ein Fehlercode zurückgegeben, der das Scheitern des Kommandos kennzeichnet |
18 | 24.06.2003 | 1ST; FIX |
sacklows; kullmann, reinecke |
Charakterisierung: Der TScanCmd-Konstruktor stürzte bei bestimmten HARDWARE.INI-Einstellungen ab, dies geschah grundlos und ohne Warnung an den Nutzer. Behebung: Die Berechnung wurde (unter Berücksichtigung von "Division durch 0") geändert. Die Umwandlung nach int musste per Zeichenkette erfolgen. Zur Anzeige, dass der Scan begonnen hat (der Fehler nicht aufgetreten ist), wird nun die Meldung 'Startposition ist erreicht' ausgegeben. |
19 | 24.09.2000 | 1ST | gollnick | Charakterisierung: In der Klasse TGotoPeakCmd greift die Funktion ControlStep auf den Feldwert fIntensity[2] zu, um den Intensitätsunterschied der vorherigen Messung zu bestimmen ( idif1 ). Beim ersten Aufruf von ControlStep ist fIntensity[2] jedoch unbestimmt. Es wird zwar am Anfang der Funktion eine Verschiebung aller Feldwerte um eine Position vorgenommen, die auch fIntensity[2] einen Wert zuweist, aber dieser Wert stammt von fIntensity[1]. Vor der Verschiebung ist fIntensity[1] ebenfalls unbestimmt, da im bisherigen Programmverlauf nur fIntensity[0] ein Wert zugewiesen wurde. Somit wird fIntensity[2] mit einem unbestimmten Wert belegt. Behebung: Entweder muss fIntensity[2] zuvor ein sinnvoller Wert zugewiesen werden oder, der Zugriff auf fIntensity[2] muss für den ersten Aufruf von ControlStep unterbunden werden. |
20 | 12.01.2003 | 1ST | kullmann, reinecke |
Charakterisierung: * TGotoPeakCmd::bBackMoveActive wird nicht initialisiert, damit könnte die falsche Antriebsposition angefahren werden * TGotoPeakCmd::fSearchIntensity wird nie beschrieben, nur gelesen: -> Fehler beim Zugriff in Methode TGotoPeakCmd::ReadyStep |
21 | 12.01.2003 | 1ST | kullmann, reinecke |
Charakterisierung: * TSteering::fStartIntensity wird nicht initialisiert aber bei TTopograhyExecute::Dlg_OnCommand gelesen * TSteering::bInquireResult wird nicht initialisiert aber bei TSteering::ExecuteNextCmd gelesen |
22 | 12.01.2003 | 1ST | kullmann, reinecke |
Charakterisierung: Für Methode TGotoIntensityCmd::ControlStep sind in der Designbeschreibung zwei potentielle Fehlerquellen gekennzeichnet. |
23 | 04.04.2003 | AEN FIX |
kullmann, reinecke |
Charakterisierung: Das globale Objekt Steering (Datei M_STEERG.CPP) wurde durch den Copy-Konstruktor aus einer temporären Kopie erstellt. Behebung: Mit private des Copy-Konstruktors und Zuweisungsoperators fiel dieser Fehler auf. Das Kopienkonstrukt wurde entfernt. Das Subsystem Ablaufsteuerung ist sehr sensibel, weil es nur mit DEM Steering-Objekt arbeiten darf. |
Nr | 19.06.2000
20.06.2000 |
1ST
FIX |
sacklows
sacklows |
Charakterisierung: ....................................................
Behebung: ... |