Hi Zusammen, Programmiersprache: C++ mit "QT 4.8 Plugin" Benutzte Tools: Visual Studio 2008 Folgende Problem: Ich habe eine Application in C++ geschrieben und daraus eine Installer erstellt. In dieses Application wird eine Ini File (so zusagen Konfig Dateien)verwendet. Es funktioniert fast alles richtig, wenn es nicht eine komische Effekt auftritt. Dieses Effekt lässt sich leider nicht produzieren. Es tritt plötzlich unter gewissen Umständen(Die Umstände sind auch unbekannt). Wenn dieses Effekt eintritt, dann werden die Value der Konfig Datein alle auf 0 gesetzt. so z.B: --> in Normalen Fall StromLimit = 4 JitterMax = 200 ProduktFamilie = H30658N ..... --> nach dem Effekt StromLimit = 0 JitterMax = 0 ProduktFamilie = 0 ..... In der SW ist bestimmt einen BUG drin aber was kann das sein? Könnte es einen Zeiger, der einfach in der Luft liegt und nicht zerstört nach der Benutzung?
:
Verschoben durch User
Der Fehler liegt in Zeile 42. Was soll das? Das hier ist kein Ratespiel Forum. Kannst du nicht ein wenig Code rüberwachsen lassen?
um mal noch was konstruktives nachzuschießen? Tritt der Fehler auf, wenn du das in deinem VS startest? Tritt der Fehler nur auf, wenn du das Programm installiert hattest und separat gestartet hast? Wo liegt das .ini file im Vergleich zur Exe? Wenn die .ini im gleichen Verzeichnis der exe liegt. Schreibt dein Programm dort was rein? Wenn das nur in deinem installierten Programm passiert, taucht der FEhler auch auf, wenn du das Prog als Admin startest? Nur ins Blaue geraten. Die .ini gehört nicht in das Verzeichnis der Exe, sondern nach %appdata%\unterordner
Debugger verwenden, Breakpoint auf die Stelle setzen, an der die Konfigurationsdatei von Deinem Programm beschrieben wird, laufen lassen ... Und wenns immer die richtigen Werte sind: Breakpoint mit Bedingung "geschriebener Wert ist null" erweitern. Laufen lassen ...
nicht"Gast" schrieb: > um mal noch was konstruktives nachzuschießen? > > Tritt der Fehler auf, wenn du das in deinem VS startest? Nein > Tritt der Fehler nur auf, wenn du das Programm installiert hattest und > separat gestartet hast? ja > > Wo liegt das .ini file im Vergleich zur Exe? Im gleichen Ordner wo die exe ist > Wenn die .ini im gleichen Verzeichnis der exe liegt. Schreibt dein > Programm dort was rein? Ja > > Wenn das nur in deinem installierten Programm passiert, taucht der > FEhler auch auf, wenn du das Prog als Admin startest? > Das weiss ich nicht so was habe ich nicht ausprobiert aber was für einen Rolle soll das spielen? > Nur ins Blaue geraten. Die .ini gehört nicht in das Verzeichnis der Exe, > sondern nach %appdata%\unterordner
Gerhard_Berlin schrieb: >> Wenn das nur in deinem installierten Programm passiert, taucht der >> FEhler auch auf, wenn du das Prog als Admin startest? > Das weiss ich nicht so was habe ich nicht ausprobiert aber was für einen > Rolle soll das spielen? https://www.pcspinnt.de/2009/11/virtualstore-unter-windows-vista-und-windows-7/
Daniel A. schrieb: > https://www.pcspinnt.de/2009/11/virtualstore-unter-windows-vista-und-windows-7/ Danke. Wollte das grad schreiben^^
Gerhard_Berlin schrieb: >> Wo liegt das .ini file im Vergleich zur Exe? > Im gleichen Ordner wo die exe ist Das ist ausdrücklich unerwünscht und überholt, und das seit vielen vielen Jahren. Nebeneffekte sind unvermeidlich, besonders bei unterschiedlichen Benutzern. Man kann natürlich ein INI-File erstellen, das für alle Benutzer gilt, aber nicht da wo die EXE steht. Georg
Gerhard_Berlin schrieb: >> Wo liegt das .ini file im Vergleich zur Exe? > Im gleichen Ordner wo die exe ist gibst du beim bearbeiten der .ini immer den vollständigen Pfad an oder nur den Dateinamen?
Irgendwer schrieb: > gibst du beim bearbeiten der .ini immer den vollständigen Pfad an oder > nur den Dateinamen? Ich gebe eigentlich nur der Dateiname
Dann wäre Das jetzt der Moment, an dem Du etwas Quellcode zu Tisch reichst....
Aber warum tritt dieses Effekt selten auf? Alles hat mit Adminrechte zu tun?
Georg schrieb: > Gerhard_Berlin schrieb: >>> Wo liegt das .ini file im Vergleich zur Exe? >> Im gleichen Ordner wo die exe ist > > Das ist ausdrücklich unerwünscht und überholt, und das seit vielen > vielen Jahren. Nebeneffekte sind unvermeidlich, besonders bei > unterschiedlichen Benutzern. Das macht QSettings eigentlich nicht: Unter Windows würde es primär in die Registry schreiben und wenn man die Verwendung von Ini Files erzwingt, schreibt es je nach gesetztem scope in %APPDATA% oder %COMMON_APPDATA%, außer man setzt explizit einen anderen Pfad. Aber wie Georg es erklärt hat, ist das keine gute Idee.
Vielleicht weil der Admin Files im Programm Verzeichnis schreiben darf? Alle normalen User Schreibzugriffe werden umgeleitet in das Behelfsverzeichnis...irgendwas mit Roaming... Lies die Guidelines von MS, die gelten schon seit Windows 95 oder noch eher. So eine schlampige Programmierung mit ini Files im Programmverzeichnis ist schon immer verboten.
Dumdi D. schrieb: > Christian R. schrieb: >> Lies die Guidelines von MS, > > Gibt es da einen Link/Referenz? https://msdn.microsoft.com/library/windows/desktop/dn688964.aspx https://msdn.microsoft.com/en-us/windows/uwp/app-settings/guidelines-for-app-settings Ich würde mich da aber einfach auf die Qt Standardeinstellungen verlassen.
Noch wissen wir ja gar nicht, wo die hier verwendete *.exe liegt - wenn sie außerhalb von "c:\programme" bzw. "c:\programme (x86)" liegt, dann ist das zwar auch Murks, aber sorgt dafür, daß der schreibende Dateizugriff an den Speicherort der *.exe-Datei funktioniert. Was zu tun ist, habe ich weiter oben schon beschrieben. Beitrag "Re: Benutzung von ini.File in eine C++ Application"
Rufus Τ. F. schrieb: > Noch wissen wir ja gar nicht, wo die hier verwendete *.exe liegt Doch, hat er beantwortet - genau dort wo sie nicht hingehört. Georg
Danke an alle, die sich an die Diskussion kontruktiv teilgenommen haben. Für mich bedeutet es viel Aufwand aber na ja es muss gemacht werden. Man lernt nie aus... danke auch für die Hinweise. Sie sind echt Hilfsreich..
Georg schrieb: > Doch, hat er beantwortet - genau dort wo sie nicht hingehört. Wo bitte soll das beantwortet worden sein?
Rufus Τ. F. schrieb: > Wo bitte soll das beantwortet worden sein? Gerhard_Berlin schrieb: >> Wo liegt das .ini file im Vergleich zur Exe? > Im gleichen Ordner wo die exe ist
Ja, und?! Was sagt das darüber aus, wo die exe ist?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.