 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
vinny
Anmeldungsdatum: 27.02.2007 Beiträge: 32
|
Verfasst am: 29.06.2007, 16:59 Titel: Kalender und Notizprogramm |
|
|
Hi!
Mein Vater hat mich gefragt, ob ich mir nicht ein paar Euros dazu verdienen will und Ihm ein Kalender- und Notizprogramm für seine Arbeit schreiben will. Es soll Geburtstage von Kollegen etwa 1 Monat davor anzeigen und 7 Tage nach dem Geburtstag wieder aus der Hauptseite entfernen. Zudem soll es eine Notizfunktion haben. Da liegen meine ersten Probleme.
Bin jetzt soweit, dass ich den Aufbau habe(ja ich weiß eg kommt das erst zum schluss aber ich kann das besser so). Zudem kann man schon eine Notiz eingeben und abspeichern. Man kann einen Betreff, die eigentliche Notiz und einen Zeitraum angeben für wie lange die Notiz gespeichert werden soll.
Problem 1: obwohl ich mit subs arbeite, komme ich mit manchen Taste in Menus, in die man eigentlich nur im index reinkommen kann(z.B. wenn die Frage zum abspeichern kommt, kann ich mit 1 eine neue Notiz machen, obwohl dass eigentlich nur im index möglich sein soll)
Problem 2: Das eigentliche Speichern der Notiz soll erst erfolgen, nachdem man die Frage ob man wirklich speichern will mit j=ja beantwortet habe. aber leider tut das ding so als hätte ich nie eine Eingabe mit j oder n gemacht
Frage 1: Wie mache ich das, dass die Notiz nach der Anzahl der angegebenen Tage gelöscht wird?
Frage 2: Wie kann man in die input felder umlaute(ö,ä etc) eingeben und sich richtig wieder anzeigen lassen?
So das wars erstmal...
Schonmal danke für eure Hilfe
Gruß vinny
PS.: Hier mein bisher erstellter code:
Code: |
'#########################DIMENSIONIEREN##################################
dim shared as string betreff(1 to 9999), inhalt(1 to 9999), dauer(1 to 9999)
declare sub main1
declare sub main2
declare sub notiz
declare sub newnotiz
declare sub back
declare sub bestg
'#########################################################################
screen 18
main1
main2
'#######################SUB's#############################################
'Index
sub main1
locate 1
print "Beenden"
print " [Esc] "
locate 1,12
print "+++++++++++++++++++++"
locate 2,12
print "+ Geburtstage +"
locate 3,12
print "+++++++++++++++++++++"
locate 1,49
print "+++++++++++++++++++++"
locate 2,49
print "+ Notizen +"
locate 3,49
print "+++++++++++++++++++++"
line (0,50)-(640,50)
line (320,50)-(320,999999999)
locate 5
print "Name:"
locate 5,25
print "Datum:"
locate 5,50
print "(1) Notiz hinzuf"+chr(129)+"gen"
line (0,80)-(640,80)
sleep
end sub
'Steuerung index
sub main2
do
taste$=inkey$
if taste$="1" then notiz
if taste$=chr(27) then end
loop
end sub
sub notiz
cls
locate 1
print "Zur"+chr(129)+"ck"
print "[Esc] "
locate 1,30
print "++++++++++++++++++++++"
locate 2,30
print "+ Notiz hinzuf"+chr(129)+"gen +"
locate 3,30
print "++++++++++++++++++++++"
line (0,50)-(640,50)
line (0,80)-(640,80)
newnotiz
sleep
back
end sub
sub newnotiz
locate 8
input"Betreff: " ,betreff(1)
locate 11
input"Inhalt: " ,inhalt(1)
locate 14
input "Speicherdauer (in Tagen): " ,dauer(1)
locate 5,12
print "Soll die Notiz wirklich gespeichert werden? (j=ja/n=nein)"
bestg
back
end sub
sub back
taste$=inkey$
if taste$=chr(27) then
cls
main1
main2
end if
end sub
sub bestg
taste$=inkey$
if taste$="j" then
open"notizen.dat" for append as #1
print #1,betreff(1),inhalt(1),dauer(1)
close #1
locate 1,70
print "Gespeichert"
end if
if taste$="n" then
back
end if
end sub
|
|
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 29.06.2007, 18:02 Titel: |
|
|
Was mir auf die Schnelle auffällt, ist, dass du die Prozeduren immer weiter ineinander verschachtelst. main2 ruft notiz auf, das ruft newnotiz auf, das wiederum bestg, und bestg über back dann wieder main2. Damit erzeugst du eine Instanz von main2 nach der anderen. Wenn du lange genug neue Daten eingibst, könnte dir irgendwann der Speicher ausgehen. Besser wäre etwas in der Art:
Code: | do
main1
main2
until irgendeineAbbruchbedingung
[...]
sub bestg
taste$=inkey$
if taste$="j" then
open"notizen.dat" for append as #1
print #1,betreff(1),inhalt(1),dauer(1)
close #1
locate 1,70
print "Gespeichert"
end if
end sub |
Dann wird nach bestg zu newnotiz zurückgegeben, von dort zurück nach notiz, zurück nach main2 und von dort wieder zurück in die do-Schleife.
Das Löschen einzelner Einträge wird imho nicht möglich sein. Du kannst höchstens bei Programmstart alle Einträge aus der Datei auslesen und dann die Datei neu beschreiben mit allen Einträgen, die noch aktuell sind.
edit: auch in newnotiz das back rausnehmen. Was du im Programm machst, ist letztlich ein verstecktes goto. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
vinny
Anmeldungsdatum: 27.02.2007 Beiträge: 32
|
Verfasst am: 23.07.2007, 20:22 Titel: |
|
|
Hi!
erstmal danke für deine Antwort! Leider hatte mein Inet nen Sprung und ich konnt das Forum nicht mehr erreichen nun stehe ich leider vor einem neuen Problem: wenn ich in einem Input Feld einen Namen eingebe, zum Beispiel 'Müller' so wird das ü als irgendein anderes Zeichen abgespeichert und auch wieder angezeigt. Kann man das so machen, dass auch später ein ü angezeigt wird?
DANKE!!!
Gruß,
vinny |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 23.07.2007, 20:41 Titel: |
|
|
Ein immer wiederkehrendes Problem, in der IDE arbeitest Du mit ASCII und auf den Screen oder der Konsole sind die Zeichen in UNI, da gibt es einige moeglichkeiten die hier schon desoefteren besprochen wurden... wenn es Dir nur um die Sonderzeichen der umlaute öäü und ß geht kannst Du das ueber eine kleine function oder besser durch constanten machen
Code: |
Const GUUml="š" 'Ü
Const KUUml="" 'ü
Const GAUml="Ž" 'Ä
Const KAUml="„" 'ä
Const GOUml="™" 'Ö
Const KOUml="”" 'ö
Const SZUml="á" 'ß
|
So koenntest Du nun zB.
Code: | ?"text mit umlauten wie " &GUUml &"und " &GAUml |
machen _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 23.07.2007, 20:43 Titel: |
|
|
kann schon sein, ich bring das immer mal gern etwas durecheinander, fakt aber bleibt das es andere Zeichen sind
Edit:
da haette ich dann auch noch das hier... unter windows...
http://forum.qbasic.at/viewtopic.php?p=61516#61516
Edit: unnoetiger Edit, weil steht schon da oben  _________________
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|