LFBS Home Lehrstuhl für Betriebssysteme RWTH
Disclaimer/
Haftungsausschluss
Webmaster
(admin@lfbs...)
Home > Lehre > PI2 > FAQ  

Praktikum Informatik 2


Hinweise

  • Um den Simulationsserver zu Hause starten zu können ist zumindest ein Runtimesystem von Java 2 erforderlich. Das jar-File muss im Arbeitsverzeichnis liegen. Beachten Sie dazu auch die Hinweise im Readme.txt, das sich im ZIP-File befindet.




Programmierung

F: Eingabedatei nicht gefunden (Aufgabe 8)
A: Das Arbeitsverzeichnis ist C:\temp. Die Dateien müssen also in diesem Verzeichnis liegen oder beim Öffnen muss der volle Pfad angegeben werden

F: warning C4786 : ... Bezeichner wurde auf 255 Zeichen in den Browser-(Debug-)Informationen reduziert
A: definieren Sie in allen betroffenen Headerdateien: #pragma warning(disable : 4786)

F: can not convert binary operator .... (Operatoraufruf von z.B. cout/cin)
A: 1. #include <iostream.h> anstatt #include <iostream>
2. beim Überladen des allgemeinen >> operators wurde ostream& als 1. Parameter vergessen

F: Fehlermeldung des Linkers: error LNK2001: Nichtaufgelöstes externes Symbol ...: static ...
A: Statische Variable nicht nur in H-Datei kreieren, sondern in CPP-Datei anlegen und initialisieren

F: Fehlermeldung: Debug Assertion Failed ... BLOCK_TYPE_IS_VALID ...
A: Speicher wurde doppelt freigegeben

F: Fehlermeldung "Nicht deklarierte Bezeichner" für Membervariablen
A: Zuordnung der Funktion zu Klasse (Klassenname:: vor Funktionsaufruf) fehlt

F: Fehlermeldung: Überladene Member-Funktion ... nicht in ... gefunden
A: Entsprechender Prototyp in H-Datei fehlt oder stimmt nicht mit Implementierung überein. Wichtig: Auch const-Angaben müssen übereinstimmen

F: Der Compiler kennt cout nicht
A: Wenn die STL benutzt wird (einschl. String), muss für cout der entsprechende Namespace (std) angegeben werden. Entweder explizit durch std::cout oder allgemein durch "using namespace std"

F: Es wird auch für PKW immer vPrint aus Fahrzeug statt aus PKW benutzt
A: Funktion vPrint ist in Fahrzeug nicht virtuell definiert oder es werden Objekte statt Zeigern/Referenzen benutzt (und damit z.B. bei Parameterübergabe nach Fahrzeug konvertiert)

F: Wechsel zwischen rechts-/linksbündig bei Formatierung mit ioflags funktioniert nicht
A: Flags left und right sind zwei unabhängige Flags, die theoretisch beide gleichzeitig gesetzt sein können. Dann geht left vor. Man muss also, ggf. das Flag mit resetiosflags zurücksetzen

F: Bei der Ausgabe mit dem Ausgabeoperator wird statt der Daten nur eine 8-stellige Zahl ausgegeben. Wie kommt das?
A: Es wurde statt des Objektes ein Zeiger ausgegeben. Es fehlt eine entsprechende Dereferenzierung also z.B. cout << *pPKW

F: Der Grafikserver zeichnet keine Fahrzeuge. Was kann falsch sein?
A: Die relative Position muss zwischen 0 und 1 liegen, sonst wird nichts gezeichnet und statt dessen unten links 'Exception Null' ausgegeben. Die Namen der Wege müssen Variablen vom Typ string sein und vorher mit diesem Namen gezeichnet worden sein. Es müssen mindestens 3 verschiedene Positionen für ein Fahrzeug gezeichnet werden, da die erste und letzte Position wegen der Geschwindigkeit nicht zu erkennen sind.

