Funktion auslagern
Moderator: Moderatoren
Funktion auslagern
Hallo,
wie kann man unter Alaska eigene Funktionen und Prozeduren aus-
lagern, so dass sie erst beim compilieren eingebunden werden?
Gruß
Alfred
wie kann man unter Alaska eigene Funktionen und Prozeduren aus-
lagern, so dass sie erst beim compilieren eingebunden werden?
Gruß
Alfred
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Funktion auslagern
hi,
*.PRG einbinden.
oder meinst du "zur Laufzeit", also z.b. datadriven aus *.DBF ?
dafür nimmt man Codeblock und EVAL().
gruss by OHR
Jimmy
meinst du wirklich "beim compilieren" ? man könnte per #include weiterAlfred hat geschrieben: wie kann man unter Alaska eigene Funktionen und Prozeduren aus-
lagern, so dass sie erst beim compilieren eingebunden werden?
*.PRG einbinden.
oder meinst du "zur Laufzeit", also z.b. datadriven aus *.DBF ?
dafür nimmt man Codeblock und EVAL().
gruss by OHR
Jimmy
Hallo Jan,
Hallo Jimmy,
mein erstes Programm sieht derzeit so aus
PROZEDURE MAIN()
RETURN
PROZEDURE APPSYS()
RETURN
PROZEDURE einfuegen()
RETURN
Derzeit sind schon eine Anzahl an eigenen Prozeduren hinzugekommen.
Für die Fehlersuche wäre es praktisch wenn ich in einem ersten
Schritt meine eigenen Prozeduren aus dem Hauptprogramm heraus-
nehmen könnte. Wobei diese Prozduren noch nicht so programmiert
sind dass sie losgelöst von dem Programm verwendet werden können.
Der 2. Schritt wäre dann die Prozeduren allgemein verwendbar zu
machen(z.B. meinen eigenen Insert()).
Gruß
Alfred
Hallo Jimmy,
mein erstes Programm sieht derzeit so aus
PROZEDURE MAIN()
RETURN
PROZEDURE APPSYS()
RETURN
PROZEDURE einfuegen()
RETURN
Derzeit sind schon eine Anzahl an eigenen Prozeduren hinzugekommen.
Für die Fehlersuche wäre es praktisch wenn ich in einem ersten
Schritt meine eigenen Prozeduren aus dem Hauptprogramm heraus-
nehmen könnte. Wobei diese Prozduren noch nicht so programmiert
sind dass sie losgelöst von dem Programm verwendet werden können.
Der 2. Schritt wäre dann die Prozeduren allgemein verwendbar zu
machen(z.B. meinen eigenen Insert()).
Gruß
Alfred
- 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:
Alfred,
wenn ich Dich richtig verstehe möchtest/musst Du Deine Funktionen und Prozeduren in verschiedene prg unterbringen. Was absolut löblich und korrekt ist. Und irgendwann auch schlichtweg unvermeidbar. Lese Dich doch mal in PBuild ein, das dürfte die Lösung für Dein Problem sein. oder Du arbeitest mit VX. Das macht in diesem Bereich zwar das gleiche, ist aber hierbei einfacher zu bedienen.
Jan
wenn ich Dich richtig verstehe möchtest/musst Du Deine Funktionen und Prozeduren in verschiedene prg unterbringen. Was absolut löblich und korrekt ist. Und irgendwann auch schlichtweg unvermeidbar. Lese Dich doch mal in PBuild ein, das dürfte die Lösung für Dein Problem sein. oder Du arbeitest mit VX. Das macht in diesem Bereich zwar das gleiche, ist aber hierbei einfacher zu bedienen.
Jan
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
hi,
1.) Masken in Formdesigner erstellen und Code generieren.
2.) in der "Nutzerebene" vor der Procedure Main ein #define/#IFDEF
3.) compilieren mit XPP -DTEST myProg.PRG -b
4.) wenn das alles so klappt musst du nur "#define TEST .T." wieder raus-
nehmen und das ganze in dein Haupt *.XPJ einbauen.
gruss by OHR
Jimmy
aha, jetzt kommen wir der Sache näher. Also so mache ich es :Alfred hat geschrieben: Für die Fehlersuche wäre es praktisch wenn ich in einem ersten
Schritt meine eigenen Prozeduren aus dem Hauptprogramm heraus-
nehmen könnte. Wobei diese Prozduren noch nicht so programmiert
sind dass sie losgelöst von dem Programm verwendet werden können.
1.) Masken in Formdesigner erstellen und Code generieren.
2.) in der "Nutzerebene" vor der Procedure Main ein #define/#IFDEF
Code: Alles auswählen
#define TEST .T.
#IFDEF TEST
PROCEDURE APPSYS
RETURN
PROCEDURE MAIN()
...
#ENDDEF
4.) wenn das alles so klappt musst du nur "#define TEST .T." wieder raus-
nehmen und das ganze in dein Haupt *.XPJ einbauen.
gruss by OHR
Jimmy
- 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 Alfred,
ich schreibe mal wie ich es mache.
Ich habe mir vor Jahren eine Umgebung (etwa 20 PRG) gebaut, die ich
für jedes neue Projekt in ein neues Verzeichnis kopiere.
Mit diesem PRG Skelett fange ich dann immer an.
Einige dieser Dateien enthalten programmspeziefische Teile. Diese werden
nie wieder überschrieben, sondern nur im Verzeichnis editiert.
Andere Dateien (meine allgemeinen Funktionen, Prozeduren, Klassen, HBPrinterX Bibliothek) werden nicht in dem Verzeichnis gepflegt, da dort
nur allgemeingültige Sachen drinstehen. Mit einer CMD Datei überschreibe ich ab und an diese Dateien mit denen, die im
Masterverzeichnis liegen. So kann ich allgemeine Funktionen für alle
verbessern und muss nur die CMD aufrufen (die löscht auch alle OBJ
Dateien und die alte EXE) und neu kompilieren.
Einzelne PRG Dateien sollten nicht mehr als einige hundert Zeilen enthalten, nur eigene Klassen müssen jeweils in einer eigenen Datei
stehen (sehr kurze Klassen kann man auch in einer Datei zusammenfassen).
Die Überwachung übernimmt PBUILD !
Die jeweiligen PRGs muss man nur sauber in der Projektdatei einbinden,
wobei man keine Unterverzeichnisse verwenden darf, da der Linker sonst durcheinander kommt.
Eigene Funktionen könnte man natürlich auch in DLL auslagern, aber dann muss man strikte Versionsplanungen dieser DLLs einhalten. Das gebe ich mir nicht. Rentiert sich auch nur, wenn viele EXE auf einem PC laufen, die alle diese DLL benutzen können und somit der Code nicht in jeder EXE liegt, sondern nur einmal in der DLL.
Verabschieden muss man sich von dem alten LIB Befehl, falls man das verwendet hat um OBJ in LIBs auszulagern. Das Konzept ist unter Windows nicht mehr uptodate und auch nicht wirklich praktikabel, selbst mit einem betagten 1 Ghz Rechner ist pbuild so schnell, dass man ruhig alles (geänderte) kompilieren kann.
ich schreibe mal wie ich es mache.
Ich habe mir vor Jahren eine Umgebung (etwa 20 PRG) gebaut, die ich
für jedes neue Projekt in ein neues Verzeichnis kopiere.
Mit diesem PRG Skelett fange ich dann immer an.
Einige dieser Dateien enthalten programmspeziefische Teile. Diese werden
nie wieder überschrieben, sondern nur im Verzeichnis editiert.
Andere Dateien (meine allgemeinen Funktionen, Prozeduren, Klassen, HBPrinterX Bibliothek) werden nicht in dem Verzeichnis gepflegt, da dort
nur allgemeingültige Sachen drinstehen. Mit einer CMD Datei überschreibe ich ab und an diese Dateien mit denen, die im
Masterverzeichnis liegen. So kann ich allgemeine Funktionen für alle
verbessern und muss nur die CMD aufrufen (die löscht auch alle OBJ
Dateien und die alte EXE) und neu kompilieren.
Einzelne PRG Dateien sollten nicht mehr als einige hundert Zeilen enthalten, nur eigene Klassen müssen jeweils in einer eigenen Datei
stehen (sehr kurze Klassen kann man auch in einer Datei zusammenfassen).
Die Überwachung übernimmt PBUILD !
Die jeweiligen PRGs muss man nur sauber in der Projektdatei einbinden,
wobei man keine Unterverzeichnisse verwenden darf, da der Linker sonst durcheinander kommt.
Eigene Funktionen könnte man natürlich auch in DLL auslagern, aber dann muss man strikte Versionsplanungen dieser DLLs einhalten. Das gebe ich mir nicht. Rentiert sich auch nur, wenn viele EXE auf einem PC laufen, die alle diese DLL benutzen können und somit der Code nicht in jeder EXE liegt, sondern nur einmal in der DLL.
Verabschieden muss man sich von dem alten LIB Befehl, falls man das verwendet hat um OBJ in LIBs auszulagern. Das Konzept ist unter Windows nicht mehr uptodate und auch nicht wirklich praktikabel, selbst mit einem betagten 1 Ghz Rechner ist pbuild so schnell, dass man ruhig alles (geänderte) kompilieren kann.
Gruß
Hubert
Hubert
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hallo Alfred,
ich mache es ähnlich wie Hubert. Entsprechende Berechnungsfunktionen
mache ich eigene PRG und binde diese in die xpj.Datei ein. Dieses vereinfacht auch die Fehlersuche.
Hierbei nutze ich auch den Vorteil, daß man mit der xpj-Datei mehrere
exe-files kompilieren kann. Dies mache ich dann, wenn aus diversen Menüpunkten oftmals die gleichen DBF und die gleichen Funktionen benötigt werden.
ich mache es ähnlich wie Hubert. Entsprechende Berechnungsfunktionen
mache ich eigene PRG und binde diese in die xpj.Datei ein. Dieses vereinfacht auch die Fehlersuche.
Hierbei nutze ich auch den Vorteil, daß man mit der xpj-Datei mehrere
exe-files kompilieren kann. Dies mache ich dann, wenn aus diversen Menüpunkten oftmals die gleichen DBF und die gleichen Funktionen benötigt werden.