unixtimestamp als QString
-
Hallo Zusammen,
ich fange gerade an c++ mit kDevelop unter Linux zu lernen. Soweit habe ich meine erste Anwendung auch fertig, nun wollte ich noch den Unixtimestamp zusätzlich zu bestimmten Meldungen in einen QTextEdit einfügen, aber das scheint ein viel größeres Problem zu werden als ich dachte.
Ich bekomme immer die Meldung: "invalid conversion from long int to const char*"
Wieso? Wie kann ich einfach den jetzigen Unix Timestamp als QString speichern?
Das hier geht:
time_t seconds; seconds = time (NULL); printf ("%ld hours since January 1, 1970", seconds/3600);Dann wird es mir aber nur in der Konsole angezeigt und ich kann damit nichts anfangen, wenn ich nun einfach aus dem printf ein sprintf mache kommt die besagte Fehlermeldung:
time_t seconds; seconds = time (NULL); QString test; test = sprintf ("%ld hours since January 1, 1970", seconds/3600);eigentlich sollte es so ausehen:
time_t seconds; seconds = time (NULL); QString test; e_Status->insert(sprintf ("%ld <Log Message>", seconds/3600));was mache ich falsch? Könnt ihr mir bitte helfen ich bin schon Stunden am suchen.
Vielen Dank
Gruß
Björn
-
der_burner schrieb:
was mache ich falsch?
So einiges:
1. Lernst du nicht C++ und verwendest keine C++ Möglichkeiten.
2. Du verwendest als Anfänger gleich Qt.
3. Du hast dir kein vernünftiges und gutes C++ Buch gekauft.
4. Du kannst keine Referenzen lesen. Zum Beispiel die vonsprintf:
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/Grüssli
-
Lass das sprintf doch einfach weg.
QString test = QString("%1 hours since January 1, 1970").arg(std::time(0)/3600);Das gehört aber eigentlich ins "andere GUis"-Forum.
-
Danke Braunstein,
das hat wunderbar geklappt!!! Vielen Vielen Dank
@Dravere danke für deinen nützlichen Beitrag, ich Programmiere in 5 Sprachen, habe zich Bücher hier stehen. Und wer wirklich soviele Bücher gelesen hat, weiß das sie eigentlich nicht wirklich was bringen und die eigentlichen Fragen aus dem wirklichen Leben nicht behandeln.
desweiteren habe ich deine Referenz gelesen
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
auch diese hier:
http://www.cplusplus.com/reference/clibrary/cstdio/printf/Es hat mir aber nichts gebracht! Ich lese immer erst bei Google und dann schreibe ich in ein Forum!
Außerdem halte ich Qt nicht für besonders schwer, und finde es sogar in manchen Dingen viel angenehmer als das normale C++Und nur so am Rande bemerkt habe ich ja bereits ein fertiges Programm was so einiges kann, aber ich habs ebend nur an dieser kleinen Stelle nicht geschafft, und wollte nur für diese kleine Frage eine Antwort haben.
Trotzdem auch dir danke für deine Hilfe!
Gruß
Björn
-
> viel angenehmer als das normale C++
Du hast da was missverstanden. C++ ist eine Low-Level-Sprache, die Dinge wie Fenster, Hardware usw. von haus aus nicht kennt. Qt ist nur eine von vielen Libs, die Abhilfe schaffen soll. Wenn man eine Technologie benutzt, muss man auch wirklich wissen, wie sie funktioniert, sonst kommt nur Mist raus. Alle C++-Programmierer, die mit Sachen wie z.B. Qt tolle Sachen gebaut haben, wissen über ANSI-C++ bescheid. Wenn du wirklich was machen willst, lern echtes C++ und lerne dann Libs, man muss erst durch das Feuer, sonst nimm gleich son Quark wie VB.
-
Das ist richtig. Bin ja dabei! Aber es geht nicht alles von heute auf morgen
Und wenn du ne KDE-App bauen willst musst du halt Qt nehmen. Ich wollte die Umwandlung des TimeStamp ja auch auf ANSI-C++ machen, aber bis jetzt hab ich dazu ja keine Antwort bekommen. Für Qt hab ich eine 
Ne ne, von VB lass ich die Finger, nix Da!
-
@der_burner,
Wenn du nichts mit den Referenzen anfangen kannst, dann ist das der absolute Beweis, dass dein Wissen über C++ noch überhaupt nirgends ist. Dank Qt oder wxWidgets kann man schnell ein paar Dinge zusammenwerkeln, welche auch wunderbar aussehen und funkionieren. Nur sind sie dann meistens grauenhaft schlecht programmiert, weil der Programmierer keine Ahnung von C++ hatte.Bücher bringen was, nämlich um die Grundlagen zu lernen und die sind in C++ EXTREM wichtig. Nimm nur mal einen C++ Primer, der bringt dir nur Grundlagen bei und hat fast 900 Seiten. Sowas zeigt schön, wie komplex die Grundlagen von C++ sind.
Deine Aussage stimmt zwar schon, dass Bücher kein Ausgleich sind für reale Erfahrungen, aber sie sind eine verdammt gute Ergänzung.
Ohne Grundlagenkenntnisse kommst du zumindest in C++ nirgendswo hin.
Grüssli
-
ich habe nie gesagt das Grundlagen schlecht oder unbrauchbar sind! Ich habe nur gesagt, das ich mit einer Sache Probleme habe und die nicht gelöst bekomme und das der Kommentar das ich ein Buch kaufen soll für völlig daneben halte. Klar sind Bücher gut und wie gesagt ich habe genug davon, zwar noch nicht von C++ aber die Grundlagen muss man nicht nur aus Büchern lernen. Es gibt genug Seiten im Internet wo sowas auch steht. Ich wollte ja eigentlich auch nur aussagen, das es mal Fragen gibt die nicht mit dem standart Satz "Kauf dir ein Buch" zu beantworten sind. Den sonst bräuchte man ja auch kein Forum, wenn ich alles in Büchern nachlesen kann

