Seite 1 von 2

OpenFile löscht Dateiinhalt

Verfasst: 28.12.2006 23:40
von dysti
Hallo,
ich öffne eine Datei mit OpenFile und füge eine Zeile mit WritestringN ein.
Nach Überprüfung der Datei ist immer nur die eingefügte Zeile enthalten.
Er fügt also die Zeile nicht hinzu.
Wie kann ich nur eine Zeile hinzufügen ohne das die vorhandenen Zeilen gelöscht werden?

Verfasst: 28.12.2006 23:50
von Kaeru Gaman
du musst zuerst den pointer ans ende des files setzen...

irgendwas so in richtung FileSeek(LOF) oder irgendwie so.. ;)

Verfasst: 29.12.2006 02:04
von manunidi
Gib dir mit

loc(#DATEINUMMER)

mal die aktuelle position aus, und du siehst, das der Dateizeiger am anfang ist! Setzte denn dann mit

fileseek(#DATEINUMMER,LOC(#DATEINUMMER))

auf das ende der datei!

Verfasst: 29.12.2006 02:07
von Kiffi
manunidi hat geschrieben:fileseek(#DATEINUMMER,LOC(#DATEINUMMER))
LOF, nicht LOC.

Grüße ... Kiffi

Verfasst: 29.12.2006 07:41
von dysti
Super, das funktioniert.

Verfasst: 29.12.2006 08:09
von HemSA
Hallo dysti,
bin zwar schon etwas spät dran, vielleicht kannst du oder andere was mit meinem Code anfangen.
Es ist ein Code der Eingegebene Felder in die Datei schreibt.

Nen guten Rutsch noch ins Neue Jahr wünsche ich noch falls man sich nicht mehr sieht.

Code: Alles auswählen

If OpenWindow(0,216,0,450,300,"Verim giriş pencere",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(0))
      TextGadget(1, 20, 20, 150, 20, "Lütfen verinler girin") ;Bitte Daten eingeben
      TextGadget(2, 20, 60, 60, 20, "İtalyanca"); Italienisch               
      StringGadget(3, 80, 60, 350, 20, "")                           ;Eingabefeld
      TextGadget(4, 20, 100, 60, 20, "Türkce"); Türkisch
      StringGadget(5, 80, 100, 350, 20, "")
      TextGadget(6, 20, 140, 60, 20, "Almanca"); ,Deutsch
      StringGadget(7, 80, 140, 350, 20, "")      
      TextGadget(8, 20, 180, 60, 20, "İngilizce"); Englisch
      StringGadget(9, 80, 180, 350, 20, "")      
      ButtonGadget(10, 100, 240, 100, 30, "Yine sözler ekle"); Neue Wörter in Datei anfügen
      ButtonGadget(11, 300, 240, 100, 30, "Kapat"); schliessen
     
  
  EndIf

  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow 
      Quit = 1
    EndIf
    If EventID = #PB_Event_Gadget
      
      
      
        If EventGadget()=10
      
             text1s.s = GetGadgetText(3)                             ;auslesen vom Stringgadget 
             ergebnis1s.s = LSet(text1s.s, 40)                       ;auffüllen/begrenzen des Stringgadget auf 40 Zeichen
             text2s.s = GetGadgetText(5)
             ergebnis2s.s = LSet(text2s.s, 40)
             text3s.s = GetGadgetText(7)
             ergebnis3s.s = LSet(text3s.s, 40)
             text4s.s = GetGadgetText(9)
             ergebnis4s.s = LSet(text4s.s, 40)
             
             textgesamts.s = ergebnis1s.s+ergebnis2s.s+ergebnis3s.s+ergebnis4s.s  ;zusammenlegen von den Feldern ( Gesamttext )
      
          If OpenFile(1,"Wortschatz.dat")
              laengel.l= Lof(1)                                      ; ermitteln der Dateilaenge              
              FileSeek(1,laengel.l)                                  ; setzt den Zeiger ans Dateiende           
      
              WriteStringN(1,textgesamts.s)                          ;schreibt den Gesamttext an das Ende von der Datei
      
              CloseFile(1)                                           ;schließt die Datei
          EndIf
        
        SetGadgetText(3, "")                                         ;Eingabefelder werden gelöscht nachdem der 
        SetGadgetText(5, "")                                         ;"Daten hinzufügen" BUTTON gedrückt wurde
        SetGadgetText(7, "")
        SetGadgetText(9, "")
        
        EndIf
      
    
        If EventGadget()=11
         Quit = 1
        EndIf
          
        
        
           
    EndIf
 Until Quit=1
  
EndIf
End

Verfasst: 29.12.2006 14:22
von Andre
Habe in Kurzform das folgende Beispiel der Hilfe von OpenFile() hinzugefügt:
Wenn Daten zu einer existierenden Datei hinzugefügt werden sollen, muss der Dateizeiger zuerst auf
das Ende der Datei gesetzt werden. Hierfür werden nach OpenFile() die Befehle FileSeek() und Lof() verwendet:

Code: Alles auswählen

  If OpenFile(0, "Test.txt")    ; öffnet eine existierende Datei oder erstellt eine, wenn sie noch nicht existierte
    FileSeek(0, Lof(0))         ; springt an das Ende der Datei (das Ergebnis von Lof() wird hierfür verwendet)
    WriteStringN(0, "... another line at the end.")
    CloseFile(0)
  EndIf

Verfasst: 29.12.2006 23:08
von Kaeru Gaman
@André :allright:

Verfasst: 30.12.2006 07:47
von dysti
Andre:
Wo zum Teufel bekomme ich diese Hilfedatei. Ich habe doch das neuste Update, aber in meiner Hilfe steht das nicht.
Ist doch klar, das man erst die Hilfe durchsucht.

Verfasst: 30.12.2006 07:59
von dysti
HemSa:
Genau sowas hatte ich gesucht. Aber wie du schon gesehen hattest, habe ich das Problem in der Zwischenzeit gelöst.
Trotzdem Danke und alles Gute allen im Forum für das neue Jahr.