PreferenceComment Position in PB4

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

PreferenceComment Position in PB4

Beitrag von uweb »

Durch den folgenden Code wird eine vollwertige Preference-Datei (server.ini) incl. PreferenceComment
erzeugt wenn sie nicht schon existiert.
Wenn sie schon existiert aber Einträge fehlen werden die incl. PreferenceComment eingetragen.

Das kann man leicht testen wenn man aus der server.ini Einträge entfernt und den Code neu laufen lässt.

Dabei wird dann mein Problem sichtbar :
Der erste PreferenceComment steht nicht vor dem dazugehörigen Eintrag.

Hat jemand eine Idee wie ich das besser lösen kann ?

Code: Alles auswählen

Global ServerFolder.s=Space(255)
GetCurrentDirectory_(255,@ServerFolder)
If Right(ServerFolder,1)<>"\"
  ServerFolder+"\"
EndIf


;server.ini
Global ServerName.s = "WF-Server"
Global Port         = 80
Global BufferSize   = 16777216
Global WebFolder.s  = "www"

Procedure.s ReadPreferenceStringKey(Keyword.s,Value.s)
  Value="*"+Value
  Value=ReadPreferenceString(Keyword,Value)
  If Left(Value, 1) = "*"
    Value=Right(Value, Len(Value)-1)
    Now.s = FormatDate("J%yyyy M%mm D%dd T%hh:%ii:%ss : ", Date())
    PreferenceComment(Now+"The following entry was missed and therefore insert by server.")
    WritePreferenceString(Keyword, Value)
  EndIf
  ProcedureReturn Value
EndProcedure

Procedure.l ReadPreferenceLongKey(Keyword.s,LongValue.l)
  Value.s="*"+Str(LongValue)
  Value=ReadPreferenceString(Keyword,Value)
  If Left(Value, 1) = "*"
    Value=Right(Value, Len(Value)-1)
    Now.s = FormatDate("J%yyyy M%mm D%dd T%hh:%ii:%ss : ", Date())
    PreferenceComment(Now+"The following entry was missed and therefore insert by server.")
    WritePreferenceString(Keyword, Value)
  EndIf
  ProcedureReturn Val(Value)
EndProcedure

Procedure.l ReadINI()
  Select FileSize("server.ini") 
    Case -1
      CreatePreferences("server.ini")
      Now.s = FormatDate("J%yyyy M%mm D%dd T%hh:%ii:%ss : ", Date())
      PreferenceComment(Now+"This file was missed and therefore written by server.")
      WritePreferenceString("ServerName",ServerName)
      WritePreferenceLong("Port",Port)
      WritePreferenceLong("BufferSize",BufferSize)
      WritePreferenceString("WebFolder",WebFolder)
      ClosePreferences()
      ReturnValue = 1
    Case -2
      MessageRequester("Error","Couldn't create server.ini in Folder "+ServerFolder+" .")
      ReturnValue = 2
    Default
      OpenPreferences("server.ini")
      Now.s = FormatDate("J%yyyy M%mm D%dd T%hh:%ii:%ss : ", Date())
      PreferenceComment(Now+"Last server access.")
      ServerName=ReadPreferenceStringKey("ServerName",ServerName)
      Port=ReadPreferenceLongKey("Port",Port)
      BufferSize=ReadPreferenceLongKey("BufferSize",BufferSize)
      WebFolder=ReadPreferenceStringKey("WebFolder",WebFolder)
      ClosePreferences()
      ReturnValue = 0
  EndSelect
  ProcedureReturn ReturnValue
EndProcedure

ReadINI()

Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Mit ReadFile() vielleicht?
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Danke für die Antwort. Ich dachte schon ich habe Mundgeruch.

Letzte Nacht habe ich die Lösung gefunden. Da ich aber ziemlich müde war und nicht damit gerechnet habe, daß sich noch jemand dafür interessiert habe ich es noch nicht geschrieben.

Code: Alles auswählen

ExaminePreferenceKeys():While NextPreferenceKey():Wend
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Nunja ich hab den Link 'unbenatwortete beitraege' gefunden. Readfile macht aber irgendwie keinen Sinn wennschon Openfile. Damit meine ich die ini selber zu bearbeiten. Deine Loesung ist aber sicher uewbersichtlicher.
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Nunja ich hab den Link 'unbenatwortete beitraege' gefunden.
Interessant ! Vielleicht hätte ich gestern meine Frage

http://www.purebasic.fr/german/viewtopic.php?t=7869

in einen eigenen Thread stellen sollen statt mich an einen anderen anzuhängen.

Bis jetzt habe ich dort noch keine Antwort bekommen.
Antworten