Types drängen mich wieder mal in die Knie!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mr Hopp

Betreff: Types drängen mich wieder mal in die Knie!

BeitragMo, Nov 07, 2005 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Ich wollte ein Programm proggen, was mich an Sachen erinnert, die ich (manchmal) vergesse. Hier erst mal der Code:

Code: [AUSKLAPPEN]
Graphics 300,100,32,2

Type TIndex
   Field Erinnerung.TErinnerung
End Type

Type TErinnerung
   Field Name$
   Field Datum
   Field Zeit
   Field Erinnert
End Type

Global Index.TIndex = New TIndex
Global Benutzer$ = Input("Benutzer: ")
Global Honk = LoadSound("Honk.wav")
Global eintraege

;**********************************************

Function Laden()

Datei = OpenFile("Benutzer/"+Benutzer$+".txt")
eintraege = ReadLine(Datei)

For i = 1 To eintraege
Index\Erinnerung.TErinnerung = New TErinnerung
Index\Erinnerung\Name$ = ReadLine(Datei)
Index\Erinnerung\Datum = ReadLine(Datei)
Index\Erinnerung\Zeit = ReadLine(Datei)
Index\Erinnerung\Erinnert = ReadLine(Datei)
Next

CloseFile(Datei)
End Function

;***********************************************
Repeat

Laden
ausfuehren

;For Index\Erinnerung.TErinnerung = Each TErinnerung
;If Zeit3 >= Index\Erinnerung\Zeit And Index\Erinnerung\Erinnert = 0 Then Erinnern(Index\Erinnerung\Name$)
;Next

For Index\Erinnerung.TErinnerung = Each TErinnerung
Delete Index\Erinnerung.TErinnerung
Next

Forever
;************************************************

Function ausfuehren()

Zeit$ = CurrentTime()
Zeit2$ = Mid(Zeit,1,2)+Mid(Zeit,4,2)
Zeit3 = Zeit2$

Datei = WriteFile("Benutzer\"+Benutzer$+".txt")

WriteLine(Datei, eintraege)

For Index\Erinnerung.TErinnerung = Each TErinnerung
WriteLine(Datei, Index\Erinnerung\Name$)
WriteLine(Datei, Index\Erinnerung\Datum)
WriteLine(Datei, Index\Erinnerung\Zeit)
WriteLine(Datei, 1)
If Index\Erinnerung\Erinnert = 0 Then ;And Index\Erinnerung\Zeit <= Zeit3 Then
Honk_k = PlaySound(Honk)
Cls
Text 150,50,Index\Erinnerung\Name$,1,1
Repeat
Until KeyHit(57)
EndIf

Next

CloseFile(Datei)

End Function


Ich weis, keine Komentare, ungeordnet Laughing Das würde noch kommen, aber diese Phase ist bei mir als "experimentieren", also, ***** auf die Komentare Very Happy .

In einer Datei würde folgendes stehen:


Code: [AUSKLAPPEN]
2                  ;Anzahl der Einträge
Vögel füttern          ;Name
99999999               ;Datum (99999999 steht für jeden Tag)
920                        ;Uhrzeit, wäre hier 9:20
0                            ; 0 für "noch nicht erinnert", 1 für "erinnert"
Zähne putzen
99999999
830
0


Das programm lief mal, allerdings mit teils sehr lustigen macken, jetz funzt irgendwie gar nichts mehr, naja, ich hoffe mir kann jemand helfen.

Vertex

BeitragMo, Nov 07, 2005 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
TIndex ist völlig unnötig! TErinnerung besitzt seine eigene Liste wo alle Instanzen dieses Types drin stehen.

Generell hast du irgendwie nur Scheiße programmiert ?oder - hat jedenfalls keinen logischen Zusammenhang.

Also, mache dir eine Funktion z. B. "NeueErinnerung" wo der Benutzer aufgefordert wird, Name, Datum und Zeit einzugeben.
Dann wird eine neue Instanz mit New erstellt. Dieser Instanz weißt du halt diese Eingaben zu.

Die Funktion "UpdateErinnerungen" geht alle Instanzen der Liste durch, und prüft, ob Datum und Zeit größer oder gleich aktuelles Datum + Zeit ist. Wenn ja, wird dies ausgegeben durch den Sound, und die Instanz kann mit Delete aus der Liste entfernt werden.

Am Anfang sollte eine Funktion "LadeErinnerungen" aufgerufen werden, die alle Erinnerungen aus der Datei lädt. Dabei liest du sie solange aus, bis das Dateieinde erreicht ist. Am Ende des Programs überschreibst du diese Datei mit der Funktion "SpeichereErinnerungen". Dabei speicherst du halt alle Instanzen in der Liste in diese Datei.

"UpdateErinnerungen" muss dann natürlich immer in der Hauptschleife aufgerufen werden.

mfg olli
vertex.dreamfall.at | GitHub
 

Mr Hopp

BeitragDi, Nov 08, 2005 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry, aber ich wollte wissen, warum das nicht funzt, und nicht, was an dem Code falsch ist. Ich habe doch extra geschrieben, das das nur ein experimentier-code ist, glaubst du, da mach ich mir die Mühe eine Editir-Funktion zu erstellen? Man, man, man.... Rolling Eyes

PS: Ich hab ja nichts gegen Kritik, aber wenn diese sowas von falsch angebracht ist, naja....

Lunatix

BeitragMi, Nov 09, 2005 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
was ich auf jeden fall sagen kann :
das eintraege = readline(file)
kannst du kkicken - stattdessen :
BlitzBasic: [AUSKLAPPEN]

Global NewRem,pos

file = OpenFile(\"Reminders.txt\") ;Datei öffnen
While Not Eof(file) ;solange dateiende nicht erreicht ist...
zeile$ = ReadLine(file) ;neue zeile einlesen
For i = 1 To Len(zeile) ;
z$ = Mid(zeile,i,1) ;zeichen der reihe nach ermitteln
If z = \" \" Then z=\"\" ;leerzeichen ausschliessen
wort$ = wort + z ;wort erstellen
If NewRem = 2
R.Rem = Last Rem
pos = pos + 1
If pos = 1
R\name = zeile
Else If pos = 2
R\Date = zeile
Else If pos = 3
R\Time = zeile
Else If pos = 4
R\reminded = zeile
EndIf
EndIf

wort = Lower(wort)

If wort = \"newreminder\"
NewRem = 1
EndIf

If NewRem = 1
R.Rem = New Rem
NewRem = 2
pos = 0
EndIf

Next
pos = 0
wort = \"\"
z=\"\"
Wend
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group