Aber gut, ich denke wir sprechen alle von dem selben und sollten uns es hier nicht zu einem Marathon Thread ausweiten. Klar ist, Grundlagen sind wichtig, aber mal ne kleine Frage schnell beantworten ist auch kein Beinbruch!
-
der_burner schrieb:
..., aber mal ne kleine Frage schnell beantworten ist auch kein Beinbruch!
In dem Fall leider doch. Was bringt es hier die Frage zu beantworten, wenn du die Grundlagen nicht kennst? Du weisst nämlich anscheinend nicht, was ein Rückgabewert ist oder wie Zuweisungen funktionieren, sonst würdest du nicht solch seltsame Zuweisungen durchführen wollen. Oder was auch noch möglich ist, allerdings hast du das bisher selber ausgeschlossen, dass du die Referenz nicht richtig gelesen hast.
Das Forum hier ist nicht dazu da, um jemandem die Grundlagen beizubringen. Hier soll bei konkreten Problemen geholfen werden.
Aja und vergiss Inet Tutorials bei C++. Sie sind eine nette Ergänzung, man hat aber wesentlich mehr von einem guten Buch.Grüssli
-
Ich habe jetzt eigentlich gar keine Lust mehr hier rum zu diskutieren. Es hat nichts mit Rückgabewerte und Zuweisungen zutun. Geschweige den Grundlagen. Wie auch in deiner Referenz zu lesen ist, ich zitiere:
This function behaves exactly as printf does, but writing its results to a string instead of stdout
Frage ich Dich nochmal wieso es mit printf geht und mit sprintf nicht. Und wenn du mir das nicht erklären kannst, dann tut es mir echt leid. Aber dann halte mir nicht vor, ich sollte irgendwelchen Kram lernen, bevor ich schreibe und nach Hilfe frage. Denn das hat nichts mit Grundlagen zu tun, wenn in der Dokumentation etwas falsches steht! Die auch Du empfohlen hast!
Und die Fehlermeldung "invalid conversion from long int to const char*" erzeugt sprintf
-
In der Dokumentation steht nichts Falsches. Man kann da gut sehen, dass sprintf keinen string zurückgibt, sondern die Anzahl der Argumente die gelesen wurden. Den String in dem du schreiben willst musst du übergeben.
Das steht aber alles in den ersten Zeilen da.
-
Und wer die Grundlagen kennt, wird anhand der Fehlermeldung sich die Signatur der Funktion anschauen. Schon bereits dies würde absolut reichen.
Undprintfgibt im übrigen auch keinen C String zurück.Aber wenn man halt die Grundlagen nicht beherrscht oder was vielleicht auch möglich ist, die Referenz nicht richtig liest, dann kann man demjenigen auch nicht mehr helfen.
Grüssli