Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Kalender und Notizprogramm

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
vinny



Anmeldungsdatum: 27.02.2007
Beiträge: 32

BeitragVerfasst am: 29.06.2007, 16:59    Titel: Kalender und Notizprogramm Antworten mit Zitat

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 grinsen 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 verwundert

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 verlegen


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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4701
Wohnort: ~/

BeitragVerfasst am: 29.06.2007, 18:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
vinny



Anmeldungsdatum: 27.02.2007
Beiträge: 32

BeitragVerfasst am: 23.07.2007, 20:22    Titel: Antworten mit Zitat

Hi!
erstmal danke für deine Antwort! Leider hatte mein Inet nen Sprung und ich konnt das Forum nicht mehr erreichen mit dem Kopf durch die Mauer wollen 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
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 23.07.2007, 20:40    Titel: Antworten mit Zitat

SuFu! http://forum.qbasic.at/viewtopic.php?t=4491&highlight=umlaute
FBIde speichert in ANSI, FB verwendet ASCII zwinkern
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.07.2007, 20:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 23.07.2007, 20:42    Titel: Antworten mit Zitat

Zitat:
IDE arbeitest Du mit ASCII und auf den Screen oder der Konsole sind die Zeichen in UNI
Wars nichte eher umgekehrt?
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 23.07.2007, 20:43    Titel: Antworten mit Zitat

kann schon sein, ich bring das immer mal gern etwas durecheinander, fakt aber bleibt das es andere Zeichen sind grinsen

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 grinsen durchgeknallt
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz