- Verse installatie van openSUSE 11.0 + KDE 3.5 + online updates
- Online repository toegevoegd: in Yast2, Repositories, Repository Manager:
http://download.opensuse.org/repositories/home:/gbvalor/
in de vorm:
Protocol: http
Server: download.opensuse.org
Directory: repositories/home:/gbvalor/openSUSE_11.0/
(eigenaardige overgang aan home met dubbel punt maar zo werkte het in ieder geval) - Key trusted? – controleren
- repository toegevoegd en beschikbaar in de lijst.
- Yast software installatie, search “Gambas”: een hele lijst gambas2*, merk op dat gambas runtime erbij staat. Allemaal aanduiden (helaas manueel? Rechtsklik: “all in this list”)
- Je installatie-medium (CD/DVD waarschijnlijk) wordt gevraagd
- Na installatie is het icoon aanwezig in het menu “Development”
- Op dit moment geeft dat Gambas versie 2.8 geïnstalleerd (terwijl op SF: Last stable version is 2.8.1).
Category Archives: Uncategorized
Datum uit een databank: welke vorm?
Ik vul de datum in vanuit een Gambas programma met een string sDocDate
die de datum in het formaat “2008-07-31” bevat.
Als ik het record ophaal, eventueel wijzig en terug bewaar, krijg ik echter een lege datum in de databank, waarschijnlijk als gevolg van een foute invoer.
Als ik naar het formaat kijk waarin de datum weergegeven wordt zie ik al het probleem: een andere datumindeling: “07/31/2008”, dus eerst de maand, dan de dag en dan het jaar. (op het scherm met txbxDate.Text= $hInvoice.sInvDate
)
Als diezelfde string terug bewaard wordt, of vervangen wordt door een andere onjuiste datum-vorm onstaat een probleem.
Oorzaak is waarschijnlijk de localisatie (US) van het systeem waar ik nu op werk.
Dat valt te voorkomen door de datumstring die je ophaalt om te zetten in een datum en daarna terug te formatteren als datum zoals je die wil:
txbxDate.Text = Format(CDate(FMain.$hInvoice.sInvDate), "yyyy-mm-dd")
Achtergrond: Continue reading
Gambas2 op openSUSE 11.0 + KDE4
- 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!
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.
Met Raki geflambeerde Gambas
Los van het feit dat het menu er gisterenavond dus niet als Gambas-programmeren uitzag, heeft de titel absoluut niets te maken met de pagina over gambas die ik net vond: aflevering 40 van “Brave Gnu World”, van 2002 schat ik.
Daarin wat uitleg over Gambas, en de anekdote waarin Benoît zijn dual-boot windows/linux systeem zit te tunen; hij formatteert vanuit dos zijn harde schijf – helaas de verkeerde, nl die waar Gambas opstond. En natuurlijk geen backups. Uiteindelijk vindt hij nog een toevallige kopie van een maand voordien…
Gambas op Mandriva Spring 2008
Gambas draait op Mandriva, maar met de versie vanwaar ik vertrok is bij-installeren buiten de gemakkelijke Mandrake gebruikersinterface nodig. De basis kan daar misschien wel mee, maar het kan veel sneller op de command line met het urpmi commando.
Op de gambas documentatiesite wordt beschreven wat voor Mandriva moet geinstalleerd worden;
urpmi firebird-devel gettext-devel libbzip2_1-devel libcurl-devel libgtk+2.0_0-devel libkdecore4-devel libmesagl1-devel libmesaglu1-devel libmysql-devel libomniorb-devel libORBit2-devel libpcre-devel libpoppler-devel libpq-devel libqt3-devel librsvg2-devel libSDL-devel libSDL_gfx-devel libSDL_image-devel libSDL_mixer-devel libSDL_ttf-devel libsqlite0-devel libsqlite3-devel libunixODBC1-devel libxml2-devel libxslt-devel postgresql-devel task-c-devel task-c++-devel zlib1-devel libffi-devel
./reconf-all
gb.qte.am:3: `%’-style pattern rules are a GNU make extension
src/Makefile.am:3: `gb.qte.am’ included from here
gb.qte.am:3: `%’-style pattern rules are a GNU make extension
src/ext/Makefile.am:3: `gb.qte.am’ included from here
************************************************************
THESE COMPONENTS ARE DISABLED:
– gb.compress.bzlib2
– gb.corba
– gb.db.firebird
– gb.db.mysql
– gb.db.odbc
– gb.db.postgresql
– gb.db.sqlite2
– gb.db.sqlite3
– gb.gtk
– gb.gtk.svg
– gb.net.curl
– gb.pdf
– gb.qte
– gb.sdl
– gb.sdl.sound
************************************************************
MySQL heb ik zeker wel nodig, dus ik moet op zoek naar mysql-devel.
urpmi mysql-devel werkt niet. (mysql-devel where are thou?)
Gevonden via rpmfind –> mysql-devel (iets met 7)
Daarna:
************************************************************
THESE COMPONENTS ARE DISABLED:
– gb.compress.bzlib2
– gb.corba
– gb.db.firebird
– gb.db.odbc
– gb.db.postgresql
– gb.db.sqlite2
– gb.db.sqlite3
– gb.gtk
– gb.gtk.svg
– gb.net.curl
– gb.pdf
– gb.qte
– gb.sdl
– gb.sdl.sound
************************************************************
Gambas werkt hiermee voorzover ik het nodig heb.
Crash door combobox
Een combobox geeft de mogelijkheid een gebruiker te laten kiezen uit een lijst van waarden, door een “drop-down” lijst (rolluik-lijst).
bv een combobox met leveranciersnamen: cmbxAlleLeveranciers
Door uit bestaande waarden te laten kiezen vermijd je dat verkeerde of onmogelijke input gebeurt.
Toch crasht je applicatie na gebruik van een combobox?
Je laat de gebruiker terechtkomen op de combobox voor een selectie met de code:
cmbxAlleLeveranciers.SetFocus()
cmbxAlleLeveranciers.Select()
Opvallend: hij kan hier letters intikken. Die komen niet zomaar vanzelf in je data terecht, maar wel in het resultaat van de combobox, bv door code die de keuze opvangt:
cmbxAlleLeveranciers_Change()
Als de gebruiker kiest uit de lijst heb je een change event. Maar ook op het moment dat daar iets ingetikt wordt heb je “change” events.
Als je dan de .Text
waarde gebruikt om op te zoeken in de databank,
(waar je denkt dat die enkel kan bestaan uit tekst-waarden uit de lijst):
LeverancierNr = haalLeverancierNr(cmbxAlleLeveranciers.Text)
.. kan je in de problemen komen!
De oplossing: zet de combobox ReadOnly
in het schermontwerp
(of met code: cmbxAlleLeveranciers.ReadOnly = TRUE
).
Opgelet! Dan mag je cmbxAlleLeveranciers.Select()
niet meer gebruiken (dit is het selecteren voor wijziging van de tekst – wat dus niet meer kan). De SetFocus()
is voldoende want de combobox reageert nu anders.
In plaats van cmbxAlleLeveranciers_Change()
gebruik je cmbxAlleLeveranciers_LostFocus()
De combobox in die twee uitvoeringen hier:
(uit de gambasdoc documentatie)
Combobox1, de bovenste, is zoals hij standaard gemaakt wordt in de Gambas programmeeromgeving:
– wit tekstveld.
– ReadOnly = FALSE
De tweede, opengeklapt met items zichtbaar, is
– ReadOnly = TRUE
– te herkennen aan de grijze bovenste lijn Item1.
Gambas Gids op Ubuntu
Een Ubuntu gebruiker heeft een gids gemaakt voor gebruik van Gambas door nieuwkomers. Hij maakt daarin een Gambas programma “pamphlets”.
De uitleg beschijft:
- de installatie van Gambas op Ubuntu
- installatie van de door hem gebruikte databank Sqlite3 op Ubuntu
- afhalen en installatie van de door hem gemaakte demo
- opbouw van scherm en code
- maken van een uitvoerbaar programma dat vanop de desktop gestart kan worden
Een schermafbeelding van het programma: “screenshot”
De blog met de uitleg als een blog met de naam kalaharix.
De broncode download pamphlet.tar.gz
(en tar -xzvf pamphlet.tar.gz
om uit te pakken)
De broncode download leesbaar als pdf-bestand