C++Guns – RoboBlog

21.03.2017

numpad game

Filed under: Allgemein — Tags: , — Thomas @ 09:03

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. […]

02.06.2015

QString to std::string (Bug of the day 8)

Filed under: Allgemein — Tags: , — Thomas @ 11:06

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)

Filed under: Allgemein — Tags: , , — Thomas @ 22:05

Another bug of the day 😀 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)

Filed under: Allgemein — Tags: , — Thomas @ 13:05

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

Filed under: Allgemein — Tags: , — Thomas @ 23:03

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" ? ;)

Filed under: Allgemein — Tags: , — Thomas @ 14:07

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

Filed under: Allgemein — Tags: , — Thomas @ 20:05

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

Filed under: Allgemein — Tags: , — Thomas @ 21:05

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

Filed under: Allgemein — Tags: , — Thomas @ 08:04

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

Filed under: Allgemein — Tags: , , — Thomas @ 23:03

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 […]

Older Posts »

Powered by WordPress