Rechnen mit qint64



  • Hallo!

    Also mein Code ist folgender:

    QFileInfo info1(temp);
    QString size;
    size = tr("%1").arg(info1.size());
    if(size<1024)
    {
    	outsize = sizetext+" Byte";
    } else	if(size<1048576) {
    	size = size/1024;
    	size = size+" Kilobyte";
    } else if(size<1073841824) {
    	size = size/1024/1024;
    	size = size+" Megabyte";
    } else {
    	size = size/1024/1024/1024;
    	size = size+" Gigabyte";
    }
    

    Ich habe folgendes Problem: Ich bekomme es einfach nicht hin, mit der ursprünglichen quint64-Variable von QT zu rechnen. So ist auch mein oben bewunderbares Variablen-Mischmasch entstanden, dass, oh Wunder, nicht funktioniert 😉 Ich bin inzwischen wirklich komplett ratlos, was ich machen soll. Die Umwandlung der qint-Variable in eine C++ int-Variable geht natürlich irgendwie auch nicht und wenn ich die qint64 variable beibehalte, kann ich diese z.b. aus irgendeinem grund nicht durch 1024 teilen. er erkennt zwar, welche if-Bedingung ausgeführt werden muss, (also führt den entsprechenden codeblock aus und hängt hinterher auch die jeweilige einheit an), behält aber einfach die ursprüngliche größe in byte bei. Weis einer, wie ich das am besten mit QT bewerkstellige? Ich verzweifel hier noch an den Grundlagen, echt peinlich 😃
    Liebe Grüße,

    Jonathan



  • Ok, ich habs schon rausbekommen. Also für alle die am selben Problem hängen hier mein neuer Code:

    qint64 size;
    QString outsize;
    QFileInfo info1(temp);
    size = info1.size();
    if(size<1024)
    {
    	outsize = tr("%1 Byte").arg(size);
    } else	if(size<1048576) {
    	outsize = tr("%1 Kilobyte").arg(size/1024);
    } else if(size<1073841824) {
    	outsize = tr("%1 Megabyte").arg(size/1024/1024);
    } else {
    	outsize = tr("%1 Gigabyte").arg(size/1024/1024/1024);
    }
    


  • Was hast du dir bei deinem ersten Versuch denn gedacht? Da taucht ja nicht einmal ein qint64 auf und du benutzt den String sowohl als Puffer für die Darstellung der Größe als auch als Integer welcher die Größe speichert.
    Das kann doch gar nicht funktionieren, mal davon abgesehen, dass QString bestimmt keinen op/ implementiert hat.


Anmelden zum Antworten