Seite 1 von 1

IntelliCode von eigenen Funktionen ...

Verfasst: Do, 29. Jun 2017 10:45
von brandelh
Irgendwie bekomme ich das nicht hin. Beispiel:

Code: Alles auswählen

/// <summary>
///  <para>
///    <bold>EN: Calculate a timestamp in Unix Format</bold>
///        without parameters = now !
///        dZielTag = date value or NIL (date())
///        nSeconds = numeric seconds value, string time value like time() or NIL (time())
///    <bold>DE: Zeitstempel im Unix Format erstellen</bold>
///        ohne Parameter wird der aktuelle Zeitpunkt gewählt !
///        dZielTag = Datumsvariable oder NIL (date())
///        nSeconds = numerischer Sekundenwert, Zeichenkette im time() Format oder NIL (time())
///  </para>
/// </summary>
///
///    <param name="dZielTag">Test</param> // weder hier noch unter summary hat das eine Wirkung ?
///    <paramref name="33"/>
///
/// <returns>
///  UNIX TimeStamp (Integer)
/// </returns>
///

FUNCTION TimeStampUnix(dZielTag,nSeconds)
   LOCAL dTestTag, nTage
   LOCAL dUnixStart     := cToD("01.01.1970")
   LOCAL nUnixTimeStamp := 0 // LONG erzwingen, darf nicht geändert werden !

   IF dZielTag = NIL
      dZielTag := date()
      dTestTag := dZielTag // Tageswechsel erkennen mit dieser Variable
   ENDIF
   DO CASE
      CASE valtype(nSeconds) = "N" // seconds
           nSeconds := int(nSeconds)
      CASE valtype(nSeconds) = "C" // cTime() format
           nSeconds += alltrim(nSeconds) + "00000000000"
           nSeconds := val(SubStr( nSeconds, 1, 2)) * 3600 + ;
                       val(SubStr( nSeconds, 4, 2)) *   60 + ;
                       val(SubStr( nSeconds, 7, 2))
      OTHERWISE
           // Secoonds erzeugen
           nSeconds := int(seconds())
           IF date() <> dTestTag
              // Tageswechsel hat zwischen date() und seconds() stattgefunden
              nSeconds := 86399 // die Sekunde vor Mitternacht
           ENDIF

   END

   nTage := dZielTag - dUnixStart // dUnixstart ist eigentlich der Tag davor aus unserer Sicht
                                  // dZieltag ist aber auch gestern, eventuell hebt sich das auf oder Abzüge !

                                  //  on most days maps to 60*60*24 = 86400 seconds. But not on all days.

   nUnixTimeStamp := int( nTage * 86400 + nSeconds )

RETURN nUnixTimeStamp
Wenn ich nun die Funktion eintippe kann ich die Erklärung sehen "TimeStampUnix(dZielTag,nSeconds)" je nach Parameter wird der erste oder zweite fett angezeigt.
Das ist schon mal hilfreich, aber die zusätzliche Infos für Parameter etc. bekomme ich nicht angezeigt.

Wer hat da mehr Erfahrung, aus der Hilfeseite werde ich nicht schlau.

Re: IntelliCode von eigenen Funktionen ...

Verfasst: Do, 29. Jun 2017 10:48
von Manfred
Hallo Hubert,
das hier klappt erstmal.

Code: Alles auswählen

/// <summary>
///   <para>
///      <bold>prüft Controls ob sie leer sind</bold>
///   </para>
///   <para>
///      <bold>oXbp:</bold>hier kommt das Objekt rein, das geprüft werden soll
///   </para>
///   <para>
///      <bold>lPruefen:</bold>Prüfung des Objektes auf Validität abschalten (default = .T. = eingeschaltet)
///   </para>
///   <para>
///      <bold>cTyp:</bold>Charakter, Numeric, Date "C" "N" "D" (default = "C")
///   </para>
///   <para>
///      <bold>lAktivieren:</bold>Wenn das Objekt auch eingeschaltet werden soll (Default = .T.)
///   </para>
///   <para>
///     <bold>cFeldName:</bold>Der darin stehende name wird bei nicht erfolgreicher Feldprüfung angezeigt als Hinweis
///   </para>
///   <para>
///     <bold>aWerteArray:</bold>Hier können Prüfwerte eingegeben werden zur Validierung
///   </para>
/// </summary>

Re: IntelliCode von eigenen Funktionen ...

Verfasst: Do, 29. Jun 2017 10:59
von brandelh
wenn ich deinen Text bei mir einbaue ist kein Unterschied. Eventuell rufe ich das aber auch nur falsch auf ...

Ich tippe den Funktionsnamen ein und "(", dann kommt diese Info:
IntelliText.png
IntelliText.png (4.86 KiB) 5622 mal betrachtet
oder wenn ich mit Menü oder STRG+SHIFT+Leertaste drücke ... immer genau dieses Bild.
Wenn der erste Paramater eingegeben wurde und Komma kommt, wird der zweite fett.

Aber die Beispiele, Rückgabewerte etc. das sehe ich nicht. PS: 2.00.785

Re: IntelliCode von eigenen Funktionen ...

Verfasst: Do, 29. Jun 2017 11:07
von Jan
Hubert,

nach Manfreds Beispiel muß noch eine Zeile mit /// sein. Und direkt daran anschließend in der nächsten Zeile die Funktion selber. Also z. B.

Code: Alles auswählen

///      <bold>cTyp:</bold>Charakter, Numeric, Date "C" "N" "D" (default = "C")
///   </para>
///
Function TimeStampUnix(dZielTag,nSeconds)
Das ist übrigens in Deinem Beispiel genau falsch, da ist eine Leerzeile zwischen.

Jan

Re: IntelliCode von eigenen Funktionen ...

Verfasst: Do, 29. Jun 2017 11:13
von brandelh
Danke Jan,

daran liegts :D