28. Juni 2008 

Konstanten bzw. Helper-Funktionen

vorgegebene4D-Konstanten sind eine große Programmier-Hilfe. No current record ist wesentlich einfacher zu erinnern als -1 und Wochen später ist Code leichter zu lesen. Ich will postulieren: kein 4D-Entwickler weiß, welche Nummer On Data Change hat. Ich habe nachgesehen, die 20.

Als die Konstanten mit V6 eingeführt wurden, wollte ich sie sofort haben. War nicht schwierig: mit ResEdit die eigene Struktur öffnen, eine 4DK#-Resource anlegen und Werte eintragen. Datenbank neustarten.

4DK#-EditorDas wurde mir schnell zu umständlich, auch weil Konstanten aus externen Resource-Dateien nicht zuverläßig funktionierten. Ich suchte nach einem eigenen Konstanten-Editor in 4D. Als ich Beispiel-Code in der iNUG fand, gab es überhaupt kein Halten mehr.

Um diesen Artikel zu schreiben und mit meinem 4DK#-Editor zu bebildern, mußte ich in der Datenbank nach dem Editor suchen. Ich benutze ihn schon lange nicht mehr. Eigene Konstanten habe ich durch Helper-Funktionen ersetzt. Für mich sind diese viel effizienter.

Helper-Funktionen

Schaue ich mir meine alten 4D-Datenbanken an – solche aus dem letzten Jahrtausend, habe ich dort mehrere 1.000 globale Methoden, darunter sehr viele Funktionen wie: pzs_StandardHeap, rgbColor_Rot oder myHeute. In neueren Datenbanken habe ich Helper-Funktionen. longint_Help ("Name") ist mir die wichtigste. longint_Help ("pzsStandardHeap") liefert mir z.Z. das Ergebnis aus 256*1024 und longint_Help ("RGBColor_rot") liefert 0x00FF0000.

Als ersten Parameter übergebe ich den Namen des Wertes: $what:=$1.
Case of
  : ($what="pzsStandardHeap")
    $result_L:=256*1024
  : ($what="RGBColor_@")
  Case of
    : ($what="@_rot")
      $result_L:=0x00FF0000
    : ($what="@_meinBlau")
      $result_L:=0x0080
    …
  Else

  End case
  …
End case
$0:=$result_L

Ein neuer Prozeß wird so gestartet
◊ProcessID:=New process(Current methode name;longint_Help ("pzsStandardHeap");Current methode name;"StartProcess") *
Wird der Zahlenwert in einer Methode mehrfach gebraucht, an unterschiedlichen Stellen oder in einer Schleife, weise ich den Wert einer lokalen Variablen zu. 4D ist so schnell, daß jede weitere Optimierung Aufwand an falscher Stelle wäre.

Sehr schnell kam ich auf die Idee das Verfahren mit weiteren Parametern auszubauen. Sie finden auch text_help ("dateStr_VonBis_FullYear";->$vonDate;->$bisDate). Mit dem Namensbestandteil "@_FullYear" ist das Ergebnis 7.-10.10.2008. Ändern Sie den Namen auf "dateStr_VonBis_NoYear" bekommen Sie 7.-10.10. zurück. Das geht mit den 4D Konstanten nicht. Damit war mein Wunsch nach eigenen Konstanten endgültig vorbei.

Wenn Sie in meinem Code eine dieser Funktion finden

  • date_help ("Ostern")
  • real_help ("Prozent_Faktor";19)
  • bool_help ("istEmailAdresse";"info@mettre.de")
  • text_help ("Worttrenner")
könnten Sie mit der kurzen Anleitung zu longint_Help das Funktionsergebnis vorhersagen.

Vorteile der Helper-Funktionen

  • sparen viele Einzelfunktionen ein bzw. fassen diese in einer zusammen
  • einfach ausbaubar
  • zusätzliche Parameter machen aus statischen Funktionsergebnissen dynamische
  • neue Konstanten ohne die Datenbank beenden und neu starten zu müssen
  • kommt ganz ohne ResEdit, Resourcerer und Rezilla aus
  • überlebt den Umstieg auf V11 ohne Umstände

* In Alles zusammenhalten habe ich die Funktion longint_Help zur Konzentration auf das andere Thema durch den Zahlenwert ersetzt.

4D Themen: Berichte in Arbeit