Finde den Fehler spiel ^^ "ReadPreferenceLong"

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

ja und ?

dein Code funzt doch ?`

Code: Alles auswählen

testcfg = OpenPreferences("lcd.cfg") 
   If testcfg = 0 
          CreatePreferences("Lcd.cfg") 
   EndIf 
          PreferenceGroup("Set")  ;<-------------------- 
      
     ;Ts. Name 
       Global tsname.s = ReadPreferenceString ("TS_name", "") 
       If le =0 
       EndIf 
       Global Sec.l = ReadPreferenceLong ("Sec",5000000) 
       Debug Sec
da steht bei mir : 232534324
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kratermonster
Beiträge: 22
Registriert: 20.03.2008 20:15

Beitrag von Kratermonster »

Bei mir kommt nur null zurück ;(
mist ^^

mfg simi
---------------------------------------
Sry Bin legesteniker...
Kratermonster
Beiträge: 22
Registriert: 20.03.2008 20:15

Beitrag von Kratermonster »

Code: Alles auswählen

Procedure auslesn(le)
          OpenPreferences("lcd.cfg")
testcfg = OpenPreferences("lcd.cfg")
   If testcfg = 0
          msg("Keine cfg Datei erstelle neue...")
          CreatePreferences("Lcd.cfg")
   EndIf
          PreferenceGroup("Set")
     
     ;Ts. Name
       Global tsname.s = ReadPreferenceString ("TS_name", "")
       If le =0 
       SetGadgetText(#String_name, tsname)
       EndIf
 
      ;Ts Starten check
       Global tsebel.l = ReadPreferenceLong ("TS_start", 0)
       If le =0 
       SetGadgetState(#CheckBox_ts, tsebel)
       EndIf
   
      ;Ts. Server
       Global tsserver.s = ReadPreferenceString ("TS_server", "")
       If le =0 
       SetGadgetText(#String_Server, tsserver)
       EndIf
       
      ;Ts Password
       Global tsPass.s = ReadPreferenceString ("TS_pass", "")
       If le =0 
       SetGadgetText(#String_Pass, tsPass)
       EndIf

      ;Ts Chanel
       Global tschanel.s = ReadPreferenceString ("TS_chanel", "")
       If le =0 
       SetGadgetText(#String_Chanel, tschanel)
       EndIf

      ;Ts Sub
       Global tssub.s = ReadPreferenceString ("TS_sub", "")
       If le =0 
       SetGadgetText(#String_Sub, tssub)
       EndIf
       
      ;Relogen
       Global relog.l = ReadPreferenceLong ("Relog", 0)
       If le =0 
       SetGadgetState(#CheckBox_Relog, relog) 
       EndIf
      
      ;Relog verz   
       Global relogverz.s = ReadPreferenceString ("Relogverz", "")
       If le =0 
       SetGadgetText(#String_rverz, relogverz)
       EndIf
       
      ;Boten  
       Global boot.l = ReadPreferenceLong ("Boot", 0)
       If le =0 
       SetGadgetState(#CheckBox_boot, Boot) 
       EndIf

      ;Boot sec  
       Global Sec.l = ReadPreferenceLong ("Sec",5000000)
       If le =0 
       SetGadgetText(#String_bsec, Str(sec))
       EndIf

      ;Ts verz   
       Global tsverz.s = ReadPreferenceString ("TS_verz", "")
       If le =0 
       SetGadgetText(#String_tsverz, tsverz)
       EndIf
EndProcedure

Code: Alles auswählen

---------------------------------------------------------------------------------
;---------  *** FEnster 3 ***  -------------
fine:
aus = 0
CloseWindow(#Window_0)
win3()
auslesn(1)
msg(tsname)
msg(Str(Sec))
CreateThread(@countdown(), Str(sec))
;Msg(tsname)
;Msg(tsPass)
;RunProgram("TeamSpeak.exe", "/nickname="+tsname+"?Loginname="+tsname+"?Password="+tsPass+"?channel="+tschanel+"?Subchannel="+tssub ,tsverz)
;ganz unten sind die Variablen zeile 350 - 400
;Hier chris  ? ????????????????????????????????????????

Repeat
SetGadgetText(#time_1, anzeige2)
event   = WindowEvent()
 
  If event
 
    Select event
 
    Case #PB_Event_CloseWindow       
      aus = 1    
    
    EndSelect
                              
  EndIf                         

   If boom = 13
   aus = 1
   EndIf



Delay(5) 
Until aus = 1
If Boom =13
Goto boom
EndIf
End
boom:
msg("Neustart")
---------------------------------------
Sry Bin legesteniker...
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

erstmal...

Code: Alles auswählen

          OpenPreferences("lcd.cfg")
testcfg = OpenPreferences("lcd.cfg") 
... solltest Du mal saubermachen. 2mal hintereinander OpenPreferences()
macht nicht wirklich Sinn.

Des weiteren vermute ich, dass Du 2 oder mehrere lcd.cfg auf Deiner Platte
(in unterschiedlichen Ordnern) hast. Prüfe mal testweise mit einem absoluten
Pfad (beispielsweise: c:\lcd.cfg) und schau, ob der Fehler immer noch auftritt.

(Den absoluten Pfad solltest Du nach Deinen Tests natürlich wieder
rausnehmen.)

und das hier...

Code: Alles auswählen

          msg("Keine cfg Datei erstelle neue...")
          CreatePreferences("Lcd.cfg") 
1.) macht es selten Sinn, dem Anwender mitzuteilen, dass eine neue
Pref.-Datei erzeugt wird. Das nervt höchstens.

und 2.) Bitte immer den Rückgabewert von CreatePreferences()
überprüfen. Was ist, wenn der Anwender Dein Programm von einer CD
startet?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Grundsätzlich sollte man zwei Procedures haben. Eine um die Preferences zu
lesen und eine zum Schreiben.

Code: Alles auswählen

Global wert1.l
Procedure LeseEinstellungen()
  OpenPreferences("bla.pref")
  
  PreferenceGroup("gruppe")
  wert1 = ReadPreferenceLong("wert1", 500000)
  ;...
  
  ClosePreferences()
EndProcedure

Procedure SchreibeEinstellungen()
  If CreatePreferences("bla.pref"
    
    PreferenceGroup("gruppe")
    WritePreferenceLong("wert1", wert1)
    ;...
    
    ClosePreferences()
  EndIf
EndProcedure

LeseEinstellungen()

;Programmcode

SchreibeEinstellungen()
Dabei braucht man sich keine Sorgen um den Rückgabewert von
'OpenPreferences()' machen, weil dann nämlich die Standardwerte
genommen werden. Den Rückgabewert von 'CreatePreferences()' sollte
man allerdings prüfen und nur schreiben, wenn er auch ungleich Null ist.
Kratermonster
Beiträge: 22
Registriert: 20.03.2008 20:15

Beitrag von Kratermonster »

okes Danke ich werd mal schauen das ich das mir zu hertzen nehme.

Und an Kiffi ;)
Bild
Den hast du gewonnen ;)
Vielen dank war wirklich so das ich eine ini im bekup Ordner benutzt hab.

mfg simi

Bei den Image-Tags keine Zeilenumbrüche reinbaun, dann klappts auch mit dem Nachbarn - Kaeru fecit
---------------------------------------
Sry Bin legesteniker...
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

will auch nen Keks :mrgreen:

schließlich war ich der erste, der das mit der falschen Datei angesprochen hat 8)

:wink:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Kratermonster
Beiträge: 22
Registriert: 20.03.2008 20:15

Beitrag von Kratermonster »

^^ Hab doch nur einen ;)

Bin mir sicher kiffi teilt gerne mit dir ^^

mfg duc
---------------------------------------
Sry Bin legesteniker...
Antworten