Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Funktionen Rückgabe Kategorie: Programmierung (von ChristianS - 5.04.2011 22:28)
Als Antwort auf Re: Funktionen Rückgabe von Peter W. - 5.04.2011 22:24
Ich nutze:
C-Control II Station, OSOPT V3.1
Hi,
nee, das ist ein int-Wert. Das muss auch anders gehen:
Hier mal die Sasu-Funktion aus dem geo-Modul (ist der Parameter sasu[])

function SaSu(int Ja, int Mo, int Ta, float GBN, float GLO, int MEZ_MESZ, int sasu[])
// MEZ_MESZ: 0= nach aktueller Zeit (MEZ/MESZ), 1= Zeit nach MEZ, 2= Zeit nach MESZ
// Rückgabe in sasu[]: Wert0: Sonnenaufgang, Wert1: Sonnenuntergang, in Minuten
{
 if Ja<2000 return;                    // Berechnung erst ab 2000
 float JD2000, JD, T, B, h, ZG, DeltaT,
       SAOZ, SUOZ, SAWZ, SUWZ;
 JD2000 = 2451545;
 JD = JulianDatum(Ja,Mo,Ta);
 T = (JD - JD2000)/36525;
 B = GBN*RAD;
 h = -50.0/60.0*RAD;           // -50 Bogenminuten Horizonthöhe
              // wegen Lichtkrümmung der Sonne in Horizontnähe.
 ZG = BerechneZeitgleichung(T);
 DeltaT = 12*math.acos((math.sin(h) - math.sin(B)*math.sin(DK))
           / (math.cos(B)*math.cos(DK)))/Pi;
 SAOZ = 12-DeltaT-ZG;                          // So-Aufgang Ortszeit
 SUOZ = 12+DeltaT-ZG;                          // So-Untergang Ortszeit
 SAWZ = SAOZ-GLO/15;                           // So-Aufgang Weltzeit
 SUWZ=SUOZ-GLO/15;                             // So-Untergang Weltzeit
 if (system.dst() and MEZ_MESZ==0)or MEZ_MESZ==2  // bei Sommerzeit +60 min.
  {
   sasu[0]=round(SAWZ*60)+120;                // MESZ in Minuten
   sasu[1]=round(SUWZ*60)+120;                // MESZ in Minuten
  }
  else
  {
   sasu[0]=round(SAWZ*60)+60;                 // MEZ in Minuten
   sasu[1]=round(SUWZ*60)+60;                 // MEZ in Minuten
  }
 return;
}





> Ist "zeit" ein String? das klappt, nur mit Werten geht das glaub ich nicht.
>
> In der function am Ende
> return ontime einsetzen
> und das "returns int" in "returns long" ändern.
>
> und dann beim Aufruf
> NewTime=check.Status(1,1,30,2100,2200, time)
>
>
>
> > Hallo,
> > ich habe eine Funktion und möchte einen berechneten Wert zurückgeben. Ich habe mir das an
> > der geo.Sasu-Funktion abgucken wollen, klappt bei mir aber nicht. Hier die SaSu Funktion:
> >
> > int zeit[2]
> > ...
> >  geo.SaSu(system.year(),system.month(),system.day(),
> >           breitengrad,laengengrad,0,zeit);
> > ...
> >

> > In zeit werden dann die beiden berechneten Werte zurückgegeben.
> >
> > Nun meine Funktion:
> >
> >
> > function Status(int Number,int Mode,long offset,
> >                 long on,long off,long onTime) returns int
> > {
> > .....
> >  ontime=5;
> > }
> >
> >

> > nun der Aufruf der Funktion aus dem Programm:
> >
> >
> > long time;
> > ....
> > check.Status(1,1,30,2100,2200, time)
> >
> > hwcom.num(time);
> > ...
> >

> >
> > wo ist mein Gedankenfehler?
> >
> > Danke und GruÃ?,
> > ChristianS


    Antwort schreiben


Antworten:

Re: Funktionen Rückgabe (von Peter W. - 5.04.2011 22:49)