Hello, World! auf Xbase: Unterschied zwischen den Versionen

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Zur Navigation springen Zur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
Zeile 1: Zeile 1:
Da Xbase++ quasi alle Vor- und Nachteile von Clipper "geerbt" hat, greifen auch die normalen Clipper-Funktionen und Befehle.
Da [[Xbase++]] quasi alle Vor- und Nachteile von [[Clipper]] "geerbt" hat, greifen auch die normalen Clipper-Funktionen und Befehle.


Voraussetzung ist eine Installation von Xbase++ und die Einbindung der Verzeichnisse in die PATH-Anweisung.
Voraussetzung ist eine Installation von Xbase++ und die Einbindung der Verzeichnisse in die PATH-Anweisung.
Zeile 17: Zeile 17:
  [[pbuild]] @project.txt
  [[pbuild]] @project.txt


Die erste Anweisung erzeugt eine Liste mit den Namen der im Verzeichnis vorhandenen .prg-Dateien. Die zweite Anweisung startet den ProjectBuilder von Xbase++ und übergibt diese Liste als Input-Parameter (erkennbar am vorangestellten @). PBuild erzeugt jetzt eine Project.XPJ:
Die erste Anweisung erzeugt eine Liste mit den Namen der im Verzeichnis vorhandenen .prg-Dateien. Die zweite Anweisung startet den ProjectBuilder von Xbase++ und übergibt diese Liste als Input-Parameter (erkennbar am vorangestellten @). [[pbuild|PBuild]] erzeugt jetzt eine Project.XPJ:


----
----
Zeile 84: Zeile 84:
  FUNCTION MAIN
  FUNCTION MAIN
   ? "Hello, World!"
   ? "Hello, World!"
   ? MaxRow()
   ? [[MaxRow()]]
   ? MaxCol()
   ? [[MaxCol()]]
   WAIT
   [[WAIT]]
  RETURN(.T.)
  RETURN(.T.)


Zeile 116: Zeile 116:
  GUI = yes
  GUI = yes


machen, und unser Programm mit pbuild /a neu erstellen. Der Schalter /a erzwingt eine Compilierung aller Module. Normalerweise geht pbuild hin und prüft, welche Quellen gegenüber den Objekten geändert wurden und compiliert nur diese neu. Da wir aber nur die Projekt-Definition, aber keine Quelle geändert haben, müssen wir ein erneutes Compilieren erzwingen.
machen, und unser Programm mit [[pbuild]] /a neu erstellen. Der Schalter /a erzwingt eine Compilierung aller Module. Normalerweise geht [[pbuild]] hin und prüft, welche Quellen gegenüber den Objekten geändert wurden und compiliert nur diese neu. Da wir aber nur die Projekt-Definition, aber keine Quelle geändert haben, müssen wir ein erneutes Compilieren erzwingen.


Wenn wir jetzt das Programm aus der Befehlszeile aufrufen, ändert sich das Verhalten: es erscheint ein neues Programmfenster (ähnlich, nicht gleich!) wie mit der vorherigen Version, wenn wir das Programm aus dem Explorer starten.
Wenn wir jetzt das Programm aus der Befehlszeile aufrufen, ändert sich das Verhalten: es erscheint ein neues Programmfenster (ähnlich, nicht gleich!) wie mit der vorherigen Version, wenn wir das Programm aus dem Explorer starten.

Aktuelle Version vom 17. Juni 2013, 16:53 Uhr

Da Xbase++ quasi alle Vor- und Nachteile von Clipper "geerbt" hat, greifen auch die normalen Clipper-Funktionen und Befehle.

Voraussetzung ist eine Installation von Xbase++ und die Einbindung der Verzeichnisse in die PATH-Anweisung.

Mittels eines Editors erzeugen wir ein Programm, HeWo.prg:

FUNCTION MAIN
  ? "Hello, World!"
  WAIT
RETURN(.T.)

Wir sind immer noch in der Befehlseingabe:

dir *.prg /b > project.txt
pbuild @project.txt

Die erste Anweisung erzeugt eine Liste mit den Namen der im Verzeichnis vorhandenen .prg-Dateien. Die zweite Anweisung startet den ProjectBuilder von Xbase++ und übergibt diese Liste als Input-Parameter (erkennbar am vorangestellten @). PBuild erzeugt jetzt eine Project.XPJ:


