AppSys()
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
AppSys()
Moin,
die AppSys() wird ja automatisch ganz am Anfang eingebunden/geladen. Somit ist es klar, dass man sich darum nicht kümmern muß.
Was kann man eigentlich alles in eine eigene AppSys() ausgliedern? Alles, oder ist es ratsam nur das Notwendigste reinzupacken?
Jedes Programm hat doch sicherlich Parameter, die programmweit zu sehen sind. Ist es empfehlenswert die Erzeugung eines solchen Objektes schon direkt in die AppSys() hinein zu legen? Somit würde ich die Sicherheit haben, in jedem Programm die entsprechenden Einstellungen zu haben, ohne sie jedesmal in die entsprechende Main() zu setzen.
die AppSys() wird ja automatisch ganz am Anfang eingebunden/geladen. Somit ist es klar, dass man sich darum nicht kümmern muß.
Was kann man eigentlich alles in eine eigene AppSys() ausgliedern? Alles, oder ist es ratsam nur das Notwendigste reinzupacken?
Jedes Programm hat doch sicherlich Parameter, die programmweit zu sehen sind. Ist es empfehlenswert die Erzeugung eines solchen Objektes schon direkt in die AppSys() hinein zu legen? Somit würde ich die Sicherheit haben, in jedem Programm die entsprechenden Einstellungen zu haben, ohne sie jedesmal in die entsprechende Main() zu setzen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 194
- Registriert: Fr, 24. Feb 2006 8:09
- Kontaktdaten:
Hallo Manfred,
ich persönlich packe in die AppSys() z.B.
oder PUBLIC Variablen wie z.B.
Gruß,
Notloesung
ich persönlich packe in die AppSys() z.B.
Code: Alles auswählen
SET EPOCH TO 2000
SET CENTURY ON
Code: Alles auswählen
gcUser := GetUserName( <APP> ), ;
gcFile := <File in dem Usereinstallungen gespeichert sind>
Notloesung
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Nun gut,
dann wollen wir mal Manfred helfen, auf die nächste Forenstufe aufzusteigen
Bei mir in der AppSys werden die globalen Variabeln deklariert und die Systemweit gültigen Konstanten belegt (durchaus in Abhängigkeit vom Kunden, für den die Version ist).
Außerdem werden - wie auch in der Hilfe beschrieben - das Anwendungsfenster und die Menüleiste erzeugt und angezeigt sowie die Onlinehilfe initialisiert.
Viele Grüße,
Martin
dann wollen wir mal Manfred helfen, auf die nächste Forenstufe aufzusteigen
Bei mir in der AppSys werden die globalen Variabeln deklariert und die Systemweit gültigen Konstanten belegt (durchaus in Abhängigkeit vom Kunden, für den die Version ist).
Außerdem werden - wie auch in der Hilfe beschrieben - das Anwendungsfenster und die Menüleiste erzeugt und angezeigt sowie die Onlinehilfe initialisiert.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9358
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Es gibt in der Doku einen Abschnitt "Aufgaben von AppSys()". Sie ist eine implizite INIT PROCEDURE, die vor der Main() ausgeführt wird. Man kann dort alles hineinpacken, das einmalig beim Programmstart erfolgen soll. Fenster muß man dort genaugenommen nicht erzeugen, auch wenn die Funktion ursprünglich mal dafür gedacht war.
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin, hi Notloesung
ok, alles klar, dass wollte ich nur wissen. Ich war mir nur nicht im klaren darüber, in welcher Stufe, bzw. welchem Zustand sich das Programm VOR der Main() befindet und ob man das machen kann. Aber es scheint der Fall zu sein.
Danke
ok, alles klar, dass wollte ich nur wissen. Ich war mir nur nicht im klaren darüber, in welcher Stufe, bzw. welchem Zustand sich das Programm VOR der Main() befindet und ob man das machen kann. Aber es scheint der Fall zu sein.
Danke
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi,
und da war nämlich auch schon der Haken. Die Appsys() wird wohl noch vor der dbesys.prg aufgerufen und somit ist nix mit öffnen von DB, was eigentlich bei mir der Fall für Parameter sein sollte.
Hat jemand einen Vorschlag?
und da war nämlich auch schon der Haken. Die Appsys() wird wohl noch vor der dbesys.prg aufgerufen und somit ist nix mit öffnen von DB, was eigentlich bei mir der Fall für Parameter sein sollte.
Hat jemand einen Vorschlag?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
nimm doch den Teil aus der DBESYS-Prozedur mit in die APPSYS-Prozedur und definiere Dir eine leere DBESYS-Prozedur...
Viele Grüße,
Martin
nimm doch den Teil aus der DBESYS-Prozedur mit in die APPSYS-Prozedur und definiere Dir eine leere DBESYS-Prozedur...
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
ok, das wäre eine Lösung, aber kann man sowas unter saubere Programmierung verbuchen? Dafür ist doch die Appsys nicht vorgesehen gewesen? Bei der dbesys weiß ich doch, dass alle Programme darauf zugreifen. Da brauche ich nichts mehr zu beachten. Bei mir ist es so, dass es 2 verschiedene Appsys gibt. die eine für den Hybridmodus und die andere für Programme, die im reinen GUImodus laufen sollen. Dann müßte ich ja jetzt, oder die gesamte Übergangszeit, beide Appsys verändern und hätte somit "redundante" Daten.
Hm, muß ich mir Gedanken zu machen
ok, das wäre eine Lösung, aber kann man sowas unter saubere Programmierung verbuchen? Dafür ist doch die Appsys nicht vorgesehen gewesen? Bei der dbesys weiß ich doch, dass alle Programme darauf zugreifen. Da brauche ich nichts mehr zu beachten. Bei mir ist es so, dass es 2 verschiedene Appsys gibt. die eine für den Hybridmodus und die andere für Programme, die im reinen GUImodus laufen sollen. Dann müßte ich ja jetzt, oder die gesamte Übergangszeit, beide Appsys verändern und hätte somit "redundante" Daten.
Hm, muß ich mir Gedanken zu machen
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Jan,
in der AppSys werden Dinge gemacht, die für alle anderen Programm auch gelten und somit nicht immer wieder in die Main eingebunden werden müssen.
in der AppSys werden Dinge gemacht, die für alle anderen Programm auch gelten und somit nicht immer wieder in die Main eingebunden werden müssen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Tom,
aber was hat GUI mit DBE Treibern zu tun? Ich denke in der dbesys wird der Treiber zusammengebaut, den man für die DBE benötigt? Wenn Du alles immer in der Main machst, dann hast Du entweder nur 1 Programm, alles doppelt gemoppelt, oder ich verstehe Dein System nicht.
aber was hat GUI mit DBE Treibern zu tun? Ich denke in der dbesys wird der Treiber zusammengebaut, den man für die DBE benötigt? Wenn Du alles immer in der Main machst, dann hast Du entweder nur 1 Programm, alles doppelt gemoppelt, oder ich verstehe Dein System nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
ach so,
ja soweit bin ich noch nicht. Da fehlt mir noch das Wissen zu, wie man DLL selber baut.
Wobei ich dazu auch noch eine Frage hätte, die aber, in einem anderen, neuen Thread, zu gegebener Zeit stellen werde.
ja soweit bin ich noch nicht. Da fehlt mir noch das Wissen zu, wie man DLL selber baut.
Wobei ich dazu auch noch eine Frage hätte, die aber, in einem anderen, neuen Thread, zu gegebener Zeit stellen werde.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Manfred,
Ich muß gestehen daß ich nach dem, was ich jetzt hier gelesen habe, der Vorgehensweise von Tom den Vorzug gebe. Warum wichtige Dinge zersplittern und unübersichtlich machen?
Jan
??? Muß ich das jetzt verstehen? Pro (GUI-)Programm gibt es doch genau 1 AppSys() und ebenfalls genau 1 Main(). Daher auch meine Frage, ob es noch irgendeinen Sinn gibt für diese beiden Progs.Manfred hat geschrieben:in der AppSys werden Dinge gemacht, die für alle anderen Programm auch gelten und somit nicht immer wieder in die Main eingebunden werden müssen.
Ich muß gestehen daß ich nach dem, was ich jetzt hier gelesen habe, der Vorgehensweise von Tom den Vorzug gebe. Warum wichtige Dinge zersplittern und unübersichtlich machen?
Jan
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Jan,
das siehst Du m.E. falsch. in der Projektdatei gibst Du z.B. Deine Zusatzbibliotheken an und auch eine evtl. Appsys, oder dbesys, oder was auch immer. Die ist dann 1x vorhanden und wird von allen anderen Programmen benutzt. Die Main, die gehört zum eigentlichen programm selbst und ist dann nur 1x je Programm vorhanden. Wenn Du nichts angibtst, dann werden die Standard Appsys und dbesys geladen.
das siehst Du m.E. falsch. in der Projektdatei gibst Du z.B. Deine Zusatzbibliotheken an und auch eine evtl. Appsys, oder dbesys, oder was auch immer. Die ist dann 1x vorhanden und wird von allen anderen Programmen benutzt. Die Main, die gehört zum eigentlichen programm selbst und ist dann nur 1x je Programm vorhanden. Wenn Du nichts angibtst, dann werden die Standard Appsys und dbesys geladen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Nur zum Verständnis:
Man kann in seinen Sourcen irgendwo eine Prozedur APPSYS definieren. Ist dies so, wird keine APPSYS.PRG hinzugefügt.
Fehlt in den Sourcen eine Prozedur APPSYS, so wird durch den Compiler/Linker automatisch die definierte APPSYS.PRG kompiliert und hinzugelinkt.
Wenn man nun - wie Manfred das meint - sich eine Datei APPSYS.PRG erzeugt, so kann man diese ja in alle XPJ-Dateien mit angeben und hat sie somit für alle Programme gleich.
Man kann es aber auch so machen wie Tom (oder ich) und sich in seinen Sourcen eine Prodzedur APPSYS definieren - und dies eben bei jedem Programm gesondert.
Viele Grüße,
Martin
Man kann in seinen Sourcen irgendwo eine Prozedur APPSYS definieren. Ist dies so, wird keine APPSYS.PRG hinzugefügt.
Fehlt in den Sourcen eine Prozedur APPSYS, so wird durch den Compiler/Linker automatisch die definierte APPSYS.PRG kompiliert und hinzugelinkt.
Wenn man nun - wie Manfred das meint - sich eine Datei APPSYS.PRG erzeugt, so kann man diese ja in alle XPJ-Dateien mit angeben und hat sie somit für alle Programme gleich.
Man kann es aber auch so machen wie Tom (oder ich) und sich in seinen Sourcen eine Prodzedur APPSYS definieren - und dies eben bei jedem Programm gesondert.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
ok, so geht das halt auch. Ich möchte halt eine Datei, in er alle Parameter gesetzt werden, die für das entsprechende Paket benötigt werden. Die einzelnen Programme laden dann einzeln die einmaligen Proceduren. Bei einem anderen Projekt würde dann eine andere Appsys herhalten müssen. Aber egal, die Öffnung von DB klappt so nicht, also werde ich so weitermachen wie bisher, bzw. nur Dinge dort reinpacken, die keine DB benötigen.
Wie gesagt, die Sache mit den DLL werde ich nochmals ansprechen, ausser jemand hat schon Lust dazu etwas zu schreiben in der Wissensbasis.
Wie gesagt, die Sache mit den DLL werde ich nochmals ansprechen, ausser jemand hat schon Lust dazu etwas zu schreiben in der Wissensbasis.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Das Problem ist nur: Wenn man keine eigene AppSys() beifügt, dann läuft das immer über das schicke DOS-Fenster. Was zumindest ich nicht haben möchte.
Das ist für mich auch ein Qualitätsmerkmal. Geht erstmal das DOS-Fenster auf dann hat der Kunde das Gefühl, ein aufgebohrtes 16-Bit-Programm vor sich zu haben. Und ich will ja nicht, das der Kunde schlecht von mir denkt
Jan
Das ist für mich auch ein Qualitätsmerkmal. Geht erstmal das DOS-Fenster auf dann hat der Kunde das Gefühl, ein aufgebohrtes 16-Bit-Programm vor sich zu haben. Und ich will ja nicht, das der Kunde schlecht von mir denkt
Jan
- brandelh
- Foren-Moderator
- Beiträge: 15695
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo,
ich denke man sollte sich erst mal Fragen warum gibt es diese Funktionen ?
Ohne DBESYS und APPSYS könnte ein Clipperprogrammierer nicht einfach mit der MAIN() loslegen, sondern müsste zuerst ein Fenster und dann DBEs einbinden. Das kann aber keiner wenn er neu kommt bzw. der alte Clipper Code hat es nicht drin.
Beide werden also erstmal nur gebraucht, um Clippercompatibel zu werden. Bei einem reinen GUI Programm muss deshalb auch die function AppSys() definiert werden, da sonst automatisch das hybrid-fenster angezeigt wird.
Aber der Code der beiden pre functions kann nicht debugged werden !
Es ist auch nicht richtig, dass diese für jedes Programm gelten, sondern nur für die, die in der Projektdatei genau darauf Bezug nehmen (also neu definieren).
In den meisten meiner Programme wird die AppSys() leer definiert um das CRT Fenster abzuschalten. Die DBEsys() ist meist ok für mich, also lass ich die in Ruhe. Bei einigen Programmen habe ich aber auch beide ersetzt und mach alles in der MAIN. Der Vorteil hier ist, dass der Debugger genutzt werden kann.
Ab und zu habe ich das Basisfenster um Variablen erweitert und das in einer abgeänderten AppSys (nur der GUI Teil mit Erweiterungen) erledigt, da es dort einfacher war, als nachträglich die Eingenschaften anzuhängen.
Das Fenster in der AppSys() zu generieren verschlankt die MAIN(), aber man kann den Debugger nicht nutzen !
Wie schon öfters geschrieben, ich habe mein Grundgerüst von der MDIDEMO.PRG abgeleitet, dort wurde das so gemacht...
(xppw32\source\samples\apps\mdidemo\mdidemo.prg ...
Wenn man GUI Programme schreibt, kann man verschiedene Vorgehensweisen nutzen, ohne dass eine davon falsch wäre.
ich denke man sollte sich erst mal Fragen warum gibt es diese Funktionen ?
Ohne DBESYS und APPSYS könnte ein Clipperprogrammierer nicht einfach mit der MAIN() loslegen, sondern müsste zuerst ein Fenster und dann DBEs einbinden. Das kann aber keiner wenn er neu kommt bzw. der alte Clipper Code hat es nicht drin.
Beide werden also erstmal nur gebraucht, um Clippercompatibel zu werden. Bei einem reinen GUI Programm muss deshalb auch die function AppSys() definiert werden, da sonst automatisch das hybrid-fenster angezeigt wird.
Aber der Code der beiden pre functions kann nicht debugged werden !
Es ist auch nicht richtig, dass diese für jedes Programm gelten, sondern nur für die, die in der Projektdatei genau darauf Bezug nehmen (also neu definieren).
In den meisten meiner Programme wird die AppSys() leer definiert um das CRT Fenster abzuschalten. Die DBEsys() ist meist ok für mich, also lass ich die in Ruhe. Bei einigen Programmen habe ich aber auch beide ersetzt und mach alles in der MAIN. Der Vorteil hier ist, dass der Debugger genutzt werden kann.
Ab und zu habe ich das Basisfenster um Variablen erweitert und das in einer abgeänderten AppSys (nur der GUI Teil mit Erweiterungen) erledigt, da es dort einfacher war, als nachträglich die Eingenschaften anzuhängen.
Das Fenster in der AppSys() zu generieren verschlankt die MAIN(), aber man kann den Debugger nicht nutzen !
Wie schon öfters geschrieben, ich habe mein Grundgerüst von der MDIDEMO.PRG abgeleitet, dort wurde das so gemacht...
(xppw32\source\samples\apps\mdidemo\mdidemo.prg ...
Wenn man GUI Programme schreibt, kann man verschiedene Vorgehensweisen nutzen, ohne dass eine davon falsch wäre.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
was heisst man kann den Debugger nicht nutzen? Mit entsprechenden Parameter fängt der direkt ganz am Anfang an.
was heisst man kann den Debugger nicht nutzen? Mit entsprechenden Parameter fängt der direkt ganz am Anfang an.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21186
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
/i ist der Parameter.
/i ist der Parameter.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Hallo Manfred,
ich habe sowohl die AppSys als auch die DbeSys überschrieben.
Meine DbeSys lädt entweder DBFNTX oder ADSDBE
In der AppSys ist das Mappen der Netzlaufwerke und das Erzeugen eines Mutex-Wertes für die Applikation realisiert.
Ich hatte eine Zeit lang beide ...Sys leer und alles in der Main-Prozedur untergebracht. Da wir aber mehrere Applikationen mit derselben Datenbasis haben, habe ich Die Gemeinsamkeiten aller Main-Prozeduren wieder herausgezogen in in den beiden Prozeduren untergebracht. Als Alternative hätte ich auch eine eigene INIT PROCEDURE schreiben können.
Jede dieser Programmierungsvarianten ist dabei auf keinen Fall unschön oder gar falsch. Es liegt dabei im Ermessen des Programmierers, an welchen Stellen des Programms was geschehen soll. Letztendlich zählt das Ergebnis...
Viele Grüße
Gerd
ich habe sowohl die AppSys als auch die DbeSys überschrieben.
Meine DbeSys lädt entweder DBFNTX oder ADSDBE
In der AppSys ist das Mappen der Netzlaufwerke und das Erzeugen eines Mutex-Wertes für die Applikation realisiert.
Ich hatte eine Zeit lang beide ...Sys leer und alles in der Main-Prozedur untergebracht. Da wir aber mehrere Applikationen mit derselben Datenbasis haben, habe ich Die Gemeinsamkeiten aller Main-Prozeduren wieder herausgezogen in in den beiden Prozeduren untergebracht. Als Alternative hätte ich auch eine eigene INIT PROCEDURE schreiben können.
Jede dieser Programmierungsvarianten ist dabei auf keinen Fall unschön oder gar falsch. Es liegt dabei im Ermessen des Programmierers, an welchen Stellen des Programms was geschehen soll. Letztendlich zählt das Ergebnis...
Viele Grüße
Gerd
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
RE-Appsys
Hi Manfred,
also ich habe in meiner appsys nur die SET-Befehle drin, die ich immer benötige.
Zur Info auch für Jan. Ich mache dies deshalb bei mir so, weil ich in einer xpj-Datei mehrere exe-Files erzeuge. dann muß ich nur bei der Definition
der exe-datei die appsys.prg mit angeben. Das gleich mache ich mit der dbesys.prg
einmal erzeugt und nur einbinden. Denn sonst machst du die Definition
in jeder main().
also ich habe in meiner appsys nur die SET-Befehle drin, die ich immer benötige.
Zur Info auch für Jan. Ich mache dies deshalb bei mir so, weil ich in einer xpj-Datei mehrere exe-Files erzeuge. dann muß ich nur bei der Definition
der exe-datei die appsys.prg mit angeben. Das gleich mache ich mit der dbesys.prg
einmal erzeugt und nur einbinden. Denn sonst machst du die Definition
in jeder main().