English
Regulars table & Café

function with variablem Parameter-type

 

Michael
Wodrich
*** XProfan 10 ***
here a function with variablem Parameter-type.

The following becomes from the function accepted:
- no Parameter
- number as Parameter
- String as Parameter
- Strukturierter area as Parameter
- area without Strukturvariable (but with pretended Speicherstellen)
- one Objekt

so can really swell things make.

there The function IsLeapYear() already with whom Codesnippets existing, have I tappt im dunkeln here deponiert.
CompileMarkSeparation
!
:Proc IsLeapYear( [Jahr%] )
: P:I1 - Jahr (1600 - 3999) (ohne Angabe wird das aktuelle Jahr benutzt)
:Proc IsLeapYear( DBDate$ )
: P:S1 - Datenbankdatum ("yyyymmdd")
:Proc IsLeapYear( sDatum# )
: P:B1 - ein Bereich mit Struktur "DatumStru"
:Proc IsLeapYear( bDatum# )
: P:B1 - ein Bereich ohne Struktur (der aber je 2 Bytes für Tag, Monat und Jahr enthält)
:Proc IsLeapYear( oMwDate# )
: P:o1 - ein Objekt der Klasse "MwDate"
: Prüft, ob das Jahr ein Schaltjahr war/ist.
:RETURN%: 1 = Jahr ist ein Schaltjahr, sonst 0

Proc IsLeapYear

    Declare y%

    If %PCount < 1              Parameter fehlen

        y% = Val(Date$(3))  10000   ziehe das Jahr aus dem akt. Datum im DB-Format.

    Else

        If PType$(1) = "&"       Parameter ist numerisch

            Parameters Jahr%
            y% = Jahr%

        ElseIf PType$(1) = "$"   Parameter ist ein String im Datenbankformat

            Parameters DBDate$
            y% = Val(DBDate$)  10000

        ElseIf PType$(1) = "s"   Parameter ist ein Bereich mit Struktur "DatumStru"

            Parameters sDatum#
            y% = sDatum#.Year%

        ElseIf PType$(1) = "b"   Parameter ist ein Bereich ohne Struktur

            Parameters bDatum#    (der aber je 2 Bytes für Tag, Monat und Jahr enthält)
            y% = Word(bDatum#,4)  0+1=Tag, 2+3=Monat, 4+5=Jahr

        ElseIf PType$(1) = "o"   Parameter ist ein Objekt der Klasse "MwDate"

            Parameters oDatum#
            y% = oDatum#.GetYear()
            Else                     Fehler! Liefert FALSE (kein Schaltjahr)
            Return 0

        EndIf

    EndIf

    Case y% < 100 : Add y%, ((Val(Date$(3))  1000000) * 100)
    Return (y% mod 4 = 0) and (y% mod 4000 <> 0) and ((y% mod 100 <> 0) or (y% mod 400 = 0))
    EndProc  IsLeapYear
    ### TEST ### TEST ### TEST ### TEST ### TEST ###
    Struct DatumStru = Day%,Month%,Year%
    Class MwDate = #Year%,SetYear@,GetYear@

    Proc MwDate.SetYear

        Parameters y%
        .Year% = y%

    EndProc

    Proc MwDate.GetYear

        Return .Year%

    EndProc

    Declare Jahr%, sBereich#, bBereich#, oMwDate#
    Dim sBereich#, DatumStru
    Dim bBereich#, 6
    Dim oMwDate#, MwDate
    Cls
    Print "eine Funktion mit variablen Parametern
    "
    Print "Schaltjahr??? (1 = Ja)
    "
    Print "aktuelles Jahr (nein):", IsLeapYear(), " - ohne Parameter"
    Print "1600 (Ja)............:", IsLeapYear(1600), " - Zahl als Parameter"
    Print "1999 (Nein)..........:", IsLeapYear("19990101"), " - Datum im Datenbankformat"
    sBereich#.Year% = 2004
    Print "2004 (Ja)............:", IsLeapYear(sBereich#), " - strukturierter Bereich"
    Word bBereich#,4 = 2005
    Print "2005 (Nein)..........:", IsLeapYear(bBereich#), " - Bereich ohne Struktur"
    oMwDate#.SetYear( 2006 )
    Print "2006 (Nein)..........:", IsLeapYear(oMwDate#), " - Objekt als Parameter"
    Print "
    zur Probe alle mit dem Jahr 2004 (Na gut, OHNE den Parameter-freien):"
    Word bBereich#,4 = 2004
    oMwDate#.SetYear( 2004 )
    Print "2004 (Ja)............:", IsLeapYear(2004), " - Zahl als Parameter"
    Print "2004 (Ja)............:", IsLeapYear("20040101"), " - Datum im Datenbankformat"
    Print "2004 (Ja)............:", IsLeapYear(sBereich#), " - strukturierter Bereich"
    Print "2004 (Ja)............:", IsLeapYear(bBereich#), " - Bereich ohne Struktur"
    Print "2004 (Ja)............:", IsLeapYear(oMwDate#), " - Objekt als Parameter"
    Print "
    (Taste drücken = ENDE)"
    Print "
    %PCount und PType$() in Kombination sind wirklich eine feine Sache ..."
    WaitKey
    Dispose sBereich#
    Dispose bBereich#
    Dispose oMwDate#
    End

17 kB
Kurzbeschreibung: so siehts from
Hochgeladen:08/04/06
Downloadcounter105
Download
 
Programmieren, das spannendste Detektivspiel der Welt.
08/04/06  
 




Nico
Madysa

%pCount and PType$() in combination are a really swell thing ...


integrally my opinion!
 
Nico Madysa
08/04/06  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

646 Views

Untitledvor 0 min.
Michael W.09/30/14
Jörg Sellmeyer09/30/14

Themeninformationen

this Topic has 2 subscriber:

Nico Madysa (1x)
Michael Wodrich (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie