Seite 2 von 3
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 05.05.2014 22:17
von Simon74
OK, warum auch immer, so funktionierts.
Code: Alles auswählen
Procedure CreateMETA()
If File$
Protected.s MetaFile$
Protected.s Text_Channel$ = GetGadgetText(Text_Channel)
OpenServiceReference()
MetaFile$ = ReplaceString(File$,".txt","")
If GetGadgetState(400) = #PB_Checkbox_Unchecked
MetaFile$ = SaveFileRequester("META speichern unter ...", MetaFile$+".meta", "meta (*.meta)|*.meta", 1)
Else
MetaFile$ = MetaFile$ + ".meta"
EndIf
If MetaFile$
;Liste durchsuchen
ForEach SRList()
If SRList()\Channel = Text_Channel$
Protected Servicename$ = (SRList()\Service)
EndIf
Next
If CreateFile(2,MetaFile$)
WriteStringN(2, Servicename$)
WriteStringN(2, GetGadgetText(Text_Title))
WriteStringN(2, GetGadgetText(Text_Genre))
WriteStringN(2, Str(UnixTime()))
CloseFile(2)
EndIf
EndIf
EndIf
EndProcedure
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 05.05.2014 22:22
von ts-soft
Du verwendest Variablen für Deine Gadgets, sind diese Global?
Nächstes mal bitte einen vollständig ausführbaren Code, so hat das ganze keinen Zweck!
Selber nen ausführbaren Code zu schreiben, wie Derren es gemacht hat, erspare ich mir
grundsätzlich, es ist sehr, sehr unwahrscheinlich, das ich denselben Fehler einbaue

Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 05.05.2014 22:27
von Simon74
ts-soft hat geschrieben:Du verwendest Variablen für Deine Gadgets, sind diese Global?
Ja, sonst wäre ich wohl schon früher gestolpert
Code: Alles auswählen
Global Label_Channel, Label_Date, Label_Description, Label_Duration, Label_Genre, Label_Size, Label_Time, Label_Title
Global Text_Channel, Text_Date, Text_Description, Text_Duration, Text_Genre, Text_Size, Text_Time, Text_Title
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 05.05.2014 22:37
von ts-soft
Simon74 hat geschrieben:Ja, sonst wäre ich wohl schon früher gestolpert
Was nützt das ganze, wenn wir die Info nicht haben?
Ohne vollständigen, ausführbaren Code, mit den Infos zu OS und Compiler-Settings,
müssen wir Nachfragen oder vermuten. Bessere Hilfe erhälst Du in jedem Falle, wenn
bereits im erstem Thread alle Infos vorhanden sind

Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 05.05.2014 22:53
von Derren
Simon74 hat geschrieben:OK, warum auch immer, so funktionierts.
Unterschied: Alter Code:
Code: Alles auswählen
ForEach Liste()
If expression
WriteStringN()
Endif
Next
Neuer Code:
Code: Alles auswählen
ForEach Liste()
If Expression
Condition
Endif
Next
If Condition
WriteString()
Endif
Alles klar?
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 05.05.2014 22:55
von Kiffi
Simon74 hat geschrieben:OK, warum auch immer, so funktionierts.
damit umgehst Du nur den Bug, den Du an anderer Stelle selber verursachst.
Wie geschrieben: Du wirst mit Sicherheit Deine SRList() mit jedem Speichervorgang um einen (überflüssigen) Eintrag erweitern.
gib mal testweise Servicename$ aus:
Code: Alles auswählen
[...]
;Liste durchsuchen
ForEach SRList()
If SRList()\Channel = Text_Channel$
Protected Servicename$ = (SRList()\Service)
Debug Servicename$
EndIf
Next
[...]
Ich wette (um eine kleine Fanta ohne Eis), dass mit jedem Speichervorgang eine Debug-Ausgabe hinzu kommt.
Grüße ... Kiffi
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 06.05.2014 10:03
von Simon74
Wo darf ich die Fanta servieren ?
Der Code erstellt jedesmal einen weiteren Eintrag, richtig.
Code: Alles auswählen
[...]
;Liste durchsuchen
ForEach SRList()
If SRList()\Channel = Text_Channel$
Protected Servicename$ = (SRList()\Service)
Debug Servicename$
EndIf
Next
[...]
Wie kann ich die Liste einfach nur durchsuchen, ohne das ein Eintrag zugefügt wird ?
Muss hier FindString verwendet werden ?
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 06.05.2014 11:10
von CSHW89
Der Fehler entsteht nicht hier. Wie meine Vorredner schon sagten, ohne vollständigen Code kann man da nicht helfen. Wo fügst du denn neue Elemente hinzu? Wo rufst du AddElement bzw. InsertElement auf?
lg kevin
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 06.05.2014 13:04
von Simon74
Die Liste wird in eigener Prozedur "OpenServiceReference()" gefüllt.
Code: Alles auswählen
Procedure OpenServiceReference()
If ReadFile(1, "servicereference.txt")
While Eof(1) = 0
Protected Zeile$ = ReadString(1)
Protected istpos=FindString(Zeile$,"=",1)
AddElement(SRList())
SRList()\Channel = Left(Zeile$,istpos-1)
SRList()\Service = Mid(Zeile$,istpos+1)
Wend
CloseFile(1)
Else
MessageRequester("Information","Datei servicereference.txt nicht vorhanden, meta kann so nicht erstellt werden !")
EndIf
EndProcedure
Ausgelöst wird diese Procedure wieder von, siehe Code von erstem Post (auf dieser Website)
Re: CreateFile (überschreibt Datei nicht !)
Verfasst: 06.05.2014 13:20
von Kiffi
zwei Möglichkeiten:
* OpenServiceReference() nur einmal ausführen.
* vor dem Öffnen Deiner 'servicereference.txt' ein ClearList(SRList()) ausführen.
Grüße ... Kiffi