Seite 1 von 1

Problem mit FileOpen, WriteStringN

Verfasst: 12.07.2006 13:56
von kaitec
Hallo,

also ich hab ein Programm geschrieben, dass verschiedene Dinge Logt, dass Problem ist jetzt nur, dass ich das Programm starte, es schreib eine LOG Datei... ich beende es! Ich startet es und es schreib wieder eine LOG Datei besser gesagt es überschreibt die Letzte LOG Datei! Wie kann man die Datei fortsetzen?

Hier mal schnell
den

Code: Alles auswählen

fileop = OpenFile(0, "log.amp")

     If fileop = 0
     MessageRequester("ERRO", "I can't create the Log file", 0)
     End 
     EndIf 

          tag$ = Str(Day(Date())) 
          monat$ = Str(Month(Date())) 
          jahr$ = Str(Year(Date())) 
          stunde$ = Str(Hour(Date())) 
          minute$ = Str(Minute(Date())) 
          sekunde$ = Str(Second(Date())) 
          datum$ = tag$+"."+monat$+"."+jahr$ 
          zeit$ = stunde$+":"+minute$+":"+sekunde$      

WriteStringN(datum$+" "+zeit$+" BenutzerAnmeldung's Programm gestartet!")

;BLABLABLA - Soures Code nicht notwendig für Daten schreiben!

  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_Gadget


      Select EventGadgetID()
      
      Case 6
          tag$ = Str(Day(Date())) 
          monat$ = Str(Month(Date())) 
          jahr$ = Str(Year(Date())) 
          stunde$ = Str(Hour(Date())) 
          minute$ = Str(Minute(Date())) 
          sekunde$ = Str(Second(Date())) 
          datum$ = tag$+"."+monat$+"."+jahr$ 
          zeit$ = stunde$+":"+minute$+":"+sekunde$      

WriteStringN(datum$+" "+zeit$+" Benutzer: "+GetGadgetText(3)+" :hat sich angemeldet und die Endarbeitsuhr auf: "+GetGadgetText(5)+" :gestellt!")

      Case 9
      
          tag$ = Str(Day(Date())) 
          monat$ = Str(Month(Date())) 
          jahr$ = Str(Year(Date())) 
          stunde$ = Str(Hour(Date())) 
          minute$ = Str(Minute(Date())) 
          sekunde$ = Str(Second(Date())) 
          datum$ = tag$+"."+monat$+"."+jahr$ 
          zeit$ = stunde$+":"+minute$+":"+sekunde$      

WriteStringN(datum$+" "+zeit$+" Benutzer: "+GetGadgetText(8)+" :hat sich abgemeldet")
      

      EndSelect

    EndIf

  Until EventID = #PB_Event_CloseWindow
  
          tag$ = Str(Day(Date())) 
          monat$ = Str(Month(Date())) 
          jahr$ = Str(Year(Date())) 
          stunde$ = Str(Hour(Date())) 
          minute$ = Str(Minute(Date())) 
          sekunde$ = Str(Second(Date())) 
          datum$ = tag$+"."+monat$+"."+jahr$ 
          zeit$ = stunde$+":"+minute$+":"+sekunde$      

WriteStringN(datum$+" "+zeit$+" BenutzerAnmeldung's Programm beendet!")
  
CloseFile(0)
Wäre für Hilfe sehr dankbar!

Ich hänge nämlich daran fest atm!!

MfG
Kai

Verfasst: 12.07.2006 14:04
von Kiffi
einfach den Dateizeiger mit FileSeek an's Ende der Datei bewegen:

Code: Alles auswählen

fileop = OpenFile(0, "log.amp")

     If fileop = 0
     MessageRequester("ERRO", "I can't create the Log file", 0)
     End
     EndIf

    FileSeek(Lof()) ; !!!

Bitte schreib in Deine Signatur, dass Du PB V3.94 benutzt!

Grüße .... Kiffi

Verfasst: 13.07.2006 16:08
von >gLoo
hi
ich habe gerade ein bisschen herumprobiert und musst feststellen, dass, wenn ich das so mache, wie du da oben angefangen hast, und mir dann die Zeit ausgeben lasse, immer "hinten" eine Zahl fehlt . :?

ich habe also nicht hh:mm:ss, wie es sein sollte, sondern hh:mm:s. Und wenn ich die Sekunden weglasse, fehlt die letzte Stelle bei den Minuten...

Kann mir einer sagen warum?

Verfasst: 13.07.2006 16:17
von HeX0R
Genaugenommen fehlt dir nicht die "hintere" sondern die "vordere" Ziffer, und das auch nicht immer.

Bei z.B. der 5. Sekunde wird nunmal nicht 05 draus, sondern 5.
Schau dir mal den Befehl RSet() an, das sollte dir helfen.

Verfasst: 13.07.2006 16:27
von Kiffi
Die bessere Alternative wäre ohnehin die Verwendung von FormatDate():

Code: Alles auswählen

WriteStringN(FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", Date()) + " Programm gestartet!") 
Dann kann man sich das gesamte Datums-Zusammengewurschtel sparen.

Grüße ... Kiffi

Verfasst: 13.07.2006 16:55
von Kaeru Gaman
richtig.

aber da DATE nicht das einzige ist, was man vielleicht mal formatieren möchte,
sondern auch mal ne score oder sonstwas, hier mal der kniff:

Beispiel für 8 stellen mit führenden Nullen:

Code: Alles auswählen

Form$ = Right( "0000000"+Str(Zahl) , 8 )
der nuller-string muss mindestens so lang sein, wie die anzahl stellen -1

leiter gibt es keine native funktion, einen mit Nullen gefüllten String zu erzeugen.
wenn man führende leerzeichen braucht, ist es einfacher:

Code: Alles auswählen

Form$ = Right( Space(Stellen)+Str(Zahl) , Stellen )

Re: Problem mit FileOpen, WriteStringN

Verfasst: 13.07.2006 17:10
von Slut-Hunter
kaitec hat geschrieben:Hallo,

also ich hab ein Programm geschrieben, dass verschiedene Dinge Logt, dass Problem ist jetzt nur, dass ich das Programm starte, es schreib eine LOG Datei... ich beende es! Ich startet es und es schreib wieder eine LOG Datei besser gesagt es überschreibt die Letzte LOG Datei! Wie kann man die Datei fortsetzen?

Hier mal schnell
den code
fileop = OpenFile(0, "log.amp")

If fileop = 0
MessageRequester("ERRO", "I can't create the Log file", 0)
End
EndIf
Das End ist schon oben ?

Bei mir ist es immer ganz unten.

Zu der Sache mit den Dateinamen, machs halt so, daß du nicht alles in eine Datei schreibst, sondern die Dateinamen nach dem Datum und der Uhrzeit erstellen lässt.

so was z.B

Code: Alles auswählen

Datum$ = FormatDate("%dd-%mm-%yyyy | %hh-%ii-%ss | ", Date())

CreateFile(FileID, "Datum$")
OpenFile(FileID, "Datum$")
UseFile(FileID)

WriteStringN("Dies und das^^")
CloseFile(FileID)

Verfasst: 14.07.2006 13:17
von >gLoo
Vielen Dank (euch allen) das wird mir helfen.