OpenFile löscht Dateiinhalt

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

OpenFile löscht Dateiinhalt

Beitrag 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?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

du musst zuerst den pointer ans ende des files setzen...

irgendwas so in richtung FileSeek(LOF) oder irgendwie so.. ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
manunidi
Beiträge: 109
Registriert: 12.04.2006 22:44

Beitrag 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!
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

manunidi hat geschrieben:fileseek(#DATEINUMMER,LOC(#DATEINUMMER))
LOF, nicht LOC.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Super, das funktioniert.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag 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
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag 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
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@André :allright:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag 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.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag 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.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten