Gambas Lxf74-75

Secretele și trucuri

În ultimul articol al acestei serii regele GUI Dr. Mark Aleksandr Beyn (Dr. Mark Alexander Bain) își dezvăluie secretele în acest similar cu Visual Basic limbaj de programare.

Lăsați întotdeauna o cale de retragere

Am spus-o înainte și repet: înainte de a adăuga ceva la dumneavoastră Gambas-în formă de a pune în aplicare pentru a închide în mod corect. Acest lucru poate fi un buton sau un element de meniu, prin apăsarea pe care codul ruleaza

Se combină procedurile dumneavoastră în module

De exemplu, puteți pune tot ceea ce se referă la baza de date, modulul de date.

Nu uita despre dependențele atunci când reutilizați cod

Dacă utilizați un cod scris anterior pentru o nouă aplicație, nu uitați să conectați componentele pe care codul este specific. De exemplu, dacă utilizați modulul pentru a se conecta la baza de date, veți avea nevoie de componente gb.db, și așa mai departe.

Creați parametrii funcției opționale și utilizați valorile implicite

Pe parcursul proiectului vă va crea de multe ori o funcție care nu necesită parametri. De exemplu, un simplu de rutină pentru a se conecta la baza de date (nu-l tip, este dat aici doar pentru a ilustra ideea!):

Această rutină va funcționa numai dacă serverul de baze de date se află pe același calculator, în cazul în care programul este comportamentul cablată al codului. Dar, pentru că puteți scrie o procedură care ia numele serverului de baze de date ca parametru:

Acum serverul nu este cusută la codul procedură, dar trebuie să-l specificați întotdeauna atunci când apelarea rutinei. De fapt, cererea dumneavoastră se va prăbuși dacă vă aduce brusc procedura de conectare la o bază de date fără a specifica că parametru obligatoriu, astfel:

Dar puteți combina cele mai bune caracteristici ale ambelor opțiuni prin utilizarea unui parametru opțional cu o valoare prestabilită.

Acum, rutina va funcționa corect, indiferent dacă ați specificat, atașată la care server sau nu (conectarea la localhost se va face în acest caz).

Captură greșeli și nu-i lasa sa renunțe la programul

Dacă încercați să adăugați ultima opțiune pe care tocmai l-am văzut în cererea dumneavoastră și rulați-l, va veni cu siguranță în jos. Acest lucru se va întâmpla, pentru că nu a trecut suficient obiect Conn de date - cu excepția numele serverului, este nevoie de mai mult și de baze de date de tip, numele său și numele de utilizator și parola.

Nu este foarte frumos pentru a vedea modul în care programul se prabuseste din cauza unor astfel de lucruri simple. Mult mai bine să se ocupe de eroare, informează utilizatorul cu privire la aceasta și închis în mod corespunzător, și este mai bine - pentru a permite utilizatorului să facă ceea ce el ar putea face în continuare. Pentru a face acest lucru, aveți nevoie de un operator de TRY. Aici este un exemplu de procedură terminată pentru conectarea la baza de date, cu eroare de manipulare, și parametrii opționali cu valori implicite:

Acum, chiar și în cazul în care conexiunea la baza de date va fi, pentru un motiv sau altul imposibilă, aplicația afișează pur și simplu un mesaj de eroare și să continue să lucreze. Fără a utiliza baza de date, desigur.

proprietăţi de utilizare

Dacă aveți nevoie, pur și simplu pentru a seta și a citi valorile, atunci sunteți mulțumit cu variabilele uzuale. Dar proprietăți (proprietăți) au caracteristici care, uneori, le fac foarte util. Acestea includ funcții _Read și subrutine _Write. Deci, încercați să ghicească punctul în care acestea sunt efectuate? Aici este proprietăți definiție gazdă:

Vă rugăm să rețineți, singurul element public este gazdă, orice altceva este ascuns de utilizator al modulului. A se vedea modul în care funcția este definită în valoare Host_Read pentru această proprietate în mod implicit.

Examinați opțiunile de linie de comandă

În exemplele noastre, toate valorile parametrilor (cum ar fi numele bazei de date sau ID-ul de utilizator) au fost cusute în interiorul programului. Dar nu sunt obligați să facă acest lucru, dacă nu vă place. Modificarea valorilor, puteți trece cu ușurință pe parametrii liniei de comandă. Desigur, va trebui să scrie un pic de cod, ceva care să le trateze în mod corespunzător. Tot ceea ce ați tastat în aplicația linie de comandă Gambas, numit un argument, și este stocat într-o matrice Application.Args. Aici este un exemplu simplu de a lucra cu el (această funcție poate fi plasat în modulul de pornire).