F: Sollen die Elemente eines Vektors mit dem pop_back()-Befehl oder mit delete vektor[i] gelöscht werden?
A: Das sind 2 verschiedene Dinge:
a) delete vektor[i] löscht das Element vektor[i], aber nimmt es nicht aus dem vektor. vektor[i] ist also noch definiert, zeigt aber ins "Nirwana".
b) pop_back() löscht das Element aus dem vektor, das Element selbst bleibt aber erhalten, es kann also (über eine andere Variable) noch benutzt werden.

F: Wenn ich die map in AktivesVO als static deklariere, bekomme ich vom Linker eine Fehlermeldung wegen eines unaufgelösten externen Verweises. Was ist falsch?
A: Wenn eine Variable im Headerfile als static definiert wird, wird damit noch kein Speicherplatz für diese Variable angelegt (da sie ja nur einmal angelegt werden soll). Man muss also in der zugehörigen cpp-Datei noch den entsprechenden Speicherplatz für die Variable definieren: map AktivesVO::VOMap;

F: Beim letzten Durchlauf der Liste scheint der Iterator (LazyListe.end()) nicht ganz zu funktionieren, aber ich bekomme weder beim Compilieren, Linken noch beim eigentlichen Programmablauf eine Fehlermeldung, auch keine Speicherbereichsverletzung. Das Programm gerät einfach in eine Endlosschleife. Kennt jemand eine Lösung ?
A: LazyListe.end() ist nicht der "letzte Iterator", sondern zeigt hinter das letzte Element der Liste (siehe auch Skript Kapitel 3.4). Eine Schleife zum Durchlaufen der Liste sollte also etwa so aussehen:
for (itL=liste.begin(); itL!=liste.end();itL++) ...
(itL als Iterator auf Liste vorausgesetzt). Syntaktisch sind auch Operationen mit "Iterator end" korrekt, semantisch meist nicht. Das Programm läuft in einer Endlosschleife, da Liste.end()++ wieder denselben Wert ("Iterator end") liefert.



Entwicklungsumgebung

F: "Die Anwendung konnte nicht gestartet werden, weil MSVCP80D.dll nicht gefunden wurde. Neuinstallation der Anwendung könnte das Problem beheben."
A: Projekteigenschaften aufrufen (Projekt -> [Projektname]->Eigenschaften bzw. einfach Alt+F7) und unter Konfigurationseigenschaften/Manifesttool die Option "FAT32-Problem umgehen" aktivieren

F: linker Fehler folgender Art:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/vvv.exe : fatal error LNK1120: 1 unresolved externals
A: Es wurde bei New Projects ein falsches Projekt ausgewählt (in obigem Fall Win32 Application anstatt Win32 Console Application)

F: Stdafx.h wird nicht gefunden
A: Stdafx.h aus Projekt und Verweise aus Dateien löschen. Beim Erstellen des Projektes wurde nicht "Leeres Projekt" gewählt

F: Projekt wurde zu Hause richtig übersetzt, aber im CIP-Pool gibt es Fehler
A: Nur die *.CPP- und *.H-Dateien von zu Hause mitbringen und im CIP-Pool in Projekt integrieren. Danach Menüpunkt "Alles neu erstellen" aufrufen

F: Source-Dateien können nicht gespeichert werden
A: Mehr als 10 MB auf U: verbraucht. Arbeitsbereiche auf C:\temp legen. Inhalt der Debug-Verzeichnisse auf U: löschen. Mail löschen und Trashfolder in Netscape leeren. Freigabe dauert nach Bereinigung ca. 15 Min

F: Nach starten des Debuggers:
Loaded 'C:\WINNT\System32\ntdll.dll', no matching symbolic information found.
Loaded 'C:\WINNT\system32\KERNEL32.DLL', no matching symbolic information found.
The thread 0xB7 has exited with code 4325968 (0x420250).
The program 'K:\users\holger\xxx\Debug\xxx.exe' has exited with code 4325968 (0x420250).
A: Es wurde ein Go ohne Breakpoints gemacht. Dann läuft er durch bis zum Ende des Programms und bleibt bei "Press any Key to Continue", also in einer Lib stehen, dessen Symbolinformation nicht existiert. Entweder ein Breakpoint oder ein Step into.

Print Version