Sammeltopic für kurze Codingfragen

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Die Unterscheidung ist ganz toll:
    Die eine Datei hat vor der Dateiendung (.html) ein "f", die andere nicht. Das mit dem f ist die "alte", die übrigens auch Schreibgeschützt ist, da an dieser nichts geändert werden darf. Deswegen ignoriert das Programm sie bezüglich dem übertragen auch und konzentriert sich auf die neue (effektiv ignoriert das Programm alles, was Schreibgeschützt ist.)
    Sie liegen jeweils im selben Ordner und die Linksammlung, die effektiv enthalten ist, unterscheidet sich ausschließlich in der Formatierung.
    Außerdem greifen beide Dateien auf dasselbe Designschema zu - was aber kein Fehler in diesem Kontext sein sollte, da Python das Design an sich ja herzlich egal sein sollte.


    Ich bin halt gerade schon frustriert, weil ich halt gerne einfach irgendeine Fehlermeldung hätte. Irgendetwas, wo mir Python sagt, was ihm denn wehtut. Vor allem irritiert es mich, dass es noch aus der Funktion rausgeht, nach ihr aber nicht mehr weiterläuft.


    Was übrigens noch interessanter ist: Das Programm ist so geschrieben, dass man es mehrfach über dieselbe Datei laufen lassen kann. Damit etwaige Änderungen automatisch in das entsprechende Dokument übertragen werden. Dies macht den Unterschied, dass das Dokument, dass effektiv durch das Programm erstellt wird, vorher schon anliegt, anstelle davon am Anfang der Programmausführung als ein leeres HTML mit Header und Footer erstellt zu werden.
    Aber wenn dieses ausgefüllte Dokument schon existiert und man eben nur etwas automatisiert nachtragen lässt, ist der Fehler auf einmal nicht länger da. :/
    Wir dachten deswegen erst, dass es daran liegen könnte, dass ein Dokument angelegt wird. Aber das passiert im Code eben viel früher, als dass dieser Fehler auftritt...

  • Einfachste Lösung: Teste, ob es auf einem Linux-System läuft oder ebenfalls crasht. Wenn es ebenfalls crasht (vermutlich SIGSEGV), dann lass python im GDB laufen, warte bis es crasht und lass dir dann einen Backtrace ausgeben. Damit kannst du dann einen Bugreport beim Entwickler der verantwortlichen Python-Bibliothek (bzw. Python selbst) einreichen.


    Generell gilt: Wenn der Interpreter crasht, dann hast du selbst keine Schuld daran.

  • Hi, visibility kann nicht animiert werden.
    Eine Liste der animierbaren Attribute ist im MDN zu finden: https://developer.mozilla.org/…S/CSS_animated_properties


    Weiterhin wirst du mit Selektoren wie .banner:hover p nicht den gewünschten Effekt erzielen.
    Dieser Selektor wirkt auf alle <p>-Elemente, die im Sub-Baum eines Elementes der Klasse .banner liegen. Dein Paragraph ist jedoch ein Geschwisterelement deines Banners und damint insbesondere kein Kindelement. Außerdem kann CSS nur Elemente stylen, die Nachfolger eines Elementes (oder selbst das Element) sind, nicht jedoch Vorgänger.


    Was auch schlechter Stil ist: Bestimmte Teile nur mit Vendor-Prefixen ausstatten (und dann auch nur eine Engine wählen, hier Webkit), bei dir die Transitions.
    Die wurden genutzt, um bestimmte Eigenschaften zu testen, bevor diese komplett standardisiert oder implementiert wurden, mittlerweile werden die aufgrund zu starker Fragmentierung schon Browser-übergreifend interpretiert, was eigentlich nicht Sinn und Zweck war …
    Einfach ohne Präfixe schreiben und bei Bedarf Tools wie https://autoprefixer.github.io/ nutzen oder auf http://caniuse.com/ nachgucken, welche Browser welche Varianten unterstützen und entsprechend manuell implementieren. ;)

  • Servus,
    bin gerade auf der Suche nach einer Lösung, um Dateien, in einem bestimmten Ordner, die älter als X Tage sind, automatisch zu löschen.
    Dabei bin ich auf diese Seite gestoßen und habe mir das das erste Beispiel mit dem forfiles Befehl angepasst.


    Code
    Forfiles /P E:\Ordner\ /S /M *.* /D -8 /C "cmd /c del /q @path"

    Wenn ich das ganze in cmd.exe eingebe funtkioniert das auch, doch hätte ich mir gerne eine Batch Datei angelegt, die mit jedem Start von Windows ausgeführt wird. Leider passiert beim Ausführen diese Batch Datei nichts, muss ich da irgendwas an dem Befehl abändern?


    Vielen Dank :)

  • Der forfiles Befehl funktioniert bei mir einwandfrei - sowohl per Hand als auch mit der Batch Datei. Ändern musste ich dafür nichts.


    Um den Fehler zu finden kannst du den Pause-Befehl nutzen:

    Code
    @echo on
    Forfiles /P E:\Ordner\ /S /M *.* /D -8 /C "cmd /c del /q @path"
    pause

    Vielleicht findest du so eine Fehlermeldung. Bei mir wurde entweder nix ausgegeben oder "FEHLER: Es wurden keine Dateien mit den angegebenen Kriterien gefunden", falls nix altes in dem Ordner war.

  • Verzeiht den Doppelpost, aber ich hätte da nochmal eine Frage, dieses Mal zum Thema C++, stecke da gerade in den Anfängen und stehe vor folgendem Problem:


    Ich besitze ein struct mit verschiedenen Elementen


    Code
    struct player {	int level;	int exp;}int main(void){		player thisPlayer;		thisPlayer.level = 1;		thisPlayer.exp = 10;}


    Ich möchte nun die Elemente thisPlayer.level und thisPlayer.exp von einer anderen Funktion aus verändern.
    Bisher habe ich dafür Pointer auf jedes einzelne Element erstellt, das ist aber recht umständlich, wenn das struct etwas größer wird. Es funktioniert doch bestimmt auch, wenn ich lediglich einen Pointer auf thisPlayer anlege, oder?



    In Zeile 21 und 22 schmeißt mich der Kompiler dann raus.


    [Error] request for member 'level' in 'PointerThisPlayer', which is of pointer type 'player*' (maybe you meant to use '->' ?)



    Ich denke, was genau mein Ziel ist, ist erkennbar. Der Kompiler schlägt ja auch einen alternativen Operator -> vor, aber wie genau verwende ich den? Beziehungsweise, was wäre hier generell die eleganteste Lösung?



    Vielen Dank (:

  • Entweder (*PointerThisPlayer).level += 1; oder PointerThisPlayer->level += 1;. Problem an deiner Punkt-Notation ist die Tatsache, dass der Punkt-Operator eine höhere Präzedenz hat als der Stern-Operator, weswegen die Zeile effektiv folgende Bedeutung hat: *(PointerThisPlayer.level) += 1;. Ich würde den Pfeil-Operator empfehlen, denn genau für den Fall ist der Operator gedacht.

  • hi na, wieder ich.
    da meine website (nur html / css, kein cms oä) in jedem browser gut aussieht, ausser im ie (surprise surprise), möchte ich gerne ein separates css für ie 9 und aufwärts. ich weiss über hacks bescheid, habe aber keinen plan, welchen ich benutzen soll usw. ich bin über diese code-zeile gestolpert, die meiner meinung nach richtig aussieht, aber nichts ändert:

    Code
    <!--[if gte IE 9]> <link rel="stylesheet" type="text/css" href="css/style_ie.css"> <![endif]-->

    (der dateipfad stimmt, daran kanns also nicht liegen)

  • Aus dem gte IE 9 schließe ich, dass du damit den IE10 ansprechen willst, stimmt das? Falls ja, wird das nicht funktionieren, da der IE ab Version 10 keine Conditional Comments auswertet. Musst dann wohl über andere Wege die Inkonsistenzen zwischen den Browsern umgehen.

  • Sucks to be you. Aber deine Ausbilder können dir ja sicherlich erklären, wie das funktioniert. Das ist ja Sinn der Ausbildung. Und wenn sie das nicht können, dann überlegen die sich hoffentlich, dass die Vorgabe dumm war, weil es wirtschaftlich nicht sinnvoll ist.

  • Irgendwie habe ich das Gefühl mit die einzige zu sein, die hier schreibt.


    Wie dem auch sei. Ich habe eine Frage bezüglich Batch-"Programmierung".


    Ich möchte ein Batch schreiben, dass eine Anweisung entweder 10 Mal wiederholt oder aus dieser Schleife rausgeht, wenn das Programm, das ausgeführt wird, über "print" eine bestimmte Nachricht rausgibt.


    Wie kann ich das machen?


    Also prinzipiell möchte ich ein "Repeat 10 times, unless app prints 'terminated'".


    Ich habe nämlich bisher sehr wenig Erfahrung mit Batches, die mehr machen als einfach nur Ordner Wechseln, Programme Starten oder etwas Installieren. ^^" Und ich glaube ich Google gerade falsch...

  • Ich glaube, in Batch realisiert man sowas über ein goto, weil es keine Schleifen gibt, wie man sie aus Hochsprachen kennt. Dort musst du dann halt "irgendwie" die Nachricht vom anderen Programm bekommen, aber über die Konsole kannst du das nicht holen. Wenn es nicht über Rückgabewerte laufen kann, fällt mir spontan nichts ein außer einer (temporären) Textdatei, die vom einen Programm beschrieben und vom anderen gelesen wird.