Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

28.08.2014, 12:04

[Qt] Probleme mit Char-Array

Hi,

ich probiere bestimmt schon seit einer Stunde im Debugger rum und finde den Fehler einfach nicht.

Wie man hoffentlich am Code im Bild sieht, probiere ich einen Vector mit einer random Zahl zwischen 0-9 zu füllen und diese dann, nacheinander auf einem Label auszugeben.
Aber das Array will nicht so wie ich das will.
Was mir auffällt ist, dass das Array keine richtige Adresse bekommt, kenn mich mit dem Qt Debugger nicht aus aber das kann doch nicht ganz richtig sein.
Das 2. was komisch ist: der Pfeil für das Array, um Details darüber zu bekommen, lässt sich nicht klicken.

Was mir gerade auffällt ist, dass das Array ja mit {0} initialisiert werden müsste um komischen Inhalten vorzubeugen. Klappt aber leider auch nicht, weil da der Compiler rummeckert.

Jemand eine Idee woran es liegen kann?! Bin anscheinend zu DOOF dafür :D :dash:



(Link)

2

28.08.2014, 12:16

Nimm doch einfach die stringklasse und häng an den string die neuen zeichen einfach drann. Oder du benutzt memset oder std::fill, um das array zu nullen. Übrigens muss das array noch platzt für den nullterminator haben, im letzten Durchlauf würdest du ihn nämlich überschreiben.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Roflo« (28.08.2014, 12:24)


Tobiking

1x Rätselkönig

  • Private Nachricht senden

3

28.08.2014, 12:29

Ich vermute in dem Code gleich mehrere Fehler:

1. Du schreibst die Zahlen 0-9 in das char array, nicht die Zeichen '0'-'9'. Als ASCII interpretiert ergibt das nur Steuerzeichen.
2. Ich kenne zwar die setText Methode nicht, aber üblicherweise werden c strings 0-terminiert erwartet.

Aber statt die Fehler zu fixen eher die Frage, warum du das so umständlich machst und nicht einfach mit QString arbeitest, wenn du schon QT verwendest. Da hast du direkt Funktionen zum aneinanderhängen von Strings und zum Umwandeln von Zahlen in QString.

4

28.08.2014, 12:59

Genau, du solltest nach Möglichkeit überhaupt keine char-Arrays mehr benutzen. Die machen immer nur Ärger.
Und wofür ist das usleep()? Sollte deine Applikation nicht Multi-Threaded sein, ist es keine gute Idee, wenn eine Funktion einfach so wartet. Willst du mehrere Zahlen nacheinander in der GUI anzeigen, solltest du lieber einen Timer benutzen, der dann jeweils nur eine Zahl ausgibt. Wenn Funktionen die in der Nachrichtenbehandlung aufgerufen werden 5 Sekunden lang laufen, reagiert dein Programm in der Zeit auf nichts anderes, und das ist eigentlich immer schlecht. Ganz zu schweigen davon dass ich mich noch nicht einmal darauf verlassen würde, dass die Zahlen auch wirklich angezeigt werden (und nicht erst, nachdem deine Funktion beendet wurde).
Lieber dumm fragen, als dumm bleiben!

5

28.08.2014, 13:48

es soll ein Simon Says werden, also zahlen werden angezeigt. Der User soll diese wiederholen und die Zahlen sollen nich alle zusammen sondern nacheinander mit nem bestimmten Abstand angezeigt werden, dieser soll in späteren Versionen auch je nach Level oder Fortschritt geändert werden können.

Wie Funktioniert denn ein Timer ?!

aber das mit den Steuerzeichen klingt logisch..wieder den Wald vor lauter Bäumen nicht gesehen :D

okay ich werd das ganze mal mit QString probieren und dann den Vector auch weglassen.
Danke für die Hilfe :D

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

6

28.08.2014, 14:40

Wie Funktioniert denn ein Timer ?!


Die Qt Dokumentation ist doch voll mit Beispielen zu allen möglichen Klassen wie auch zum QTimer

7

28.08.2014, 15:21

Achso sorry ich dachte es wäre ne Funktion die ich extra schreiben müsste

Danke ;)

GMoney597

Frischling

Beiträge: 48

Wohnort: Roth

Beruf: Verwaltungsfachangesteller (Stadtverwaltung), Fitness-Trainer und Muay-Thai-Trainer

  • Private Nachricht senden

8

28.08.2014, 17:21

okay ich werd das ganze mal mit QString probieren und dann den Vector auch weglassen.


ich bin jetzt selber nicht so firm mit QT, aber ich vermute Jonathan Klein meinte mit Char-Arrays weglassen, wirklich Array[][] weglassen, und nicht Vektoren. Ich dagegen habe meine Liebe zu Vektoren entdeckt, auch wenn ich das ein oder andere mal noch zum Array greife, die Vektoren sind mir lieber
ich will dir nicht zu nahe treten aber aus dem was ich lese, bist du entweder der Begrifflichkeiten Array und Vektor nicht im Klaren oder du meinst zwar das Richtige schreibst aber das falsche

Bin absoluter Neuling - also nicht böse sein

9

28.08.2014, 20:26

Hey gmoney,

ich glaub du hast das ganze bloß falsch verstanden, denke ich.
ich nehme den Vector raus weil ich ihn mit einem QString ersetze.
Und ja ich denke ich bin mir bewusst was ein Array ist :D

10

28.08.2014, 21:53

C-/C++-Quelltext

1
2
QString str; int x = 42;
str.append(QString::number(x));

Werbeanzeige