Preference kann nicht geöffnet werden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Preference kann nicht geöffnet werden

Beitrag von Mok »

Jetzt geht garnichts mehr.
Ich kann die Prefs zwar öffnen, aber das wars auch schon. Schreiben geht nicht und F1 geht sowieso nicht. (Ich frage mich gerade die ganze Zeit, ob das ganze herumgetue überhaupt das Problem mit F1 beheben sollte)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Preference kann nicht geöffnet werden

Beitrag von al90 »

Mok hat geschrieben:Jetzt geht garnichts mehr. Ich kann die Prefs zwar öffnen, aber das wars auch schon.
Hast du deine variablen auch Globalisiert oder geShared ? Denn sonst geht es nicht aus der Procedure heraus,
da das Hauptprogram die Variablen / Strings aus den Proceduren sonst nicht erkennen kann. (Lokal)
Schreiben geht nicht und F1 geht sowieso nicht. (Ich frage mich gerade die ganze Zeit, ob das ganze herumgetue überhaupt das Problem mit F1 beheben sollte)
Was genau meinst Du? Und wieso F1 ? Schreib mal gnau was du meinst bzw. vorhast, dann können wir dich auch eine
bessere Hilfestellung bieten. :wink:
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Preference kann nicht geöffnet werden

Beitrag von Mok »

Ach je, ich hätte gleich alles schreiben sollen: Der Shortcut F1 (Hilfe) funzt in meinem Programm nicht ganz reibungslos, da hat X0r gemeint, ich soll einfach SetCurrentDirectory(GetPathPart(ProgramFilename())) machen, dann hat sich aber (logischerweise) das Problem mit der Preference aufgetan.
Und jetzt funzt weder das eine noch das andere. :(
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Preference kann nicht geöffnet werden

Beitrag von ts-soft »

Code: Alles auswählen

Define.s HelpPath
HelpPath = GetPathPart(ProgramFilename()) + "hilfe.txt"
Debug HelpPath
Mangels Infos mal geraten.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Preference kann nicht geöffnet werden

Beitrag von al90 »

@Mok

Hier mal ein unabhängiger sample code zum Speichern & wieder auslesen von Configs.

Code: Alles auswählen


; Globale Variablen definieren.

Global MyKeyname$

; Proceduren.

Procedure ForceDirectories(Dir.s)
  If (Right(Dir.s, 1) = "\")
    Dir.s = Left(Dir.s, Len(Dir.s) - 1)
  EndIf
  If (Len(Dir.s) < 3) Or FileSize(Dir.s) = -2 Or GetPathPart(Dir.s) = Dir.s
    ProcedureReturn #True
  EndIf
  ForceDirectories(GetPathPart(Dir.s))
  CreateDirectory(Dir.s)
  ProcedureReturn #True
EndProcedure

Procedure.s GetAndCreateConfigPath(FullPath$)

  Protected PrefsPath$

  If Right(FullPath$, 1) <> "\" : FullPath$ + "\" : EndIf

  PrefsPath$ = GetEnvironmentVariable("APPDATA") + "\" + StringField(FullPath$, CountString(FullPath$, "\"), "\") + "\"

  If ForceDirectories(PrefsPath$) = #True
    ProcedureReturn PrefsPath$
  EndIf

EndProcedure

Procedure.l SavePreferences(ConfigFile$)

If CreatePreferences(ConfigFile$)
  PreferenceGroup("TestGroup")
  WritePreferenceString("TestKey", "Hallo das ist der Schlüssel!")
  ClosePreferences()
EndIf

EndProcedure

Procedure.l LoadPreferences(ConfigFile$)

If OpenPreferences(ConfigFile$)
  If PreferenceGroup("TestGroup")
    MyKeyname$ = ReadPreferenceString("TestKey", "")
  EndIf
  ClosePreferences()
EndIf

EndProcedure


; --------------------- Hauptprogram ab hier ----------------------

; Pfad für Prefs ermitteln.

MyConfigPath$ = GetAndCreateConfigPath(GetPathPart(ProgramFilename()) + "Mok\")

; Config speichern.

SavePreferences(MyConfigPath$ + "MyConfig.ini")

; Werte aus Preferences einlesen & im Debugger ausgeben.

LoadPreferences(MyConfigPath$ + "MyConfig.ini")
Debug MyKeyname$
Das Beispiel zeigt den umgang mit Globalen variablen. Alternativ könntest Du aber auch z.b. Sharen oder Structuren benutzen,
wobei letzteres für Anfänger eher schwerer ist und ich deshalb nicht näher darauf eingehen möchte. Probiere mal den
Testcode aus und schau ihn Dir mal genauer an. Dann wirst du schon gleich sehen wie einfach das ganze sein kann.
Zu dem F1-Problem kann ich leider auch nichts sagen, da ich zu wenig anhaltspunkte habe.

Die Config findest Du dann unter

C:\Users\<Username>\AppData\Roaming\Mok\

(zumindest bei Vista)
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Preference kann nicht geöffnet werden

Beitrag von Mok »

Ja, das Config-Zeugs hab ich alles schon verstanden, nur ich frag mich wozu das alles gut sein soll, wenn doch eh F1 das einzige war, was ni wirklich richtig gefunzt hat.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Preference kann nicht geöffnet werden

Beitrag von ts-soft »

Nun frag ich mich, warum Du das F1 Problem nicht erklärt hast.
Was wird wie wann wo geladen?

Aber jetzt hab ich ehrlich gesagt keinen Bock mehr, hier meine Zeit
zu vertrödeln, wenn Du nichtmal in der Lage bist, die richtigen Fragen,
mit den richtigen Infos, zu stellen.

Guten Rutsch

@al90
Gewöhne Dir bloß endlich das .l hinter Procedure zu schreiben ab.
Solange es in einen Integer paßt, egal ob long, word, byte oder
sonstwas, nutze .i oder lasse es weg.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Preference kann nicht geöffnet werden

Beitrag von al90 »

Mok hat geschrieben:Ja, das Config-Zeugs hab ich alles schon verstanden, nur ich frag mich wozu das alles gut sein soll, wenn doch eh F1 das einzige war, was ni wirklich richtig gefunzt hat.
Wie gesagt, mir fehlen weitere infos zu deinem F1 problem. Was genau soll gemacht werden ?

z.b.

RunProgram(HelpFile) ?
OpenPreferences(HelpFile) ?

Das mit F1 wissen wir ja inzwichen. Aber was soll bzw. macht dein program danach ?
Ein kurzer code auszug könnte Hilfreich sein.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Re: Preference kann nicht geöffnet werden

Beitrag von al90 »

ts-soft hat geschrieben: @al90
Gewöhne Dir bloß endlich das .l hinter Procedure zu schreiben ab.
Solange es in einen Integer paßt, egal ob long, word, byte oder
sonstwas, nutze .i oder lasse es weg.
Ich versuche mich zu bessern. Sind halt Gewohnheiten aus alten (32Bit) zeiten. :mrgreen:
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Preference kann nicht geöffnet werden

Beitrag von Mok »

Und ich habe mir gedacht, seit http://www.purebasic.fr/german/viewtopi ... 41#p262341 ist es klar, dass es an F1 liegt, aber scheinbar hab ich mich geirrt.

Ich habe jetzt auch ehrlichgesagt keinen Bock mehr auf das ganze. Werd wohl bei dem trockenen Java-Scheiß aus der Schule bleiben müssen.
See you all, PureBasic ist für mich erstmal gegessen.
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten