- OpenSuse 11.0 met KDE3.5 en KDE4.0.4
- Ingelogd in KDE4.0.4.
- repository ingevuld in Yast, Repositories:
http://download.opensuse.org/repositories/home:/gbvalor/openSUSE_11.0/- Een paar keer moeten proberen tot de verdeling van de onderdelen van de url in orde was.
- Er zijn ook andere versies beschikbaar in deze gbvalor: bv 10.2, 10.3
- Dan in Yast, zoek, “Gambas2”: geeft een lijst van Gambas-2 componenten; allemaal aangevinkt. Accept.
Waarop automatische 15 extra packages worden toegevoegd. Continue
Een 28 Mb wordt aangekondigd. - Daarna start Gambas 2.7. Helaas lijken de voorbeelden te ontbreken.
- Na de installatie een gambas applicatie als source afgehaald en geopend in de IDE, compile/run: ok!
Monthly Archives: July 2008
Object eigenschappen “leegmaken”
Het leegmaken* van de eigenschappen van een object vanuit de classe kan met verwijzing
(* ik bedoel hiermee het op 0 zetten voor getallen en het “” zetten van een string)
naar zichzelf met “ME”:
' Class voorbeeld
PUBLIC LongName AS String
PUBLIC Amount AS Float
...
PUBLIC Empty
WITH ME
.LongName = ""
.Amount = 0
END WITH
...
In de . notatie komen de PROPERTY eigenschappen voor, je zou dus kunnen denken:
' Class voorbeeld
PUBLIC LongName AS String
PUBLIC Amount AS Float
PROPERTY Named AS String
PROPERTY READ Numbered AS Integer
...
PUBLIC Empty
WITH ME
.LongName = ""
.Amount = 0
.Named = ""
.Numbered = 0
END WITH
...
Je krijgt geen foutmelding voor .Named = “”
Je krijgt wel een foutmelding voor .Numbered = 0 (“is read only”)
Blijkbaar wordt dus de “automatische” _Write methode aangesproken, die niet bestaat voor het READ-only PROPERTY (enkel leesbaar).
Je moet in de plaats daarvan de eventueel intern gebruikte variabelen op nul zetten:
' Class voorbeeld
PUBLIC LongName AS String
PUBLIC Amount AS Float
PROPERTY Named AS String
PROPERTY READ Numbered AS Integer
PRIVATE $sNamed AS String
PRIVATE $iNumbered AS Integer
...
PUBLIC Empty
WITH ME
.LongName = ""
.Amount = 0
END WITH
$sNamed = ""
$iNumbered = 0
END
...
PRIVATE SUB Named_Write(Value AS String)
$sNamed = Value
END
Kopiëren van een object
Kan je met twee objecten:
huidigObject
iets doen als:
vorigObject
vorigObject = huidigObject
Ja, dat gaat inderdaad. Is het ook ok? Wat gebeurt met het vorigObject? Worden alleen de waarden intern overgenomen? Of wijst vorigObject nu naar huidigObject?
DEBUG om PRINTS uit de uitvoerbare code te houden
Gambas heeft een ingebouwd commando DEBUG.
Je kan het gebruiken om iets naar de “console” te sturen, m.a.w. het te tonen via de standaard uitvoer, in de programmeeromgeving (zie schermafdruk).
De DEBUG instructie geeft meer weer dan PRINT; je krijgt in volgorde de naam van de class, de naam van de methode, en tenslotte het regelnummer (van de regel waarin de op dat moment uitgevoerde DEBUG staat).
Bovendien worden, binnen de Gambas omgeving, bij het maken van een “executable” (een uitvoerbaar programma) de DEBUG lijnen uitgefilterd; ze bezwaren je code dus niet. En als je ze er toch uitwil kan je ze gemakkelijk vinden; en ook makkelijk het onderscheid maken met de gewone PRINT instructies.
Op de schermafdruk ook de zoek functie; die maakt onderscheid tussen hoofd-en kleine letters. Soms lijkt “zoek” niet goed te werken, maar komt dat door de instelling: je kan zoeken in de huidige tekst, alleen binnen de huidige procedure, of binnen het hele project.