Fragen und Kommentare zur 3. Vorlesung / zum 3. Übungsblatt
@Hannah: Achso, das wusst ich nicht. Problem gelöst. Vielen Dank. Peter 13Mai2010 21:03
@Thorbjörn: Ja, die 403er gibts immer, wenn wir nichts mehr hochladen dürfen... SebastianS 13Mai10 03:41
Hey, ich bin etwas spät dran mit commiten, aber ich kam den ganzen Tag nicht dazu wegen Bachelorarbeitsstress. Jetzt bekomme ich folgende Fehlermeldung:
Der Server hat einen unerwarteten Rückgabewert (403 Forbidden) in Antwort auf die Anfrage MKCOL für »/teaching/cplusplus-ss2010/!svn/wrk/45a66397-8b0f-444d-85fd-b3877645228f/tj9/uebungsblatt-3« zurückgeliefert.
Ist der Server einfach schon dicht?, Grüße Thorbjörn 12Mai10 21:12
@Peter: Ach so, dann ist das Problem wahrscheinlich, dass Sie das svn commit danach vergessen haben. Genau wie bei svn add wird bei svn remove die Aktion erstmal nur "gescheduled". Vollzogen wird sie dann erst beim nächsten svn commit. Hannah 12Mai10 20:06
@Hannah: Keine, das ist das Merkwürdige daran. Peter 12Mai2010 18:16
@Peter: Was genau kommt denn für einen Fehlermeldung wenn sie svn remove erfahrungen.txt machen? Hannah 12Mai10 15:12
Oh wie peinlich! Ja, ich habe hier tatsächlich Test geschrieben, und bei den anderen TEST. Deshalb kam nur hier die Fehlermeldung. Ist mir nicht aufgefallen. Danke! Regina 12.Mai2010 13:39
Irgendwie schaff ichs nicht, die alte erfahrungen.txt aus dem Hauptverzeichnis vom repository zu löschen. Habs mit svn remove versucht, ging aber nicht. Kann mir jmd. helfen? Peter 12Mai2010 13:33
@Regina & Jens : Ich würde eher sagen dat das Problem ist, dass Test in Caps also TEST geschrieben werden müssen, oder? JonathanN 12.Mai2010 13:33
@Regina: Schreib mir mal den Code in der Gegend deiner Zeile 14 auf. Jens 11.Mai2010 12:52
@Jens: Kann eigentlich nicht sein. In der Musterlösung gibt es da auch kein Semikolon und bei den anderen Testzeilen hab ich auch keins. Und da gibt es keine Fehlermeldung.Regina 12.Mai2010 11:17
@Regina: Das hoert sich so an als fehlt da irgendwo ein Semikolon? Jens 12.Mai2010 11:06
Hallo, ich habe noch ein Problem: Beim Kompilieren des Testprogramms bekomme ich die Meldung:
CalendarTest.cpp:14: error: expected constructor, destructor, or type conversion before ‘(’ token
Das ist die Zeile, in der Test(CalendarTest, NumOfDaysInMonth) steht. Was ist da falsch? Danke schonmal Regina 12.Main2010 10:59
@Regina: Ich habe Deine Frage in die FAQ kopiert und dort beantwortet. Jens 11.Mai2010 12:38
Hallo, wenn ich versuche gtest anzuwenden, kommt bei mir immer nur die Meldung:
/usr/local/lib/libgtest.so undefined reference to 'pthread_key_create' /usr/local/lib/libgtest.so undefined reference to 'pthread_getspecific' /usr/local/lib/libgtest.so undefined reference to 'pthread_key_delete' /usr/local/lib/libgtest.so undefined reference to 'pthread_setspecific'
Das passiert auch, wenn ich versuche, die Musterlösungen zu kompilieren. Also muss es etwas mit meiner Version von Gtest zu tun haben. Regina 11.Mai2010 12:44
@Martin: Mal svn resolved erfahrungen.txt probieren. Ansonsten verstehe ich nicht was los ist. Falls gar nichts mehr klappen sollte, komm mal morgen bei mir vorbei. Jens 11.Mai2010 0:57
@Jens: Ich weiß schon, wie es eigentlich gehen sollte. Ich habe es ja beim zweiten Übungsblatt gemacht und da hat es geklappt. Beim Ordner uebungsverzeichnis1 habe ich auch schon versucht, die Datei manuell mit svn add und dann svn commit hinzuzufügen, aber das hat wie nicht anders zu erwarten auch nicht geklappt. Es ist aber noch etwas komisch: Die Datei wird mir zwar beim Befehl svn list angezeigt, aber beim checkout wird sie nicht der Arbeitskopie hinzugefügt. Außerdem habe ich mittlerweile festgestellt, dass bei svn status für besagte Datei ein ! steht, was ja wohl einen Konflikt bedeutet. Habt ihr jetzt eine Idee? MartinW 10Mai10 21:00
@Sebastian: Ich würde sagen, das ist auch Geschmackssache und kommt darauf an, wie die Funktion an anderen Stellen vorrangig benutzt wird. Wie gesagt, wäre ich in diesem Fall hier auch dafür, das int day Argument einfach wegzulassen oder gleich ganz zu einer Funktion bool isLeapYear(int year) zu wechseln. Hannah 10Mai10 18:14
@JonathanN: Wie gesagt, in unserem Fall ja, aber allgemein gesehen (also wenn man die Funktion mal separat vom restlichen Programm betrachtet), nein, denn am 29.2. sollte ja der gleiche Wert wie am 1.3. aber nicht der gleiche wie am 28.2. geliefert werden (imo). ll ist übrigens ein Alias, den kannst wie folgt erstellen: Editiere "~/.profile", und füge am Ende hinzu: "alias ll='ls -l'" (ohne Anführungszeichen). SebastianS 10Mai10 15:25
@Tina: Ich habe deine Frage in die FAQ verschoben und beantwortet. Jens 10.Mai10 14:57
Hallo, was bedeutet nach dem bauen die Fehlermeldung: Makefile 8 ***missing seperator. Schluss.? Habe schon alle nur möglichen Leerzeichen rausgelöscht...Vielen Dank Tina 10Mai10 14:49
@Sebastian: Aber selbst dann brauchst du doch nur den Monat? Oder? Also in anderen Worten, wenn der Februar schon durch ist machste halt den einen hinzu und wenn nicht noch nicht, oder? Da fällt mir noch was ganz anderes ein, woran liegt es eigentlich ob der Befehl "ll" in Linux geht oder nicht, und man auf "ls -l" zurück greifen muss? JonathanN 10Mai10 14:12
@Martin: Versuchen sie evtl. erfahrungen.txt selbst hinzuzufuegen? Dann verstehe ich das Problem. Bevor Sie anfangen in Ihrem Ordner zu arbeiten, machen sie es sich zur Gewohnheit ein 'svn update' durchzufuehren. Sie sehen dann, dass Sie eine leere erfahrungen.txt von uns erhalten haben. Diese können Sie verändern und commiten. Jens 10.Mai2010 11:53
@Martin: Ich kann das Problem auch nicht nachvollziehen. Versuchen Sie mal einen frischen checkout und dann dort nochmal versuchen erfahrungen.txt zu adden. Wenn das auch nicht klappt koennen Sie mal vorbeikommen. Jens 10.Mai2010 11:13
@Hannah, Alex: Wäre es nicht sinnvoll, schon am 29.2. eines Schaltjahres getNumLeapDaysSince1Jan1800 um eins zu erhöhen? Immerhin ist der Schalttag ja schon angebrochen? Klar, es macht für uns erstmal keinen Unterschied, aber generell macht eine Tagangabe bei der Funktion aus diesem Blickpunkt doch durchaus Sinn, oder? SebastianS 10Mai10 11:02
@Alex + Alle: Ja, das stimmt, für die Anzahl der Schalttage ist der Tag des Monats irrelevant, insofern macht es Sinn das Argument int day wegzulassen. Und wie ganz am Anfang (weiter unten) schon gesagt, können Sie auch gerne statt dieser Funktion die Funktion bool isLeapYear(int year) implementieren, ich finde das inzwischen auch die elegantere Variante. Weshalb die von vorher aber nicht falsch ist, es ist ein Stück weit Geschmackssache. Hannah 10Mai10 10:04
Wie ist es dann möglich, dass die Funktion: int getNumLeapDaysSince1Jan1800(int day, int month, int year), mit drei Variablen aufgerufen wird? Das Programm kann sich ja nicht einfach einen Tag ausdenken?! Finde die Sache wie gesagt nicht ganz schlüssig. Da der Tag in dieser Funktion nicht nötig ist, werde ich ihn dementsprechend entfernen. Und darauf hoffen, dass es so dann alles stimmt. Vielen Dank. Alex R. 10.May 08:11
@Martin + Dario: Ich habe Jens Hoffmann gebeten, danach zu schauen. Ich selber habe keine Probleme mit dem SVN, es scheint also im Prinzip zu laufen. Hannah 9Mai10 23:55
Ich habe auch dasselbe Problem mit Checkout..naja ich denke ,dass svn heute feiernabend macht. Dario 9Mai10 22:22
Ich habe Probleme beim Hinzufügen von erfahrungen.txt in uebungsblatt1. Dazu muss ich sagen, dass ich die entsprechende Datei schon in uebungsblatt2 problemlos hochgeladen habe. Versuche ich jedoch dasselbe in uebungsblatt1, so bekomme ich von SVN die Meldung: Der Server hat einen unerwarteten Rückgabewert (403 Forbidden) in Antwort auf die Anfrage CHECKOUT für »/teaching/cplusplus-ss2010/!svn/ver/1227/mw19/uebungsblatt-1« zurückgeliefert. Kann da jemand von den Tutoren mal nachschauen, was da los ist? Oder habe ich doch irgendwas falsch gemacht? MartinW 9Mai10 20:23
@Jonas: Das heißt, dass der Linker die dynamische Variante der gtest Bibliothek libgtest.so.0 nicht findet. Dafür gibt es drei Lösungen. Für die ersten beiden müssen Sie erstmal rausfinden, wo sich die Datei libgtest.so.0 auf Ihrem Rechner befindet. Nehmen wir einmal an, sie steht in /usr/local/lib, da steht sie normalerweise (alternativ ist auch /usr/lib möglich). LÖSUNG 1: Sie sagen dem Betriebssystem vor der Ausführung des Programms, wo es nach dynamischen Bibliotheken suchen soll, und zwar mit export LD_LIBRARY_PATH=/usr/local/lib. LÖSUNG 2: Sie teilen diese Information schon dem Linker mit, und zwar indem Sie der Datei /etc/ld.so.conf die Zeile /usr/local/lib hinzufügen. LÖSUNG 3: Sie linken mit der statischen Variante libgtest.a der gtest Bibliothek indem Sie bei den g++ Optionen hinter das -lgtest ein -static hinzufügen. Hannah 9Mai10 18:54
Ich habe Probleme mit Gtest. Den Test erstellt er ohne Probleme, doch wenn ich versuche ihn aufzurufen bekomme ich folgende Fehlermeldung: "error while loading shared libraries: libgtest.so.0: cannot open shared object file: No such file or directory" Das seltsame ist, der Test aus Uebungsblatt 2 bringt mir nun dieselbe Fehlermeldung, obwohl er vorher problemlos funktionierte. Jonas 9Mai2010 18:36
@Sebastian: Alles klar. Danke für die Erklärung Dario 9Mai2010 13:50
@Dario: Die Idee ist, dass die cpplint.py im Überverzeichnis liegt, also in etwa so:
|- cpplint.py |- uebungsblatt-3 |- CalendarMain.cpp |- CalendarFunctions.cpp |- ... |- uebungsblatt-2 |- SumOfDivisors.cpp |- ... |- ...
Das stand auch in deinem Makefile: ../cpplint.py . Das .. gibt das übergeordnete Verzeichnis an. Was du jetzt gemacht hast, ist ein Unterverzeichnis. Die Idee mit dem übergeordneten Verzeichnis ist einfach, dass wir die cpplint.py nicht jedesmal mithoch- und runterladen (müssen), sondern, dass sie im Hauptverzeichnis liegt und die jeweiligen Makefiles der Übungen darauf zugreifen können, ohne dass es nochmal in das selbe Verzeichnis kopiert werden muss. SebastianS 9Mai2010 14:51
@Dario: Also ich antworte mir selbst: Im makefile habe ich geschrieben nameüberverzeichnis/cpplint.py *.cpp und jetzt funktioniert es. Nur eine Frage. Warum wenn ich alles gemischt in einem ordner behalte klappt es nicht? Gruß Dario 09 Maio 2010 14:47
@Sebastian: Also ich habe ein Überverzeichnis gemacht name: lint11 dann drin habe diese cpplint.py datei verschoben aber geht´s noch nicht. Bei Makefile datei habe ich dieses Kommando:
lint: python ../cpplint.py *.cpp
soll ich auch hier was ändern? Dario 09 Mai2019 14_41
@Dario: Ja, dann schreib die cpplint.py mal in das Überverzeichnis SebastianS 09Mai2010 13:42
@SebastianS: Ja ,ich habe alles in uebungsblatt-3 drin ... Dario 09 Mai201o 13:35
@Dario: Hast du die cpplint.py im selben Verzeichnis oder im übergeordneten Verzeichnis? SebastianS 09Mai2010 13:33
Hallo , ich habe ein Problem mit lint. Ich tippe make lint und dann sagt der Compiler mir :
python ../cpplint.py *.cpp python: can't open file '../cpplint.py': [Errno 2] No such file or directory make: *** [lint] Fehler 2
Ich habe die lint datei in meinem Ordner aber trotzdem klappt es nicht. Ich habe neulich die version Ubunto 10.4 mit der vorheriger Version hat es immer funktioniert. Könnte es daran liegen? Soll ich irgendwelche Pakete installieren??? Gruß und Danke im Voraus Dario 09Mai 2010
@Dario: Ja, genau, man muss alle Tage ab dem 1.1.1800 ausrechnen. Nehmen wir an, das gegebene Datum ist der 8. Mai 2010. Dann sind das (1) die ganzen Jahre dazwischen mal 365, also 210 * 365, plus (2) alle Schalttage in diesen Jahren und in dem Nachfragejahr falls der Nachfragemonat März oder später ist, in diesem Fall sind das 24 + 24 + 3 (1800 und 1900 waren keine Schaltjahre, 2000 schon), plus (3) dann noch alle Tage vom 1.1.2010 bis zum 8. Mai 2010, das sind 31 + 28 + 31 + 30 + 7. Und ja, wenn man auch nur einen Fehler macht, stimmt das Ergebnis nicht, aber so ist das Leben. Hannah 8Mai10 22:49
@Alex R.: Die Funktionen müssen nicht direkt aufrufbar sein, sondern werden vom Hauptprogramm verwendet und vom Testprogramm getestet. In der Vorlesung wurde das Programm so vorgestellt, dass es mit zwei Paramtern aufgerufen wird. Also ./Programm <month> <year> Martin 08Mai2010 22:01
Hallo Leute, wer kann mir erklären was genau die funktion gettagederwoche macht? also ich weiß dass, man alle tage addieren muss und dann modulo 7 machen muss aber irgendwie kommt nicht raus was ich will. Dario 08Mai2010 21:34
@BetimM: Wir dürfen for nutzen (zumindest laut Übungsblatt und laut Vorlesung). SebastianS 08Mai2010 21:03
Frage: Darf man die for-Schleife in der Funktion getNumLeapDaysSince..(..) weiterverwenden oder sollen wir aus der for-SChleife eine while-Schleife machen?? BetimM 8. Mai 2010 20:56
Ich habe ein paar Unklarheiten bezüglich dem neuen Übungsblatt(3). Soll man beim Start des Programms 2 oder 3 Variablen angeben? ./programm <day> <month> <year> oder ./programm <month> <year> oder soll beides möglich sein?
Sollen die Funktionen direkt aufrufbar sein? Also: ./programm getNumLeapDaysSince1Jan1800 <day> <month> <year>. Ich finde das leider noch etwas unklar formuliert. Alex R. 8 Mai 2010 16:44
@Martin: Ja, das sollte vermieden werden. Leerzeichen am Ende sind immer schlecht, weil sie unsichtbar sin und trotzdem einen Effekt haben. Wenn jetzt zum Beispiel in der Kalenderanwendung das Terminal nur so breit ist wie eine Kalenderseite dann würde wegen der Leerzeichen am Ende nach jeder Woche eine neue Zeile angefangen in der nichts drinsteht. Hannah 7Mai10 19:19
Wie sieht es denn graphisch aus? Ist es schlimm, wenn in der Ausgabe am Ende jeder Zeile noch zwei Spaces stehen? MartinG 07Mai2010 18:11
@BenN naja, er hat schon irgendwo Recht. Tendenziell würde ich das hier auch eher ohne exit machen und dafür zB. ein return 0 mit entspr. if-Klauseln nutzen, aber ich bin mir nicht sicher, ob wir das schon anwenden dürfen/können... SebastianS 07Mai2010 12:01
@Jonathan Es wird wohl alleine schon deswegen Sinn machen weil du den Befehl ja in deinem Programm scheinbar benutzen willst. Und ich wüsste nicht wieso es ein Problem darstellt ne Bibliothek einzubinden. Das ist wahrscheinlich sehr viel einfacher, als das ganze so umzuschreiben, dass du den exit-Befehl nicht brauchst. BenN 07Mai2010 10:58
@Ben & Hannah: Ja zu dieser Schlussfolgerung bin ich heute Morgen nun auch gekommen. Nur ist die Frage, macht es Sinn sich diese ganze "Bibliothek" müssen mit rein zuholen nur wegen diesem exit-Befehl? JonathanN 07Mai2010 9:53
@Jonathan Was das exit(1) angeht so hab ich mich eben auch beim compilieren 10 Minuten daran aufgehangen. Die Lösung bei mir war dann einfach, dass ich die "stdlib.h" in der entsprechenden Datei nicht eingebunden hatte. BenN 07Mai2010 00:01
@Jonathan: Dass man exit(1) nur in der main Funktion einsetzen kann, halt ich für ein Gerücht. Schreiben Sie doch mal ein möglichst kleines Programm wo dieser Fehler bei Ihnen auftritt und schicken Sie es mir, dann schaue ich mal was mein System sagt. Hannah 6Mai10 23:55
@Martin & Hannah: Bei mir compiliert er glatt nicht mit exit(1), er sagt was von nur in main einsetzbar, von dem herstellt sich diese Frage beim Test gar nicht oder? JonathanN 6Mai10 23:50
@Manuel + Alle: Ina war schnell und hat's schon rausgefunden. Die Platte war mal wieder übergelaufen. Ich habe jetzt Platz geschaffen und jetzt sollte es wieder gehen. Unsere Plattenplatzprobleme sollten übrigens bald ein Ende haben. Wir haben schon vor geraumer Zeit 40 TB gekauft, aber die müssen jetzt erstmal noch über ein eigenes Netzwerk an unsere Rechnerstruktur angeschlossen werden. Da wir uns das teilweise selbst zusammengebaut haben, ist das nicht so einfach, aber wir hoffen es bald geschafft zu haben. Die 40 TB reichen dann hoffentlich erstmal bis zum Ende des Jahres. Hannah 6Mai10 23:48
@Manuel: Ja, stimmt, da ist irgendwas komisch, ich habe Ina gebeten danach zu schauen, das wird aber sicher heute nichts mehr. Hannah 6Mai10 23:24
@Martin: So direkt nein, aber man etwas in der Art machen, aber das ist höhere Testkunst, zu der kommen wir erst (viel) später. Hannah 6Mai10 23:21
Ich kann komischerweise in Hudson keine Builds starten. Im Build-Verlauf erscheint manchmal ein "(in Bearbeitung - ??? )", verschwindet aber auch schnell wieder. Username ist mb303. Manuel 6Mai 23:08
Ist es möglich dem GoogleTester zu sagen, dass die zu erwartende Antwort einer Funktion ein exit(1) ist? Martin 6Mai 22:37
@Dario: Auf keinen Fall dürfen Sie weniger Funktionen verwenden, dann können Sie die Funktionen nämlich nicht mehr einzeln testen! Der Sinn eines unit tests, ist ja gerade, dass wenn er fehlschlägt, dass man dann gleich weiß wo das Problem ist. Wenn man alles in eine Funktion schreibt und für die einen Test und dieser Test schlägt fehl, dann weiß man nur, dass irgendwo in dieser großen Funktion irgendwas falsch ist. Unabhängig davon halte ich es für eine sinnvolle Alternative statt der Funktion int getNumLeapDaysSince1Jan1800(int day, int month, int year) eine Funktion bool isLeapYear(int year) zu haben. Hannah 6Mai10 19:16
Muss man unbedingt mit den gegebenen Funktionen das Programm schreiben? ich meine könnte ich mit einer Funktion alles machen? oder evtl eine weglassen?Dario 6Mai10 18:59
@Simson Du kannst es auch als boolesche Variable definieren anstatt 1 oder 0Dario 6Mai10 18:19
@Hannah: Einfacher nicht, aber angenehmer (sonst muss man immer bedenken, dass Sonntag der erste Tag ist). SebastianS 6Mai10 17:47
@Sebastian: Sie meinen, dass in dem Kalender in der ersten Zeile nicht steht Su Mo Tu We Th Fr Sa sondern Mo Tu We Th Fr Sa? Wenn Ihnen das hilft, von mir aus. Wobei ich nicht sehe, wie es das Problem einfacher macht. Hannah 6Mai10 17:40
@Simson: Gute Frage. Die Antwort ist: es ist Ihnen überlassen, es sollte nur genau definiert sein (und auch entsprechend in der Dokumentation für die Funktion in der .h Datei beschrieben sein) und dann auch entsprechend benutzt werden. Hannah 6Mai10 17:38
Dürfen wir das Programm so umbauen, dass der erste Tag der Woche der Montag ist? SebastianS 6Mai10 16:47
Sollte getNumLeapDaysSince1Jan1800(29, 2, 1804) 1 oder 0 zurückgeben? Simson 5Mai10 14:42
@Mirko: Haben Sie sich schon für die Vorlesung registriert über den Link oben? Wenn ja, sind Sie eh schon einem Tutor zugewiesen und Ihre Übungsblätter werden korrigiert. Wenn nicht, holen Sie das bitte nach und schreiben eine Mail an Jens Hoffmann, dass Sie sich gerade noch registriert haben. Hannah 6Mai10 12:18
@Mirko + Fabian: Der Code aus der Vorlesung wird ab jetzt in einem Unterordner vorlesungen von unserem SVN repository stehen, dann kriegen Sie ihn ganz einfach mit einem SVN checkout bzw. wenn Sie einmal eine Arbeitskopie haben mit svn update. Ich habe Jens gerade gebeten, diesen Unterordner für alle lesbar zu machen. Sobald das geschehen ist, werde ich das oben in einer Mitteilung schreiben. Hannah 6Mai10 12:16
Deine Abgabe = Teil deiner Note. Es gibt keine Klausur am Ende der Vorlesung. Die Uebungsgruppen sind freiwilliger Natur und es gibt keine Anmeldung dazu. Du kannst einfach kommen. Jens 6Mai 12:12
Hat nicht direkt mit dem dritten Blatt zu tun: Ich bin in keiner Übungsgruppe eingetragen, will auch keine besuchen, hätte aber gerne meine Abgaben korrigiert. Geht das? 6Mai10 12:07 Mirko
Bekommen wir die Dateien aus Vorlesung 3? Grüße Fabian 6Mai10 12:02
Können wir noch die cpp Dateien aus der 3. Vorlesung haben? Danke! Martin S. 6Mai 11:21
So in etwa habe ich es auch gemacht. Gerade auch weil in getNumLeapDaysSince1Jan1800 der Tag als Paramter nicht wirklich sinnvoll ist.... An sich muss ja nur das Programm funktionieren, wie die Funktionen gemacht sind, is ja dann auch letztenendes eher Nebensache, oder? . DavidZ 6.Mai10 09:26
@DavidZ + Alle: Ja, wenn es sinnvoll ist, können Sie das gerne machen. Was zusätzlich eine sinnvolle Alternative wäre, ist es keine Funktion int getNumLeapDaysSince1Jan1800(int day, int month, int year) zu haben, sondern stattdessen eine Funktion isLeapYear(int year). In getDayOfWeek würde dann die Schleife stehen, die sonst in getNumLeapDaysSince1Jan1800 stehen würde und in getNumDaysOfMonth (mit zusätzlichem Parameter int year) könnten Sie dann direkt isLeapYear aufrufen. Jetzt wo ich es schreibe, finde ich es sogar besser so. Hannah 6Mai10 00:14
Anders ist es nicht möglich die Funktion sauber zu bauen. Die Schaltjahre kann man nur mittels eines weiteren Parameters "int year" berechnen. Ben 5.Mai10 23:54
Hallo. Ist es auch erlaubt, die Methoden komplett zu verändern? Also darf ich auch z.B. getNumDaysOfMonth(int month) mit weiteren Paramtern initialisieren? DavidZ 5.Mai10 23:19