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 Peter W. - 5.04.2011 22:49)
Als Antwort auf Re: Funktionen Rückgabe von ChristianS - 5.04.2011 22:28

Liegt anscheinend an dem Array.
Ich hab grad nur das alte englische Original CC2 Handbuch da:

Variable strings, arrays, and parameters with user-defined data type on the
other hand are automatically passed as a reference. Manipulations on the
reference-parameters affect the referenced data object.
e.g.
function fx ( string s )
{
  s = "abc";
}
 
thread main
{
  string local_s;
 
  local_s = "123";
  fx(local_s);  // local_s becomes "acb"
}

in contrast to numerical parameters:

function fx ( int i )
{
  i = 0;
}
 
thread main
{
  int local_i;
 
  local_i = 1;
  fx(local_i);  // local_i remains 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: