Wer ist schneller beim Zahlen eintippen über den Nummerntastenfeld? Zwei Tastaturen. Ein Programm zeigt Zufallsziffern an. Wer die Zahl als erstes richtig eingetippt hat, bekommt ein Punkt. Und das Eingabefeld wird bei beiden Spielen gelöscht. Wird ein Fehler bei der Eingabe gemacht, bekommt der Spieler einen Minuspunkt und der andere Spieler hat die Möglichkeit aufzuholen. […]
21.03.2017
02.06.2015
QString to std::string (Bug of the day 8)
std::string class::func() const noexcept { return name.toLatin1().constData(); } 3 convertions. From QString to QByteArray to const char* to std::string. Lets see if it works. From Qt Docu const char * QByteArray::?constData() const Returns a pointer to the data stored in the byte array. The pointer can be used to access the bytes that compose the […]
29.05.2015
warning: conversion to 'float' from 'int' may alter its value [-Wconversion] (Bug of the day 7)
Another bug of the day :D You can do the following float var = float(vari); // yes I know I'm loosing precision int var = int(std::floor(varf)) // yes I know interger can overflow int var = qFloor(varf) // Qt version Same for double. warning: comparison between signed and unsigned integer expressions [-Wsign-compare] Tricky one. Usually […]
2.1GB limit Qt Container (Bug of the day 6)
Diesmal hab ich mir selbst in den Fuß geschossen. Zum zweiten mal in den selben. Alle Qt Container können nur maximal 2.1GB allocieren. Das ist eine Design Entscheidung von Qt. Dummerweise wird keine Fehlermeldung erstellt falls man mehr Speicher braucht. Ich kann schon verstehen, dass es irgendwie falsch ist, wenn eine GUI Anwendung auf einmal […]
11.03.2015
Wikipedia's Kellerautomat
Wikipedia's Kellerautomat Beispiel in C ist total falsch (Stand 11.03.2015). Nicht nur, dass es im feinsten C programmiert ist, was kein Mensch versteht. Es wird nicht mal ein Kellerautomat implementiert. Die Konfiguration eines Kellerautomats hängt von seinem Zustand, dem zu lesenden Zeichen und dem Zeichen auf dem Stack (Keller) ab. In dem Beispiel wird aber […]
24.07.2014
Welcher Code ist "schöner" ? ;)
Kurzes Programm, welches überpüft ob der Benutzer eine Variable "resolution" definiert hat. Wenn ja, wird versucht die Benutzereingabe in eine Zahl umzuwandeln. Wenn nein, wird ein default Wert von 1 angenommen. Variante 1: const QString resolution = options().text("resolution"); bool userResolution = false; // check if user defined cellsize qreal newCellSize = 1; if(!resolution.isEmpty()) { userResolution […]
28.05.2014
Qt - Approximate median without sort / storing an extra copy of the data
Es gibt viele Möglichkeiten den Median zu berechnen. Eine wäre die Daten zu sortieren und dann das mittlere Element zu wählen. Dazu muss man aber eine Kopie der Daten speichern, was ungünstig ist, wenn der Arbeitsspeicher schon fast voll ist. Jaaa, heutzutage hat jeder Unmengen an Arbeitsspeicher. Es gibt aber Menschen die haben "NUR" 2GB […]
07.05.2013
safer code
Was ist das Problem mit folgenden Code? Element *ele // uninitialisierter pointer; while(iter->hasNext()) { // schleife kann auch nicht ausgefuehrt werden ele = iter->next(); ... } qDebug() hasNext()) { Element *ele = iter->next(); qDebug()
26.04.2013
C++ Guns - explicit keyword und warum man es braucht
Stell dir vor, du willst die Qt Klasse QPolygonF erweitern damit man noch zusätzlich eine z Koordiante abspeichern kann. Du erstellst also eine Klasse Polygon die von QPolygonF public erbt. Dafür hast du dir eine Klasse Point3D erstellt, die eben x,y,z speichert. Und damit man zu Qt's QPointF Klasse kompatibel bleibt, die ja nur 2D […]
28.03.2013
Qt Source und kleine Perlen
Ich habe in den letzten 3 Tagen viel Qt Source gelesen und da war schon viel Wirr und Krams dabei. Aber auch kleine Perlen wie diese Zeile in QRectF QPolygonF::boundingRect() const zeige register const QPointF *pd = constData(); for (int i = 1; i < size(); ++i) { ++pd; } Da kennt ein Performance-Fan das […]