Kleine Frage?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Kleine Frage?

BeitragDi, Jan 17, 2006 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
Ich wollte mal was Probieren wenn man sein Name eingibt und dann sein Geburtsdatum, dann soll eine Meldung kommen in Wieviele Tage man Geburtstag hat, hier mal mein Code wie ich es Probiert habe:

Code: [AUSKLAPPEN]
;Startwert Eingabe auf 1
Eingabe = 1

Repeat
 Cls

 ;Wenn Eingabe = 1 dann führe das hier aus
 If Eingabe = 1 Then
  ;Name eingeben
  Name$ = Input("Ihr Name: ")
  ;Geburtsdatum eingeben
  Geburtsdatum# = Input("Ihr Geburtsdatum: ")
  ;Eingabe auf 0 setzen
  Eingabe = 0
 EndIf

 ;Zeigt die Meldung in Wievielen Tagen du Geburtstag hast
 Print Name$ + " hat in " + (Geburtsdatum + CurrentDate) + " tagen Geburtstag!"

 Until KeyHit(1)
End


es funzt irgendwie nicht, ich hab das glaub falsch gemacht, sry ich habe noch nicht soviel erfahrungen mit BB gesammelt.

Wisst ihr vieleicht wie man das macht?, ich danke euch schonmal für die hilfe 8)

MFG Andreas
  • Zuletzt bearbeitet von bruce85 am Di, Jan 17, 2006 15:56, insgesamt einmal bearbeitet

MBC

BeitragDi, Jan 17, 2006 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ok, was mir als erstes auffällt: je nachdem, was als geburtsdatum eingegeben wird, kann das nich verarbeitet werden, da als float deklariert. Nimm lieber auch string wie beim name und schreib am besten das format dabei, in dem das datum angegeben soll (zB. 11.11.1111 oda 11.11. oda 11. Nov 11, usw...)

dann müssen hinter CurrentDate() die Klammern Wink

so, und dann zu der differenz-sache: leider kann blitz nich so einfach mit daten (=plural von datum?^^) rechnen wie zB excel. dort wird das so gehandhabt, dass ein datum im prinzip als tage (oda stunden, sekunden oda so) ab einem gewissen, fixen datum (bei excel glabu ich 1.1.1970) angegeben wird. dadraus kannste dann das datum errechnen. ist aber relativ aufwändig, da du jetzt zuerstma deine beiden daten in tage ab dem xx.xx.xxxx umwandeln musst (dabei auf schaltjahre achten!). diese beiden zahlen, die da dann rauskommen, kannste voneinander subtrahieren und das ergebnis wieder zurück innen datum umwandeln (auch schaltjahre beachten!)...
-> alles in allem ziemlich kompliziert

so, ich hoffe, man versteht das so einigermaßen^^

Grüße
MBC
Computer sind auch nur Menschen! Wink
 

bruce85

BeitragDi, Jan 17, 2006 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
ich danke dir für die schnelle antwort Laughing

also ich möchte das man das Geburtsdatum so eingibt z.B. 12.02, und wenn ich auf Enter drücke sollen die Tage von Heute bis zum dieser Datum angezeigt werden, das wären dann 26 Tagen, genauso möchte ich das machen Laughing

ich wäre dir sehr dankbar für ein beisapiel code Wink

ich danke dir schonmal 8)

Andreas

MBC

BeitragDi, Jan 17, 2006 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ok,

da mich sowas auch interessiert, hab ich mich jetzt ma hingesetzt und schnell ne einfache function zusammengebaut:

Code: [AUSKLAPPEN]

Print DateDifference("17.01.2006","12.02.2006")



Function DateDifference(date$,fix$)
 
  tag_date=Left(date,2)
  monat_date=Mid(date,4,2)
  jahr_date=Right(date,4)

  tag_fix=Left(fix,2)
  monat_fix=Mid(fix,4,2)
  jahr_fix=Right(fix,4)

  tag_temp=tag_date
  monat_temp=monat_date
  jahr_temp=jahr_date
 

  ;in dieser schleife wird pro druchlauf ein tag addiert, geprüft, ob dann ein monat/jahr voll ist und immer so weiter bis
  ;zum festen datum... keine schöne methode, und bestimmt die langsamste, aber sie funktioniert ;)
  Repeat

    If tag_temp=tag_fix And monat_temp=monat_fix And jahr_temp=jahr_fix Then ready=1

    days=days+1
    tag_temp=tag_temp+1

    If tag_temp>28+schaltjahr(jahr_temp) And monat_temp=2 Then : monat_temp=3 : tag_temp=1 : EndIf
    If tag_temp>30 And (monat_temp=4 Or monat_temp=6 Or monat_temp=9 Or monat_temp=11) Then : monat_temp=monat_temp+1 : tag_temp=1 : EndIf
    If tag_temp>31 And (monat_temp=1 Or monat_temp=3 Or monat_temp=5 Or monat_temp=7 Or monat_temp=8 Or monat_temp=10 Or monat_temp=12) Then : monat_temp=monat_temp+1 : tag_temp=1 : EndIf

    If monat_temp=13 Then : monat_temp=1 : jahr_temp=jahr_temp+1 : EndIf


  Until ready=1
  days=days-1

  Return days

End Function



;Eine Funktion um rauszufinden, ob ein Jahr ein Schaltjahr ist oder nicht
Function schaltjahr(Jahr)
If Jahr Mod 4=0 Then
   If Jahr Mod 100=0 Then
      If Jahr Mod 400=0 Then
          Ergebnis=1
      Else
         Ergebnis=0
      EndIf
   Else
   Ergebnis=1
   EndIf
Else
Ergebnis=0
EndIf
Return Ergebnis
End Function



Ist leider bisschen unübersichtlich geworden, da ich das alles selbst erst entwickeln musste^^... aber s funktioniert
das erste datum im funktionsaufruf muss kleiner als das zweite sein, sonst gehts nich. wenn du die rückgabe von CurrentDate() benutzen möchtest, um das aktuelle datum zu erfahren, müsstest du die dann vorher noch (am besten per Selcet/Case) in die entsprechende form umwandeln (also die englischen abkürzungen der monate durch die entsprechenden zahlen ersetzen).
wenn noch was unklar ist (ich könnts mir durchaus vorstellen^^), dann frag einfach
Computer sind auch nur Menschen! Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group