IniWrite erzeugt keine Ini

  • Hallo Liebe Community,


    ich habe seit 3 Tagen angefangen eine Programmiersprache zu lernen ( für den Anfang Autoit). Nach diversen Tutorials, videos und selbst ausprobieren, habe ich mich an meinem ersten "Programm" versucht.
    würde mich auch über Tipps für die Übersichtlichkeit bedanken, damit ich mir das dann gleich richtig angewöhne.


    Nur jetzt habe ich ein Problem mit dem IniWrite. Ich möchte das nach drücken des Button "Start" eine Ini erzeugt, welche die Pfadangabe des Firefox speichert um beim erneuten start der Anwendung der pfad direkt im Inputfeld steht.


    Und zwar wird durch drücken und auswählen des Durchsuchen-Buttons ein Inputfeld durch GUIctrlSetData mit dem Pfad der Datei versorgt. Soweit klappt nun alles wunderbar. Nun habe ich jedoch das Problem wenn ich den Befehl Iniwrite nutze, dann erzeugt er keine Ini wenn das Feld versorgt wurde. Wenn ich in das Feld manuell eine Eingabe mache, dann erstellt er die Ini ohne Probleme. Ich hab im Internet schonmal danach gesucht, und das Problem liegt höchstwahrscheinlich an dem FileOpenDialog.


    Habe euch mal den code beigefügt, und kann sein, dass das script noch sehr "unaufgeräumt" aussieht.
    Deshalb wäre ich auch evtl froh, wenn mir jemand verbesserungsvorschläge für die Übersicht geben könnte. Aus Platzgründen hab ich den Code mal im Expander reingetan.



    Zur Information, habe getestet wenn ich Manuell die Eingabe des inputfeldes "Firefox" betätige speichert er mir die Ini in dem Verzeichnis wo das Script liegt, wenn ich über den Button mache, wird keine Ini -Datei erstellt im Verzeichnis wo das script liegt, als auch nicht wo die ausgewählte Datei liegt, auch nicht unter C:\. Da ich nun nicht mehr weiter weis frag ich die Experten von hier ;)


    (Das Script wird bisher noch über Mousecklicks etc. gestartet, das mit den Controls bekomme ich noch nicht hin, da ich die Steuerelemente der Seite nicht ausgelesen bekomme,wenn mir jemand dabei noch helfen könnte wäre supi, ansonsten arbeite ich später daran)


    Würde mich über Kritik freuen.


    Gruß
    darthrader


    €dit: habs glaub im Falschen Bereich gepostet, wenn ja bitte verschieben =)

  • Hallo werter Lernender,
    erstmal vorweg zu deinem Problem. Der Code ist soweit richtig bzw. er funktioniert bei mir auch wie er soll. Die Ini wird erstellt nachdem ich mit dem Durchsuchen fertig bin (FileDialog) oder wenn sie dann noch nicht existiert auch beim Drücken des Start Buttons. Das das bei dir nicht gehen soll wundert mich, am FileDialog kann es nicht liegen.


    Zur Sauberkeit und Sauberkeit des Codes:
    Ich habe mir nicht wirklich viel durchgeguckt, aber mir ist sofort eines aufgefallen.

    Zitat

    $Datei = FileOpenDialog("Wähle dein Firefox aus", "C:\", "Alles (*.*)")
    Guictrlsetdata($Inputfirefox,$Datei)
    $firefoxpfad=GuictrlRead($Inputfirefox)
    IniWrite("settings.ini","Eingaben","Firefox",$firefoxpfad)


    Die rot markierte Zeile ist überflüssig. Du weißt doch, was in dem Input steht, und das ist in $Datei gespeichert. Zudem solltest du darauf achten Abstände zu lassen. Sowohl Leerzeichen als auch Absätze machen einen Quellcode ungemein attraktiver, weil man sich nicht durch einen unübersichtlichen Klumpen welzen muss. Lass vor und hinter dem = ein Leerzeichen. Mach Absätze, wenn der folgende Codeabschnitt nichts mehr direkt mit dem vorherigen zu tun hat, lass Absätze vor und hinter Schleifen und If-Abfragen, z.B:


    zu


    (Nur ein Beispiel)
    Mach Kommentare, gerade bei Code, bei dem du eventuell später Verstänsnisprobleme haben könntest.
    Lass Absätze zwischen einzelnen Funktionen.
    Nutze eventuelle Regionen:

    Zitat

    #region Loop
    GUI Code blabla
    #endregion Loop


    Versuche Variablen mit einem eindeutigen Namen zu hinterlegen.


    Ansonsten ist es gut, dass das Tidy-Tool nutzt um die Einrückung zu gewährleisten.
    Sieht für jemanden, der gerade erst angefangen hat, insgesamt ganz gut aus.



    Die Einrückung ist jetzt aufgrund der Quote's verloren gegangen, hätt ma die Code-Felder nehmen sollen...

  • Ok danke schonmal für das Feedback, das mit den Abätzen und leerzeilen werde ich noch korrigieren.

    Zitat

    Ich habe mir nicht wirklich viel durchgeguckt, aber mir ist sofort eines aufgefallen.

    Müsste ich dann die IniWrite umschreiben in IniWrite( "settings.ini" , "Eingaben" , "Firefox", $Datei) ?


    Könntest du mir evtl sagen wo er die Ini-Datei bei dir erstellt und was in dieser drinnensteht, weil nachdem ich den Programmpfad ausgewählt habe erzeugt er komischerweise keine Ini, auch dann nicht wenn ich den Start Button betätige. Oder schreibt er mir die Ini-Datei woanderst hin als mein Script ausgeführt wird?. Weil wenn ich eine Manuelle Eingabe betätige in dem Inputfeld firefox dann erzeugt er mir die Ini-Datei wie er soll.


    Zur Information habe Windoof 7 :D

  • Der erste Parameter in IniWrite gibt an, wo die Datei ist bzw. wenn sie nicht existiert, erstellt wird. Wenn du dort keinen Pfad angibst (wie bei dir, du gibst ja nur den Dateinamen an), wird sie immer im Scriptverzeichnis erstellt.
    Und ja, dein IniWrite Ansatz ist richtig.
    Ich weiß nicht, ob du von dem Begriff IniWrite was falsches erwartest. Wenn die Ini Datei schon existiert wird lediglich, der unter "Firefox" gespeichert wird, neu eingetragen, die Datei an sich bleibt bestehen, außer du löschst die Datei jedes mal manuell.
    Was auch sein kann, ist dass der Explorer die Ansicht nicht erneuert, das hatte ich auch öfters. Einfach im Scriptordner mal Rechtsklick -> Aktualisieren

  • Ok also ich hab das soweit verstanden, evtl hab ich mich auch falsch ausgedrückt.


    der einfachkeitshalber hab ich jetzt ein paar bilder gemacht von meinem Problem.


    Test1.jpg
    So Sieht mein Ordner aus wo das scipt drinliegt und ohne Ini datei. Soweit ist ja alles richtig.


    Test2.jpg
    ich gebe alles manuell ein auch im inputfeld Firefox und drücke auf start


    Test3.jpg
    Er erzeugt eine Ini Datei mit den werten => auch soweit ok


    Neuer Versuch diesmal ensteht mein Problem !
    Test4.jpg
    Wir starten erneut das Scipt füllen in das 1. Feld manuell was ein und in das 2. Feld. Drücke anschließend auf den durchsuchenbutton navigiere zu meinem firefox Und wähle Öffnen aus.


    Test5.jpg
    Dieses Bild wird erzeugt ist auch soweit alles Richtig.


    nur wenn ich nun auf den Button starten drücke und in meinem Scriptordner schaue sehe ich nur
    Test3.jpg


    Und ich würde gerne das in der Ini steht "settings.ini" unter "Eingaben" Firefox=C:\Program Files (x86)\Mozilla Firefox\firefox.exe

  • hmm ich hab volle Rechte auf dem Ordner, bin admin-> außerdem wird ja die .ini erzeugt wenn ich eine manuelle eingabe tätige..
    Ja ich habs 2-3 x gemacht, weil ich wissen wollte obs irgendwann mal klappt, jedoch klappt das bei mir leider ned :( .


    Hat jemand dann evtl ne andere idee warum es bei mir die .Ini nicht erzeugt aber bei euch schon ?.


    Ansonsten muss ich halt immer manuell eingeben.

  • Starte scite mal als Admin.



    Gesendet via Gameboy Color


    Hab ich gerade probiert, keine chance die .ini datei wird dann nicht erzeugt, scheint so als ob wenn ich durch file open dialg öffne oder den start button betätige, das er die Iniwirte ignoirert wenn ich nichts manuell eintrage?. Hab gerade als Admin getestet. Das komische ist ja auch, das wenn ich manuell in das inputfeld was eingebe, dann erzeugt er mir die .ini mit und ohne Admin Rechte?. Darum isses komisch das es bei euch allen funktioniert nur bei mir nicht. Aber freut mich zumindest das "normalerweise" klappen müsste.

  • Ok hab den Fehler jetzt soweit gefunden.


    durch meinen FileOpenDialog wurde meine @Workingdir verändert, sprich es wurde in dem Ordner erstellt welche ich zuvor ausgewählt hatte. Sprich es konnte nicht im dem Ordner erstellt werden wo mein Script drin liegt, sondern wurde in dem Ordner C:\Program Files (x86)\Mozilla Firefox\ gespeichert. Dies ist aber nicht passiert, da hierfür ein Admin recht von nöten war. Habe nochmal mit Admin und compiliert gestartet und die Datei wurde auch erzeugt.


    Also danke für die Hilfe meines ursprünglichen Problems. :thumbsup: :thumbsup:


    Ich habe auch herausgefunden das ich zum Beispiel die Ini in dem Ordner erstellen kann wo das Programm ausgeführt wird mit @AutoitExe. Nun ist aber meine frage, wie bekomme ich hin das er nur schreibt "settings.ini" und nicht "Votomat mit Countdown.exesetting"


    Muss ich dann machen IniWrite( @AutoitExe & "\settings.ini" ,....)
    €dit: habs rausgefunden muss IniWrite(@ScriptDir & "\settings.ini",...) machen



    Vielen Dank an alle die mir geholfen haben =)
    Ich schließ dann mal das thema