//
// Project - Definition - File created by PBUILD Version  1.90.355
// Date: 29.04.2013 Time: 11:59:32
//

[PROJECT]
   COMPILE       = xpp
   COMPILE_FLAGS = /q
   DEBUG         = yes
   GUI           = no
   LINKER        = alink
   LINK_FLAGS    = 
   RC_COMPILE    = arc
   RC_FLAGS      = /v
   PBUILD        = @project.txt
   MAKE          = 
   PROJECT.XPJ

[PROJECT.XPJ]
   project.EXE

[project.EXE]
   HeWo.prg


Da wir keine Vorgaben bezüglich des Programmnamens gemacht haben, verwendet PBuild den Namen der Eingabedatei: so wird aus project.txt eben project.exe.


Mit einem Aufruf von PBuild wird diese Datei abgearbeitet:

C:\Entwicklungen\Test\HelloWorld>pbuild
Xbase++ (R) ProjectBuilder Version  1.90.355
Copyright (c) Alaska Software 1997-2009. All rights reserved.
xpp /q /b /dDEBUG @C:\Users\Georg\AppData\Local\Temp\04295455.tmp
Xbase++ (R) Compiler 1.90.355 Apr  9 2009
Copyright (c) Alaska Software. All rights reserved.
File HEWO.PRG successfully compiled. 

alink @C:\Users\Georg\AppData\Local\Temp\04295461.tmp
Alaska 32-Bit Linker Version 1.90.355
Copyright (c) Alaska Software 1997-2009. All rights reserved.


project.EXE created successfully.
Processing time:      0.23 secs.

Jetzt steht einem kleinen Testlauf nichts im Wege:


C:\Entwicklungen\Test\HelloWorld>project

Hello, World!
Press any key to continue...

Das Programm läuft also innerhalb der Befehlseingabe und nicht als eigenständiges Programmfenster.

Bevor wir jetzt den nächsten Schritt tun, ergänzen wir noch zwei Zeilen:

FUNCTION MAIN
  ? "Hello, World!"
  ? MaxRow()
  ? MaxCol()
  WAIT
RETURN(.T.)

Ein erneutes PBuild, und wir können project.exe wieder starten:

C:\Entwicklungen\Test\HelloWorld>hewo

Hello, World!
        76
        99
Press any key to continue...

Meine Befehlseingabe ist so definiert, dass 77 Zeilen und 100 Spalten sichtbar sind. Wenn ich das Programm nicht durch einen Aufruf aus der Befehlszeile, sondern z.B. aus dem Windows-Explorer startet, gestaltet sich die Sache anders:


Hello, World!
        24
        79
Press any key to continue...

Da sind die altbekannten 25 Zeilen mit 80 Spalten wieder. Wir stellen also fest, dass die Umgebung, in der das Programm aufgerufen wird, einen Einfluss auf die Darstellung hat.

Wir können auch hier (sei es, über das Kontextmenü, oder durch Einsatz der rechten Maustaste) Bereiche Markieren und Kopieren.

Wir ändern jetzt in der Project.XPJ einen Eintrag, indem wir aus

GUI = no
GUI = yes

machen, und unser Programm mit pbuild /a neu erstellen. Der Schalter /a erzwingt eine Compilierung aller Module. Normalerweise geht pbuild hin und prüft, welche Quellen gegenüber den Objekten geändert wurden und compiliert nur diese neu. Da wir aber nur die Projekt-Definition, aber keine Quelle geändert haben, müssen wir ein erneutes Compilieren erzwingen.

Wenn wir jetzt das Programm aus der Befehlszeile aufrufen, ändert sich das Verhalten: es erscheint ein neues Programmfenster (ähnlich, nicht gleich!) wie mit der vorherigen Version, wenn wir das Programm aus dem Explorer starten.

Wenn wir jetzt versuchen, über das Kontextmenü oder die rechte Maustaste "Markieren" auszuwählen, fallen zwei Dinge auf:

- das Kontextmenü ist kürzer, und Markieren fehlt; - die rechte Maustaste zeigt im Fenster keine Wirkung.

Wir haben es also mit einem Programm zu tun, das aussieht wie ein "altes" Clipper-Programm (auch die Ausgabe über ? funktioniert), das aber scheinbar kein Text-Modus Programm mehr ist, sondern ein "Windows-Programm".

Wir sind unter Windows angekommen, wenn auch noch nicht am Ziel.