Hello, World! auf Xbase

Aus Wiki des Deutschsprachige Xbaseentwickler e. V.
Version vom 17. Juni 2013, 15:53 Uhr von Manfred (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.