Seite 122 von 202 ErsteErste ... 2272112118119120121122123124125126132172 ... LetzteLetzte
Ergebnis 1.816 bis 1.830 von 3026

Thema: [Programmiererstammtisch] "Zum ächzenden Compiler"

  1. #1816
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Habe noch was rein editiert.

  2. #1817
    Registrierter Benutzer Avatar von Strat
    Registriert seit
    08.01.15
    Ort
    HGW
    Beiträge
    3.889
    Danke.

    Ich hatte natürlich nur so derifferenziert ohne die Klammern
    Zitat Zitat von Schlumpf Beitrag anzeigen
    Strat ist doch so ein verkorkster Linker
    Zitat Zitat von Isaac Newton; in einem Brief an Robert Hooke
    Wenn ich weiter geblickt habe, so deshalb, weil ich auf den Schultern von Riesen stehe.
    Storys

    Civ 4: Weg in den Olymp
    Civ 4 PBEM 474 Das Steigen und Fallen der Kurse

  3. #1818
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ja, der Operator bindet sehr schwach, wird also ohne Klammerung sehr spät angewendet. Nicht zu Klammern ist daher reicht häufig ein Problem.

  4. #1819
    Registrierter Benutzer
    Registriert seit
    08.08.12
    Beiträge
    751
    Nicht direkt eine Programmiersprache, aber fast, Thema Datenbanken:

    Für eine Handy-App stellt sich mir die Frage, ob es sinnvoller ist, berechnete Daten in der Datenbank zu speichern, oder diese während der Laufzeit aus den einzelnen Bestandteilen zu berechnen?
    Bsp: Dividendenauszahlung
    Spalten: Anteile, Auszahlung je Anteil, gesamte Auszahlung, bezahlte ausl. Steuern, bezahlte inl. Steuern
    Theoretisch alles aus den ersten 2 Spalten berechenbar. Die einzige Spalte, die da Probleme machen würde, wäre die letzte wegen Freistellbetrag, aber das sei mal dahingestellt.

  5. #1820
    Wolf im Krokodilpelz Avatar von Mongke Khan
    Registriert seit
    25.06.11
    Ort
    KA
    Beiträge
    19.056
    Windows
    Ich bastel gerade an nem kleinen Musikplayer, den ich übers Heimnetz ansteuern kann (damit ich beim Pen-&-Paper spielen bequem vom Tablet aus passende Musik auflegen kann).
    Benutze dafür die Windows Media Player (WMPLib) und hab eigene Playlisten implementiert, weil ich mir da eine Schnittstelle offen lassen will und die Standard-Playlisten von Windows mir nicht gefallen.
    Dafür muss ich also abfangen, wann ein Lied vorbei ist - praktischerweise stellt der Windows Media Player dafür ein Event zur Verfügung: PlayStateChange, u.a. mit dem Status "8 - MediaEnded". Super, dachte ich, frag ich einfach ab und spiel dann das nächste Lied.
    Dann passierte erstmal: nichts. Code durchsucht, alles ausgeben lassen, nö scheint korrekt zu sein. Also mal die verschiedenen Zustände geloggt. Und da passierte folgendes:

    New player state: Transitioning
    New player state: Transitioning
    New player state: Ready
    New player state: Playing
    New player state: MediaEnded // Hier sollte jetzt das nächste Stück kommen, er sprang auch in den Code, aber gespielt wurde nix
    New player state: Transitioning
    New player state: Transitioning
    New player state: MediaEnded // Wtf, welches Medium - es kam ja nix
    New player state: Transitioning
    New player state: Ready

    Gespielt wurde nichts, an der Stelle hat er sich aufgehängt.
    Also folgende Überlegung: vielleicht ist MediaEnded nur so ein Zustand, dem noch Aufräumarbeiten folgen können. Also setze ich einfach, wenn es dazu kommt, ein Flag und mach das, wenn er wieder Ready ist. Dann geschah folgendes:

    New player state: Transitioning
    New player state: Ready
    New player state: Playing
    New player state: MediaEnded
    New player state: Transitioning
    New player state: Transitioning
    New player state: MediaEnded
    New player state: Transitioning
    New player state: Stopped // Ok, er stoppt also...
    New player state: Stopped // ...mehrmals? Emoticon: wtf

    Und tat weiter nichts. Zumindest hing er nicht mehr, manuell konnte ich das nächste Lied anstupsten
    Aber vielleicht fällt er ja in nen Stopp-Zustand, wenn er nicht mehr weiter weiß. Ok, frag ich halt da das Flag ab und leite den nächsten Song ein, wenn er das erste mal nach MediaEnded in Stopped geht.

    Gedacht, getan und dann wurden mir wilde Statuswechsel um den Kopf geworfen, bis er sich komplett aufgehängt hat und der Prozess manuell beendet werden musste.

    Inzwischen hab ich, auch nach etwas Recherche, den Eindruck, dass dieses Event von vorn bin hinten verbuggt ist.
    Das einzige, was funktioniert hat, war, immer wenn er MediaEnded triggert, den ganzen Player zu zerstören, die Settings zu retten und nen neuen zu erzeugen mit nem neuen Wegwerfeventhandler, der versagen wird, sobald er tun müsste, was er tun soll - und dann vom nächsten Lemming ersetzt wird

    Falls sonst noch wer eine Idee hat - immer her damit. Es funktioniert, aber es ist so natürlich ziemlich hässlich
    Zitat Zitat von Ghaldak Beitrag anzeigen
    Wären die Beiträge der Admins alles, was zählt, dann wäre dieses Forum eine Geisterstadt mit Adventskalender.

  6. #1821
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.446
    Machst du das aus Spaß? Gibt's nämlich auch schon fertig Music Player Daemon mit MPDroid.

  7. #1822
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Der populäre Vlc bietet auch Schnittstellen fürs Netz und dafür gibt es auch schon Programme. (Da ich den Vlc nicht mag, kenne ich mich damit aber nicht weiter aus. )

  8. #1823
    Wolf im Krokodilpelz Avatar von Mongke Khan
    Registriert seit
    25.06.11
    Ort
    KA
    Beiträge
    19.056
    Ich mach das aus Spaß, weil es ein schönes kleines Projekt ist, um wieder bisschen mehr ins Coden zu kommen

  9. #1824
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.827
    Also ich lerne gerade in der Uni C++. Bzw müssen wir uns das selbst beibringen. Kann mir da wer ein gutes Tutorial/Buch empfehlen, weil gerade das mit den Pointern ja schon ein wenig anders ist als zB in Java

    Und dann habe ich auch gleich noch eine Frage:
    Wenn ich einer Methode Variablen übergebe dann habe ich ja mehrere Möglichkeiten das zu machen:
    1. void test (Object obj )
    2. void test (Object& obj)
    3. void test (Object* obj)

    So wie ich das verstanden habe führt * dazu das nur eine Kopie des Objekts übergeben wird und bei & das Original? Dann wäre aber die Frage was der Unterschied zwischen 1 und 2 ist?
    Geändert von EpicFail (07. Dezember 2017 um 16:58 Uhr)

  10. #1825
    Beyond Mars Avatar von [VK]
    Registriert seit
    05.02.08
    Beiträge
    59.566
    Zitat Zitat von EpicFail Beitrag anzeigen
    Also ich lerne gerade in der Uni C++. Bzw müssen wir uns das selbst beibringen. Kann mir da wer ein gutes Tutorial empfehlen, weil gerade das mit den Pointern ja schon ein wenig anders ist als zB in Java

    Und dann habe ich auch gleich noch eine Frage:
    Wenn ich einer Methode Variablen übergebe dann habe ich ja mehrere Möglichkeiten das zu machen:
    1. void test (Object obj )
    2. void test (Object& obj)
    3. void test (Object* obj)

    So wie ich das verstanden habe führt * dazu das nur eine Kopie des Objekts übergeben wird und bei & das Original? Dann wäre aber die Frage was der Unterschied zwischen 1 und 2 ist?
    Bin jetzt nicht so der c++-Experte:
    1. Kopie des gesamten Objektes? (Änderungen am Objekt sind nur lokal)
    2. Referenz auf das Object wird übergeben. Ist glaub das Java-Verhalten (Ein Überschreiben des Objekts hat keine Auswirkungen, aber Änderungen bleiben bestehen)
    3. Der original Pointer auf das Object wird übergeben. (Alle Änderungen und Überschreiben bleiben gelten global)

  11. #1826
    Puhuhu Avatar von Slaan
    Registriert seit
    29.09.10
    Ort
    Hànbǎo
    Beiträge
    15.142
    Zitat Zitat von Gobl Beitrag anzeigen
    Nicht direkt eine Programmiersprache, aber fast, Thema Datenbanken:

    Für eine Handy-App stellt sich mir die Frage, ob es sinnvoller ist, berechnete Daten in der Datenbank zu speichern, oder diese während der Laufzeit aus den einzelnen Bestandteilen zu berechnen?
    Bsp: Dividendenauszahlung
    Spalten: Anteile, Auszahlung je Anteil, gesamte Auszahlung, bezahlte ausl. Steuern, bezahlte inl. Steuern
    Theoretisch alles aus den ersten 2 Spalten berechenbar. Die einzige Spalte, die da Probleme machen würde, wäre die letzte wegen Freistellbetrag, aber das sei mal dahingestellt.
    Hoi! Bin ne Woche zu spät aber vllt hilfts dir ja noch:

    1) Würd ich mich fragen, warum diese Infos in eine Handy gespeichert sein sollten? Das sollte ein Backend erledigen und kein Handy ^^
    2) Generell kommt es imo darauf an, wie kompliziert die Berechnungen sind und wie oft man das Ergebniss braucht. Sind die Berechnunge komplex und man muss sie oft durchführen ist einmal rechnen und dann einfach lesen besser... wenn man die Infos praktisch nie braucht und trivial zu berechnen sind ist es imo besser, nur die Grunddaten abzuspeichern und wenn benötigt neu zu berechnen - grade wenn man mit limitierten Ressourcen wie beim Handy zu kämpfen hat.
    3) In deinem Fall der Dividendenberechnung ist die Berechnung nun zwar trivial und wird vermutlich nicht oft benötigt, hat aber noch eine Komponente wegen derer ichs einmal berechnen und abspeichern würde - dem Steuersatz. Denn der ist nicht konstant und kann von der Politik geändert werden, wodurch man zusätzliche Variablen in seiner Berechnung bräuchte (Von wann die Dividendenauszahlung? Wie war in diesem Jahr der Steuersatz?), wodurch man einfach ne zusätzliche Fehlerquelle hätte. Wenn sich Grunddaten also über Zeit verändern können dann wäre ich fürs Abspeichern über ständige Neuberechnung

    Hoffe es hilft dir !
    |學而不思則罔,思而不學則殆。 ~ 孔子|
    | Lernen ohne zu denken ist sinnlos, denken ohne zu lernen gefährlich. ~ Kong Zi |

    | During times of universal deceit, telling the truth becomes a revolutionary act ~ George Orwell |

    SdM Dez16 - XCOM2 Make Humanity Great again

  12. #1827
    yay! Avatar von Setcab
    Registriert seit
    18.01.09
    Beiträge
    4.700
    Zitat Zitat von EpicFail Beitrag anzeigen
    Und dann habe ich auch gleich noch eine Frage:
    Wenn ich einer Methode Variablen übergebe dann habe ich ja mehrere Möglichkeiten das zu machen:
    1. void test (Object obj )
    2. void test (Object& obj)
    3. void test (Object* obj)

    So wie ich das verstanden habe führt * dazu das nur eine Kopie des Objekts übergeben wird und bei & das Original? Dann wäre aber die Frage was der Unterschied zwischen 1 und 2 ist?
    Das hast du nicht ganz richtig verstanden
    Variante 1 übergibt eine Kopie des Objekts. Da kannst du mit machen was du willst, das Orginal bleibt unverändert.
    Variante 2 und 3 übergeben eine Referenz / einen Pointer auf das Orginal. Wenn du die änderst, ändert sich jeweils das Orginal mit. Der Unterschied ist, dass du das Objekt im Funktionskörper bei Variante 2 genau wie bei 1 direkt ansprechen kannst, bei 3 musst du erst den Pointer dereferenzieren. Außerdem kann ein Pointer auch auf null zeigen (also auf gar nichts) oder auf ein nicht initialisiertes Objekt, bei Referenzen geht das nicht. Das macht Referenzen natürlich sicherer, da hast du eine Garantie, etwas benutzbares übergeben zu bekommen und wenn nicht, meckert schon der Compiler.

    Mein Tipp: gerade bei größeren Objekten (alles außer den primitiven Datentypen eigentlich) im Zweifelsfall Referenzen benutzen, wenn du nicht tatsächlich eine Kopie brauchst. Das unnötige Kopieren kann ziemlichen Einfluss auf die Performance haben. Pointer benutze ich eigentlich nur, wenn es wirklich nicht anders geht, was bis jetzt selten vorkam. Dabei kann mehr schief gehen und man muss sich mit einer anderen Syntax herumärgern.
    Sie/Ihr

    Storys:
    (Civ 4 BASE 5.0): Die Geschichte des römischen Reiches (abgeschlossen)
    (Civ 4 BASE 6.0): Das Reich der Mitte auf dem Weg durch die Geschichte (abgebrochen)

  13. #1828
    reztuneB retreirtsigeR Avatar von EpicFail
    Registriert seit
    16.11.11
    Beiträge
    3.827
    Vielen Dank, das ist schon mal sehr hilfreich
    Zitat Zitat von Austra Beitrag anzeigen
    Dort herrscht Dauerkrieg zwischen den Feminazi-Ökofaschisten und und Konservativen-FDP-AfD-Nazis

  14. #1829
    Pfeffersack Avatar von slowcar
    Registriert seit
    04.01.06
    Ort
    hh
    Beiträge
    18.227
    Ich würde empfehlen beim lernen von c++ auch gleich die Verwendung von Smartpointern zu lernen.
    Im Nachhinein ist das etwas das meinen frühen Programmen sehr geholfen hätte, vor allem wenn man sich später durch alle Hierarchien wurstelt um den verlorenen Speicher zu finden.
    Dann sollte man sehr darauf achten dass Pointer null sein können und das Programm dann kompromisslos abstürzt wenn man versucht sie zu dereferenzieren. Vor allem wenn man eben keine Smartpointer verwendet, den Speicher an einer Stelle freigibt und es an einer ganz anderen doch noch braucht...

    Ansonsten kann ich noch Qt empfehlen, bietet ein mächtiges Eventsystem (Signals, Slots) und mit QtQuick eine mächtige und (relativ) einfach zu beherrschende UI.

  15. #1830
    Registrierter Benutzer
    Registriert seit
    04.04.09
    Beiträge
    5.069
    Zitat Zitat von Siegfried Beitrag anzeigen
    ein nicht initialisiertes Objekt, bei Referenzen geht das nicht.
    Das stimmt übrigens nicht, die Referenz sagt dir nur, dass etwas existiert, aber nicht, ob es initialisiert ist, oder nicht.
    PHP-Code:
    #include <iostream>

    struct test {
        
    int a;
    };

    void f(intx)
    {
        
    std::cout << << std::endl;
    }

    void f2(testobj)
    {
        
    std::cout << obj.<< std::endl;
    }

    int main()
    {
        
    int x;
        
    f(x); // prints a random number
        
    testobj 0;
        
    f2(*obj); // prints a not so random crash report


Seite 122 von 202 ErsteErste ... 2272112118119120121122123124125126132172 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •