Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

IntelliCode von eigenen Funktionen ...

Xbase++-IDE - Workbench, Visual Xbase

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13731
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

IntelliCode von eigenen Funktionen ...

Beitrag von brandelh » Do, 29. Jun 2017 10:45

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.
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 16872
Registriert: Di, 29. Nov 2005 17:58
Wohnort: Kreis Wesel
Kontaktdaten:

Re: IntelliCode von eigenen Funktionen ...

Beitrag von Manfred » Do, 29. Jun 2017 10:48

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>
Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13731
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: IntelliCode von eigenen Funktionen ...

Beitrag von brandelh » Do, 29. Jun 2017 10:59

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) 348 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
Gruß
Hubert

Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
Beiträge: 12186
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: IntelliCode von eigenen Funktionen ...

Beitrag von Jan » Do, 29. Jun 2017 11:07

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13731
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim
Kontaktdaten:

Re: IntelliCode von eigenen Funktionen ...

Beitrag von brandelh » Do, 29. Jun 2017 11:13

Danke Jan,

daran liegts :D
Gruß
Hubert

Antworten