Dacă apoi să creați o aplicație executabil și rulați-l din consola prin trecerea unui număr de opțiuni de linie de comandă, se afișează o serie de mesaje, câte unul pentru fiecare parametru. Acest lucru nu este cel mai folositor din lume, dar oferă o idee de care parte de abordare a parametrilor de prelucrare.

Următorul exemplu este un pic mai inteligent. Acest program se așteaptă să-l treacă doi parametri (în ordinea corectă), și stochează valorile variabilelor globale:

Așa cum am spus mai înainte, în acest caz, ordinea este importantă. Dar, dacă folosiți steagurile, nu este atât de important:

Acum puteți apela aplicația ca AplicațiaMea -u / localhost -d MySQL sau AplicațiaMea -d mysql -u / localhost. rezultatul nu se schimba.

Rularea Gambas fără o interfață grafică de utilizator

Cred că ați acordat o atenție la ea, când citiți truc anterior - nu trebuie să utilizeze Gambas numai pentru aplicații GUI. Puteți crea, de asemenea, o aplicație consolă sau o aplicație de linie de comandă. De fapt, atunci când creați o nouă aplicație Gambas, trebuie să specificați dacă este necesară vă interfață grafică (implicit este că va lua).

Dacă alegeți să creați o aplicație consolă, veți găsi că în dosarul Formulare proprietăților proiectului nu este deloc - și pe bună dreptate, pentru că nu aveți nevoie de o interfață grafică. Dar, mai presus de toate, aceasta înseamnă că aveți unde să afișeze informațiile, cu excepția cazului în ieșirea standard de pe consola.

Îmi cer scuze pentru includerea în acest tutorial tocit exemplu «Hello World», dar acestea sunt termenii contractului meu, am să-l prezinte cel puțin o dată în fiecare ciclu de articole. Acesta este un alt directivei europene.

Aici este un program obligatoriu «Hello World» pe Gambas:

Consola de aplicații pot folosi toate componentele Gambas, dar imagine, desigur.

Utilizați INPUT, pentru a transmite informații într-o aplicație consolă.

Am văzut deja cum să folosească Gambas opțiunile de linie de comandă. Acesta funcționează bine cu o aplicație GUI și consolă. În formă grafică, de obicei, au mai multe, și câmpuri de intrare pentru transferul detaliilor de aplicare. În consola, puteți utiliza același lucru la intrarea operatorului:

Conversia cererii în consolă și vice-versa grafic

Când Gambas vă pune o întrebare, design grafic sau o aplicație consolă pentru a crea, aveți dreptul de a cere - Care este diferența? Răspunsul este simplu - diferența într-o singură componentă Gambas - gb.qt. Dacă vă conectați la proiect aplicație consolă, va fi disponibil pentru GUI. În schimb, dacă vă opriți de design gb.qt grafic, veți primi un proiect de program de consolă. Simplu.

Extragerea de informații din fișiere

Intr-un articol anterior ne-am uitat la modul de a obține informațiile din baza de date. Să vedem acum cum să-l citească dintr-un fișier obișnuit. Tot ce trebuie să faci - este de a deschide un fișier într-unul din cele patru moduri: citire (citire), scrie (înregistrare), a crea (a crea) sau adăugați (adăugarea la sfârșitul anului). Cred că este destul de simplu de ghicit care face fiecare dintre aceste metode, deși diferența dintre ardere și ar trebui să fie clarificate. scrie modul de înregistrare, curat și re-scrie fișierul existent. a crea modul de a crea poate crea fișierul în cazul în care nu există, dar în cazul în care este deja acolo - acționează exact ca scriere. Aici este un exemplu simplu:

Acest cod citește fișierul / etc / passwd și îl afișează pe conținutul ecranului.

Utilizați dinamice Arrays Gambas pe toți cilindrii

Acest titlu poate fi un pic vă induce în eroare, pentru că, de fapt, în orice matrice Gambas - dinamic. Să ne uităm la modul în care le puteți utiliza. Definiția o matrice arată astfel:

Se creează o serie de linii care nu conțin nici un element. In timp ce ramane goala, nu se poate atribui orice valoare. De exemplu, ca aceasta:

veți obține eroarea „Out of matrice» (în afara limitelor). În schimb, utilizați metoda Add:

Este o provocare pentru a adăuga mai mult de un element la sfârșitul șirului. Dar puteți adăuga, de asemenea, elemente de la început:

În acest fel puteți introduce un nou element în orice poziție din matrice. Dacă aveți o serie de zece elemente, următorul cod se va insera un altul chiar în mijloc:

Indicii Array începe de la zero, astfel încât elementul cu indicele 4 va fi al cincilea într-un rând, dar numai în matrice va fi acum 11 linii. Sunt încrezător că va încerca imediat să scrie

