Seite 1 von 2

SaveFileRequester bei abbruch wird programm beendet

Verfasst: 11.03.2008 20:57
von icecrusher
Hi,

Ich habe folgendes problem:

wenn ich den saveFileRequester aufrufe, und auf abbrechen gehe, möchte ich , dass das programm nicht beendet wird, sondern einfach mit allen einstellungen weiterläuft, gibt es da irgendeine möglichkeit das gerade zu biegen??

Verfasst: 11.03.2008 21:01
von mk-soft
Hast warscheinlich ein fehler in dein Code. SaveFileRe... beendet von sich aus nicht das Programm

Code wäre hilfreich...

Verfasst: 11.03.2008 21:10
von icecrusher

Code: Alles auswählen

make_config:
StandardFile$ = "C:\autoexec.cfg"
  
  Pattern$ = "Config (*.cfg)|*.cfg"
  Pattern = 0
  File$ = SaveFileRequester("Bitte Pfad zu cstrike\cfg angeben!!", StandardFile$, Pattern$, Pattern)
  
  If File$
   CreateFile(0,File$)
    WriteStringN(0, "//------------------------------------------------------------------------------------------------------------")
    WriteStringN(0, "//Autoexec.cfg generated with icecrushers Counter-Strike Source Configurator")
    WriteStringN(0, "//All Rights Reserved 2008 Copyright by icecrusher")
    WriteStringN(0, "//------------------------------------------------------------------------------------------------------------")
    WriteStringN(0, "")
    WriteStringN(0, "")
    WriteStringN(0,"cl_updaterate "+Chr(34)+StringField(GetGadgetText( #String_24) +Chr(34), k, ""))
    WriteStringN(0,"cl_cmdrate "+Chr(34)+StringField(GetGadgetText( #String_26) +Chr(34), k, ""))
    WriteStringN(0,"rate "+Chr(34)+StringField(GetGadgetText( #String_30) +Chr(34), k, ""))

If GetGadgetState(#CheckBox_10)
   WriteStringN(0,Chr(13)+Chr(10)+ "cl_righthand 0")
   Else
   WriteStringN(0,Chr(13)+Chr(10)+ "cl_righthand 1")
EndIf
  
If GetGadgetState(#Checkbox_11)
    WriteStringN(0, "net_graph 3")
    WriteStringN(0, "net_graphpos 2")
    Else
    WriteStringN(0, "net_graph 0")
EndIf

If GetGadgetState(#Checkbox_12)
    WriteStringN(0, "hud_fastswitch 1")
    Else
    WriteStringN(0, "hud_fastswitch 0")
EndIf

If GetGadgetState(#Checkbox_13)
    WriteStringN(0, "m_filter 1")
    Else
    WriteStringN(0, "m_filter 0")
EndIf

If GetGadgetState(#Checkbox_14)
    WriteStringN(0, "cl_dynamiccrosshair 0")
    Else
    WriteStringN(0, "cl_dynamiccrosshair 1")
EndIf

If GetGadgetState(#Checkbox_16)
    WriteStringN(0, "bind \ toggleconsole")
    WriteStringN(0, "con_enable 1")
    Else
    WriteStringN(0, "con_enable 0")
EndIf

If GetGadgetState(#Checkbox_18)
    WriteStringN(0, "fps_max 101")
    Else
    WriteStringN(0, "fps_max 60")
EndIf

If GetGadgetState(#Checkbox_20)
    WriteStringN(0, "violence_hgibs 1")
    WriteStringN(0, "violence_agibs 1")
    WriteStringN(0, "violence_hblood 1")
    WriteStringN(0, "violence_ablood 1")
    Else
    WriteStringN(0, "violence_hgibs 0")
    WriteStringN(0, "violence_agibs 0")
    WriteStringN(0, "violence_hblood 0")
    WriteStringN(0, "violence_ablood 0")
EndIf

If GetGadgetState(#Checkbox_28)
    WriteStringN(0, "cl_allowdownload 1")
    Else
    WriteStringN(0, "cl_allowdownload 0")
EndIf

If GetGadgetState(#Checkbox_36)
    WriteStringN(0, "r_3dsky 0")
    Else
    WriteStringN(0, "r_3dsky 1")
EndIf

If GetGadgetState(#Checkbox_37)
    WriteStringN(0, "r_renderoverlayfragment 0")
    Else
    WriteStringN(0, "r_renderoverlayfragment 1")
EndIf

If GetGadgetState(#Checkbox_38)
    WriteStringN(0, "r_dynamic 0")
    Else
    WriteStringN(0, "r_dynamic 1")
EndIf

If GetGadgetState(#Checkbox_39)
    WriteStringN(0, "r_shadows 0")
    Else
    WriteStringN(0, "r_shadows 1")
EndIf

If GetGadgetState(#Checkbox_40)
    WriteStringN(0, "r_worldlights 0.9")
    Else
    WriteStringN(0, "r_worldlights 1")
EndIf

If GetGadgetState(#Checkbox_41)
    WriteStringN(0, "r_cheapwaterend 1")
    WriteStringN(0, "r_cheatwaterstart 1")
    Else
    WriteStringN(0, "r_cheapwaterend 0")
    WriteStringN(0, "r_cheapwaterstart 0")
EndIf

If GetGadgetState(#Checkbox_42)
    WriteStringN(0, "r_mmx 1")
    WriteStringN(0, "r_sse 1")
    WriteStringN(0, "r_sse2 1")
    WriteStringN(0, "r3dnow 1")
    Else
    WriteStringN(0, "r_mmx 0")
    WriteStringN(0, "r_sse 0")
    WriteStringN(0, "r_sse2 0")
    WriteStringN(0, "r3dnow 0")
EndIf

If GetGadgetState(#Checkbox_43)
    WriteStringN(0, "mat_forcehardwaresync 0")
    Else
    WriteStringN(0, "mat_forcehardwaresync 1")
EndIf

If GetGadgetState(#Checkbox_44)
    WriteStringN(0, "mat_bumpmap 0")
    Else
    WriteStringN(0, "mat_bumpmap 1")
EndIf

If GetGadgetState(#Checkbox_45)
    WriteStringN(0, "mat_specular 0")
    Else
    WriteStringN(0, "mat_specular 1")
EndIf

If GetGadgetState(#Checkbox_46)
    WriteStringN(0, "mat_antialias 0")
    Else
    WriteStringN(0, "mat_antialias 1")
EndIf

If GetGadgetState(#Checkbox_47)
    WriteStringN(0, "mat_filterlightmaps 0")
    Else
    WriteStringN(0, "mat_filterlightmaps 1")
EndIf

If GetGadgetState(#Checkbox_48)
    WriteStringN(0, "mat_clipz 1")
    Else
    WriteStringN(0, "mat_clipz 0")
EndIf

If GetGadgetState(#Checkbox_49)
    WriteStringN(0, "mat_reducefillrate 1")
    Else
    WriteStringN(0, "mat_reducefillrate 0")
EndIf

If GetGadgetState(#Checkbox_50)
    WriteStringN(0, "mat_forceaniso 0")
    Else
    WriteStringN(0, "mat_forceaniso 1")
EndIf

If GetGadgetState(#Checkbox_51)
    WriteStringN(0, "mat_vsync 0")
    Else
    WriteStringN(0, "mat_vsync 1")
EndIf

If GetGadgetState(#Checkbox_52)
    WriteStringN(0, "mat_trilinear 1")
    Else
    WriteStringN(0, "mat_trilinear 0")
EndIf

If GetGadgetState(#Checkbox_53)
    WriteStringN(0, "cl_smooth 1")
    Else
    WriteStringN(0, "cl_smooth 0")
EndIf

If GetGadgetState(#Checkbox_54)
    WriteStringN(0, "cl_forcepreload 1")
    WriteStringN(0, "sv_forcepreload 1")
    Else
    WriteStringN(0, "cl_forcepreload 0")
    WriteStringN(0, "sv_forcepreload 0")
EndIf

If GetGadgetState(#Checkbox_55)
    WriteStringN(0, "cl_ejectbrass 0")
    Else
    WriteStringN(0, "cl_ejectbrass 1")
EndIf
If GetGadgetState(#Checkbox_55)
    WriteStringN(0, "rope_wind_dist 0")
    WriteStringN(0, "rope_smooth 0")
    WriteStringN(0, "rope_subdiv 0")
    Else
    WriteStringN(0, "rope_wind_dist 1")
    WriteStringN(0, "rope_smooth 1")
    WriteStringN(0, "rope_subdiv 1")
EndIf
WriteStringN(0, "")
WriteStringN(0, "")
WriteStringN(0, "//------------------------------------------------------------------------------------------------------------")
WriteStringN(0, "//End of Config file")
WriteStringN(0, "//------------------------------------------------------------------------------------------------------------")

MessageRequester("Config erfolgreich gespeichert!", "Ihre config wurde im folgendem Verzeichniss gespeichert:"+Chr(10)+File$, 0)

EndIf

Verfasst: 11.03.2008 21:16
von mk-soft
SaveFileReq... liefert ein leerstring zurück bei abbruch.

Code: Alles auswählen

temp$ = SaveFileRequester("Save", "", "*.cfg", 0)
If temp$
  file$ = temp$
Else
  file$ = "default.cfg"
EndIf

Debug file$
FF :wink:

Verfasst: 11.03.2008 21:17
von icecrusher
ok, danke :)


*edit* irgendwie komme ich darauf jetzt nicht ganz klar grrr

Verfasst: 11.03.2008 22:17
von Kaeru Gaman
> *edit* irgendwie komme ich darauf jetzt nicht ganz klar grrr
ohne deinen code jetzt zu lesen...

du hast die Abbruchbedingung des SaveFileRequesters nicht korrekt überprüft.
wie mk sagte, bei Abbruch kommt ein Leerstring zurück.
also musst du auf den Leerstring reagieren.

ob du stattdessen einen string mit dem inhalt "default.cfg" zurückgibst,
damit dein proggi ne default config lädt,
oder ob du nur so sicher zurückspringst, dass keine altwerte überschrieben werden,
und du an einer sinnvollen stelle dein proggi wiederaufnimmst, bleibt völlig dir überlassen.

Verfasst: 12.03.2008 03:22
von icecrusher
Naja mein "tool" soll ja garnicht irgendwelche Daten auslesen, es soll nur welche speichern. Und ich bekomme es nicht hin, dass es nach abbruch weiterläuft.


Nach dem Speichern der Datei, da schließt es sich auch.. -.-
:(

Verfasst: 12.03.2008 10:01
von Kiffi
icecrusher hat geschrieben:Naja mein "tool" soll ja garnicht irgendwelche Daten auslesen, es soll nur welche speichern. Und ich bekomme es nicht hin, dass es nach abbruch weiterläuft.
was soll Dein Programm denn bei 'Abbrechen' stattdessen machen?

Grüße ... Kiffi

Verfasst: 12.03.2008 10:22
von HeX0R
Das sieht mir stark nach einer Subroutine aus.
Ohne abschliessendes Return kommst du da nicht mehr zurück und dein Programm dürfte sich beenden.

Auch ein Grund, warum man Subroutinen eigentlich heutzutage nicht mehr verwendet.

Verfasst: 12.03.2008 10:58
von hardfalcon
Schau dir mal die letzten Zeilen deines geposteten Codeschnipsels an. Da wird einfach in ne Datei reingeschrieben, die gar nicht geöffnet/erstellt ist, wenn beim SaveFileRequester vom Benutzer abgebrochen wurde.

Kein Wunder dass dein Programm dann abstürzt, das hättest du auch selber rausfinden können, wenn du es mal aus der IDE raus mit dem Debugger gestartest hättest (einfach Code in der IDE laden, nachschaun, ob der Debugger aktiviert ist, und F5 drücken).