Createfile() mit Editorgadget funktioniert nicht

Anfängerfragen zum Programmieren mit PureBasic.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Hallo, wieso funktioniert in meinem Fall Createfile() nicht im Zusammenhang mit einem Editorgadget? Hier der Codeausschnitt:

Code: Alles auswählen


    a = a + 1
    AddGadgetItem(116,a,GetGadgetText(12) + "." + GetGadgetText(13) + "." +GetGadgetText(14)) 
      If CreateFile(4,"Daten\Editor.txt")
        WriteStringN(4,GetGadgetText(116))
        CloseFile(4)
      EndIf
Es wird nicht die Bohne was in die Datei "Daten\Editor.txt" geschrieben. Danke für Hinweise, auch natürlich dafür, wenn für das Auslesen und Abspeichern von mehreren Zeilen im Editorgadget nochmal Extraoptionen notwendig sind.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von cxAlex »

Gibt es den Ordner Daten\ ? Hast du schreibrechte? Os, x86/x64, PB Version?

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von STARGÅTE »

Bitte benutze doch den Debugger !
und lass dir dort alles Ausgeben was geht/nicht geht:

Code: Alles auswählen

a = a + 1
AddGadgetItem(116,a,GetGadgetText(12) + "." + GetGadgetText(13) + "." +GetGadgetText(14)) 
If CreateFile(4,"Daten\Editor.txt")
  Debug "File erstellt!"
  Debug "Inhalt:"
  Debug GetGadgetText(116)
  WriteStringN(4,GetGadgetText(116))
  CloseFile(4)
EndIf
dadurch siehst du gleich wo es hängt
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
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Den Ordner Daten gibt es und der funktioniert ansonsten ganz prima in meinem Programm. Beim Debuggen wird mir ausgegeben

"File erstellt!"
"Inhalt:"
11.6.2010

Das Datum wird auch korrekt in das Editorgadget reingeschrieben. Nur hinterher ausgelesen und gespeichert wird es nicht. Bug in PureBasic?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von STARGÅTE »

Bug in PureBasic?
:lol: klar ....

Da dir der Debugger ja das zu schreibende Anzeigt, muss der Fehler von DIR an einer anderen stelle sein!

Überschreibst du die Datei wieder ?
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
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Ich habe mir jetzt die Mühe gemacht, den Programmteil in einem Extrafenster zu isolieren. Fazit: Dasselbe in Grün! Und es kommt noch besser: Während in meinem eigentlichen Programm der Debugger anspringt und 6.11.2010 ausliest, tut er es im isolierten Fenster (der folgende Code) nicht, obwohl ich das 1:1 kopiert habe! Nur die Eintäge im Editorgadget habe ich jetzt manuell eingetragen, aber das Anzeigeergebnis bleibt ja gleich: 6.11.2010

Code: Alles auswählen

OpenWindow(0,0,0,300,300,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)

CreateGadgetList(WindowID(0))
ButtonGadget(6,20,68,104,28,"Enter")
EditorGadget(116,147,68,92,185)
    
Repeat
event = WaitWindowEvent(1)
eventgadget = EventGadget()

  Select event 
  Case #PB_Event_Gadget      
    Select EventGadget()
    
    Case 6
    a = a + a
    AddGadgetItem(116, a, "6" + "." + "11" + "." + "2010") 
    If CreateFile(4,"Daten\Editor.txt")
    WriteStringN(4,GetGadgetText(116))
    CloseFile(4)
    EndIf
    
      If ReadFile(4,"Daten\Editor.txt")
      Debug ReadString(4)
      CloseFile(4)
      EndIf
      
    EndSelect
  EndSelect     
        
Until event = #PB_Event_CloseWindow     
Ich hol mir erstmal ein Bier. Befindet sich im Ordner Kühlschrank und wird mühelos ausgelesen.

P.S.: Wird doch ausgelesen. Hatte einfach vergessen, das isolierte Fenster abzuspeichern.
Zuletzt geändert von PB42 am 06.11.2010 16:47, insgesamt 1-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von STARGÅTE »

Dein Code funktioniert bei mir ohne Probleme!
Natürlich unter der Voraussetzung das es ein Ordner "Daten" mit Schreibrechten gibt!
Debugger sagt:
6.11.2010

Es liegt also 100% an dir, weil dir Schreibrechte fehlen, oder der Ordner nicht existiert!

Probier doch mal ins TEMP Verzeichnis zu schreiben:
CreateFile(4,GetTemporaryDirectory()+"Editor.txt")
ReadFile(4,GetTemporaryDirectory()+"Editor.txt")
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
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von rolaf »

PB42 hat geschrieben:Ich hol mir erstmal ein Bier. Befindet sich im Ordner Kühlschrank und wird mühelos ausgelesen.
:lol: Schon wieder n Bug.
Vom auslesen wirste nicht besoffen. :wink:



Edit: Hau nicht gleich in Sack. Erstmal das Bier munden lassen und dann nochmal mit Ruhe dran setzen.
Zuletzt geändert von rolaf am 06.11.2010 16:17, insgesamt 1-mal geändert.
:::: WIN 10 :: PB 5.73 :: (x64) ::::
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Beitrag war nicht mehr aktuell, daher gelöscht.
Zuletzt geändert von PB42 am 06.11.2010 16:57, insgesamt 2-mal geändert.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Createfile() mit Editorgadget funktioniert nicht

Beitrag von PB42 »

Eben habe ich festgestellt, daß die Anzeige aus dem Editorgadget doch in die Datei "Daten\Editor.txt" geschrieben wird - aber erst dann, wenn ich das ganze PurePasic beende und dann wieder neu starte. Bestimmt kann damit einer von Euch etwas anfangen. Danke schonmal.
Antworten