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

20.07.2012, 02:09

[QT QFileDialog]"coinitialize wurde nicht aufgerufen"

Nachdem ich das Icon Problem mal ein wenig beiseite geschoben habe, da es nicht wirklich elementar wichtig für mich ist, habe ich mich meiner loadfunktion für meine Projekte im Editor gekümmert. Auch mit Erfolg, wenn auch auf einem Weg den ich nicht als optimal empfinde. Darüber könnt ihr gerne auch ein Wörtchen verlieren, wie es besser funktionieren könnte :)

Erstmal zu meinem Problem:
Ich habe per QFileDialog::getExistingDirectory einen Dialog erstellt, mit dem ich ein Projekt Verzeichnis auswählen möchte. Soweit so gut, funktioniert auch, nur nachdem ich den load ein drittes mal ausführen will ploppt der Dialog nur kurz auf und verschwindet wieder. Beim Debuggen wurde mir dann ein "coinitialize wurde nicht aufgerufen" angezeigt. Kann eigentlich kaum sein, außer der Dialog wird in einem anderen Thread ausgeführt als bisher. Die "QFileDialog::getSaveFileName()" Methode funktioniert wie vorher tadellos.

http://paste2.org/p/2081985

Hier die CustomUpdate Methode, die ich zum checken aufrufe, ob meine DB mitlerweile fertig geladen wurde. Der DB load ist ein eigener Thread und wird auch normal beendet, das habe ich bereits gecheckt.

http://paste2.org/p/2081986

So, zum ende dann meine Frage, wie kann ich den load geschickter gestalten? Der DB load wird im Editor, sowie in der Engine selbst verwendet, ist also kein QT Object, weswegen ein Signal/Slot erstmal flach fällt. Der komplette load wird prinzipiell auch erst beendet, wenn ich den State abfrage, und er fertig oder fehlgeschlagen ist. Bis dahin bleibt der Thread aktiv.

mfg

EDIT: warum verunstalten die code tags meinen quellcode so dermaßen?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »anti-freak« (24.07.2012, 21:35)


2

24.07.2012, 20:44

sucher hier immernoch nach einer lösung :)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

24.07.2012, 21:19

Bring mal den Code in Ordnung. So hat wohl keiner Lust sich das anzuschauen.

4

24.07.2012, 21:36

dann eben so, ka warum er mir das durcheinander wirft... zeilenumbrüche gibts wohl nicht für mich :P

Rushh0ur

Frischling

Beiträge: 67

Beruf: Student Elektrotechnik

  • Private Nachricht senden

5

26.07.2012, 00:59

Sind die Datenbankfunktionenen Threadsicher?
Muss ggf. die Datenbank "entladen" werden?

Ansonsten sehe ich keine wirklichen Fehler (abgesehen der etwas verwirrenden switch-case-Struktur).

Mfg Rushh0ur

6

26.07.2012, 12:27

fehler gefunden.
CoUnitialize wurde versehentlich im MainThread aufgerufen, nicht im eigentlichen.

Jetzt bleibt aber die Frage, wie man das schöner lösen kann? Was hätte ich noch für möglichkeiten? Ich finde das so eigentlich weniger hübsch :P

mfg

Rushh0ur

Frischling

Beiträge: 67

Beruf: Student Elektrotechnik

  • Private Nachricht senden

7

26.07.2012, 14:05

Wenn du keine Callbackfunktionen setzen kannst wäre es vielleicht einfacher den Timer
durch einen timerEvent
zu ersetzen.

Mfg Rushh0ur

Werbeanzeige