Gambas va adăuga pur și simplu o nouă linie după ultimul element.

array măsurare rapidă

Dacă este vorba despre un număr de elemente, să ne întrebăm - și asta cât de mare matrice? Răspunsul este simplu. Arrays Gambas au două proprietăți - mArray.count și mArray.length. Ambele proprietăți indică aceeași și returnează numărul total de elemente din matrice.

Puteți utiliza oricare dintre ele să treacă prin toate elementele:

Acest cod creează pur și simplu o serie de zece celule, apoi prezintă fiecare element într-un mesaj separat. Acesta poate surprinde ca, indicele i folosit i-1, în loc de i. Dar, după cum am menționat mai devreme, indicii matrice începe de la zero, astfel încât într-o matrice cu zece elemente sunt numerotate de la 0 la 9, și nu de la 1 la 10. Dacă nu vă place i-1, este posibil să se utilizeze o altă metodă:

De data aceasta, incepand de la zero și se opresc la numărul de index mArray.Count - 1, care este numărul de index nouă (ca mArray.Count este de zece).

Adăugarea mai multor elemente

Da, știu ce vrei să spui, nu doriți să adăugați elemente unul câte unul. Vrei doar să creați imediat numărul necesar de elemente, și apoi să le completeze în ordinea în care consideră potrivit. Nici o problemă!

În acest exemplu, am creat o matrice, pentru a determina dimensiunea sa la 10 elemente (folosind metoda Resize) și setați valoarea celui de al șaselea element (observați cum am făcut față bărbătește cu tentația de a utiliza al cincilea element!).

Interesant, puteți reduce, de asemenea, dimensiunea de matrice. Pentru a face acest lucru, utilizați metodele Redimensionarea sau Eliminare. Cum Resize puteți ghici, și Remove - este doar metoda opusă pentru a adăuga, adică, se elimină ultimul element, sau un element cu un indice, pe care a trecut.

o serie de sfaturi

Dacă salvați datele într-un fișier, veți avea nevoie de un simbol adecvat pentru a separa diferitele secțiuni una de cealaltă. Virgula - alegere destul de frecvente, dar ar trebui să-l evite, dacă cineva intră accidental în linia de câmp de text cu punct și virgulă în „bază de date“ va fi câmp inutile. Utilizați ceva mai neobișnuit, cum ar fi o bară verticală (|).

Există câteva metode frumoase pe care le puteți găsi foarte util atunci când se utilizează matrici Gambas. Prima dintre ele - este Sort. Uită-te la asta:

Acest cod umple o serie de zece elemente cu numere de la 1 la 10. Se sortează apoi ascendent și descendent, afișarea în locul primului element 10 și 1, respectiv. Acesta va fi interesant pentru a vedea ce se schimbă, dacă înlocuim definiția unei matrice de a String []. În acest moment, programul va afișa 9 și 1. De ce? Deoarece Gambas identifică în mod corect tipul variabilelor într-o matrice și sortează numerele în ordine aritmetică, și liniile - în lexicografica. O altă metodă interesantă de matrice Gambas - este inversă (să plătească). Ghici ce face? Și ultimul - este Find (găsit). Ai nevoie de o explicație? Nu cred. Hai în loc Să ne examinăm doar un exemplu:

Acest exemplu utilizează codul pentru a citi datele dintr-un fișier, pe care am considerat mai devreme. În acest moment, numele de utilizatori și directoarele lor de origine din / etc / passwd sunt încărcate în matrici. La sfârșitul numelui de utilizator este percheziționați identificator corespunzător, și pe ea, la rândul său, afișează directorul acasă.

Există doar o singură linie de cod, care pare a fi necesar să-mi explice: lArray = Split, (lline, «:»). Se împarte șir lline în elemente separate prin utilizarea distanțier menționat (în acest caz -. Notă perciuni colon „Tips“ de mai sus), și apoi încarcă părțile din șir în matrice lArray.

Salvarea setări personalizate

Acum știm cum să acceseze parametrii liniei de comandă ale aplicațiilor Gambas. Acest lucru va permite utilizatorului să seteze modul de operare, cu excepția cazului în el este de acord să intre pe deplin toate opțiunile de fiecare dată când începe programul nostru. Este posibil pentru a automatiza acest lucru? Desigur, cheia soluției este un fișier de configurare care este citit la pornire. Apoi, valorile listate în fișierul de configurare, înlocuiți setările implicite efectuate în program.

Și, în final, am spus ...

Codul sursă complet pentru aplicația dezvoltată în acest tutorial pot fi găsite pe CD-ROM. Acesta combină toate tehnicile și trucurile pe care le-am discutat, și arată cât de ușor devine sarcină dificilă în cazul în care o parte este Gambas.