siruri de caractere - Universitatea "Lucian Blaga" din...

26
ŞIRURI DE CARACTERE

Transcript of siruri de caractere - Universitatea "Lucian Blaga" din...

Page 1: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

ŞIRURI DE CARACTERE

Page 2: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

AFIŞAREA ŞI CITIREA MESAJELORcasete de mesaje – message box (permit afişarea

unor mesaje)casete de introducere – input box (permit afişarea şi

introducerea de date)

Conceptul de Funcţie – Function

Formatul de apelare al unei funcţii este următorul:prfVar = prfNumeF([arg1, arg2,…, argn])

unde: prfVar reprezintă numele variabilei care preia valoarea returnată de funcţieprfNumeF reprezintă numele funcţiei. Prin prf se înţelege unul din prefixurile utilizate în scrierea numelor variabilelor 2

Page 3: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

FUNCŢIA MSGBOX()

Figura 2.8 – Caseta de dialog afişată prin funcţia MsgBox

3

Funcţia MsgBox() este utilizată pentru a afişa mesaje pe durata rulării aplicaţiei.

Page 4: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Formatul funcţiei MsgBox() este următorul:

intVar = MsgBox(strMsg [, intButon] [, strTitlu] [, strHelpFile, intContext])

unde:strMsg. Argument obligatoriu care conţine mesajul afişat în caseta de dialog.

Mesajul poate conţine 1024 caractere dispuse pe mai multe rânduri. Trecerea la un nou rând în cadrul mesajului se face introducând fie caracaterul retur de car (carriadge return) – chr(13), fie caracterul salt de linie (line feed) – chr(10), sau retur de car şi salt de linie – chr(13) & chr(10).

intButon. Argument opţional de tip întreg (poate fi şi o expresie a cărei valoare finală este un întreg). Argumentul reprezintă suma valorilor (tabelul 5.1) prin care se specifică: numărul şi tipul de butoane din casetă; simbolul grafic (icon) afişat în casetă; butonul implicit al casetei (butonul care deţine focusul la afişarea casetei); modul de funcţionare al casetei. In cazul în care argumentul nu este dat, VBA-ul îl consideră ca având valoarea 0

strTitlu. Argument opţional care conţine mesajul pe care caseta îl afişează în bara de titlu. Dacă argumentul nu este dat, în bara de titlu va fi afişat numele aplicaţiei.

strHelpFile. Argument opţional care conţine adresa fişierului de ajutor ce va fi apelat la acţionarea butonului corespunzător sau apăsarea tastei F1. Dacă strHelpFile este dat atunci trebuie specificat şi argumentul intContext.

intContext. Argument opţional întreg care specifică subiectul din fişierul help care va fi afişat. Dacă intContext este dat atunci trebuie specificat şi argumentul strHelpFile. 4

Page 5: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Tabelul 2.7. – Literali respectiv valori utilizate în definirea valorii argumentului intBut

Literal Val. Descriere

vbOKOnly 0 Afişează butonul OKvbOKCancel 1 Afişează butonul OK şi butonul CancelvbAbortRetryIgnore 2 Afişează butoanele: Abort, Retry şi IgnorevbTesNoCancel 3 Afişează butoanele: Yes, No şi CancelvbYesNo 4 Afişează butoanele Yes şi NovbRetryCancel 5 Afişează butoanele Retry şi CancelvbCritical 16 Afişează icon-ul Critical Message (mesaj critic)vbQuestion 32 Afişează icon-ul Warning Query (întrebare

avertisment)vbExclamation 48 Afişează icon-ul Warning Message (mesaj de

avertizare)vbInformation 64 Afişează icon-ul Information Message (mesaj de

informare)5

Page 6: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Tabelul 2.7. – Literali respectiv valori utilizate în definirea valorii argumentului intBut

Literal Val. DescrierevbDefaultButton1

0Primul buton este implicit (deţine focus-ul)

vbDefaultButton2256

Al doilea buton este implicit (deţine focus-ul)

vbDefaultButton3512

Al treilea buton este implicit (deţine focus-ul)

vbDefaultButton4768

Al patru-lea buton este implicit (deţine focus-ul)

vbApplicationModal0

Utilizatorul trebuie să răspundă casetei de mesajepentru ca aplicaţia să poată continua (applicationmodal).

vbSystemModal4096

Toate aplicaţiile încărcate în sistem sunt întreruptepână când utilizatorul răspunde casetei de mesaje(sistem modal)

6

Page 7: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

MESAJE HELP DIN FEREASTRA PENTRU SCRIEREACODULUI

7

Figura 2.9 – Scrierea istrucţiunii de apelare a funcţiei MsgBox()

Page 8: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

În figura 2.10 este prezentat cazul declarării unei variabile – la scrierea tipului variabilei este afişată o listă a tipurilor predefinite. La scrierea primei litere a tipului variabilei de declarat, automat sistemul deplasează prompter-ul pe cel mai probabil tip din listă. În cazul în care se dă clic pe elementul din listă dorit acesta este inserat în instrucţiune. Selectarea unui obiect al listei afişate se poate face şi apăsând tasta Enter.

8

Page 9: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Figura 2.10 Help contextual 9

Page 10: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

INTRODUCEREA COMENTARIILOR ÎN COD

Comentariile din cadrul codului aplicaţiei sunt extrem de utile deoarece oferă explicaţii asupra funcţionalităţii aplicaţiei, asupra rolului pe care îl au diverse secvenţe de instrucţiuni, etc. Inserarea comentariilor în cod se realizează fie prin cuvântul rezervat Rem (vine de la Remark = comentariu) poziţionat la începutul unui rând de cod fie printr-un apostrof poziţionat la începutul şirului de caractere care reprezintă comentariul.

Utilizarea comentariilor este indicată pentru: a indica numele proiectantului aplicaţiei şi a datei când aceasta

a fost creată a descrie rolul aplicaţiei în secţiunea generală a aplicaţiei a descrie rolul fiecărei proceduri. Comentariul va fi inserat la

începutul procedurii. a descrie secvenţele de instrucţiuni cu rol deosebit în cadrul

aplicaţiei. Astfel, cei ce trebuie să modifice aplicaţia vor ajunge mai rapid la cunoaşterea ei, implicit la modificarea va fi realizată mai uşor şi mai rapid.

10

Page 11: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

In cazul în care este utilizat cuvântul rezervat Rem la început uneilinii de program compilatorul va considera întreaga linie ca fiind un comentariu şi nu o va converti în cod maşină. Formatul unui astfelde comentariu este:Rem Linie de program interpretată de compilator ca un comentariu

Un posibil exemplu de definire a unui astfel de comentariu este:Rem Titlu: Calculul de dimensionare a unei transmisii cu cureleRem Autor: Ion POPESCURem Data: 15.02.1994

O variantă mai eficientă (se scrie mai puţin) este dată de utilizareaapostrofului. Astfel secvenţa de cod anterioară devine:‘ Titlu: Calculul de dimensionare a unei transmisii cu curele‘ Autor: Ion POPESCU‘ Data: 15.02.1994

Spre deosebire de Rem apostroful permite scrierea comentariilor încontinuarea unei instrucţiuni. Spre exemplu:dblR1 = Sqr ((dblX2 - dblX1) ^ 0.5 + ( dblY2 - dblY1) ^ 0.5) ‘ Calculul razei vectoare R1 11

Page 12: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

FUNCŢIA INPUTBOX()

Funcţia InputBox() acţionează în mod similar cu funcţia MsgBox(). Ea oferă avantajul de a returna aplicaţiei răspunsuri mai complexe decât cele oferite de MsgBox(). Astfel dacă MsgBox() returnează o valoare numerică sau literal care indică butonul acţionat de utilizator, InputBox() returnează un şir de caractere care este introdus de utilizator.

Execuţia acestei funcţii are ca efect afişarea unei casete de dialog care conţine: un mesaj de explicitare a funcţiei casetei; o casetă de text în care utilizatorul va introduce (de la tastatură) răspunsul cerut. Funcţia va returna aplicaţiei sub forma unui şir de caractere răspunsul introdus de utilizator 12

Page 13: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Formatul general al funcţiei este:strSir= InputBox(strMsg [, [strTitlu] [, strImplicit] [, intXPoz, intYPoz] [, strHelpFile, intContext]])

unde:strMsg. Argument obligatoriu care conţine mesajul afişat în caseta de dialog. Mesajul poate conţine 1024 caractere dispuse pe mai multe rânduri. Trecerea la un nou rând în cadrul mesajului se face introducând fie caracaterul retur de car (carriadge return) – chr(13), fie caracterul salt de linie (line feed) – chr(10), sau retur de car şi salt de linie – chr(13) & chr(10).strTitlu. Argument opţional care conţine mesajul pe care caseta îl afişează în bara de titlu. Dacă argumentul nu este dat, în bara de titlu va fi afişat numele aplicaţiei.strImplicit. Argument opţional care conţine un şir de caractere ce sunt afişate ca răspuns implicit în caseta în care se introduce răspunsul utilizatorului. Dacă argumentul este omis atunci caseta este afişată goală.13

Page 14: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

intXPoz Argument numeric opţional care specifică în twips distanţa pe orizontală dintre latura din stânga a casetei de dialog şi latura din stânga a ecranului. Dacă argumentul este omis atunci caseta de dialog este centrată pe orizontala ecranului terminalului.intYPoz Argument numeric opţional care specifică în twips distanţa pe verticală dintre latura superioară a casetei de dialog şi latura superioară a ecranului. Dacă argumentul este omis atunci caseta de dialog este centrată pe verticala ecranului terminaluluistrHelpFile. Argument opţional care conţine adresa fişierului de ajutor ce va fi apelat la apăsarea tastei F1. Dacă strHelpFile este dat atunci trebuie specificat şi argumentul intContext.intContext. Argument opţional întreg care specifică subiectul din fişierul help care va fi afişat. Dacă intContext este dat atunci trebuie specificat şi argumentul strHelpFile. 14

Page 15: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Figura 2.11 Casetă de dialog afişată de funcţia InputBox()

15

NOTĂ: Caseta afişată de InputBox() întotdeauna va conţine butoanele OK şi Cancel.Dacă se selectează butonul Cancel atunci funcţia va returna un şir vid (“”). Selectarea butonului OK este simulară cu apăsarea tastei Enter.

Page 16: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

FUNCŢII PENTRU TRATAREA ŞIRURILORDE CARACTERE

Funcţia DescriereChr(intCod) Returnează caracterul ASCII care are codul egal cu valoarea

argumentului int. Argumentul poate fi o variabilă de tip long ,o expresie matematică sau o valoare întreagă.

LCase(sir) Returnează argumentul cu caracterele transformate în litere mici.Argumentul poate fi un şir de caractere sau o variabilă careconţine un şir de caractere.

Left(sir,intLung)

Returnează un număr de intLung caractere începând cu margineadin stânga a argumentului sir. Dacă valoare argumentuluiintLung depăşeşte numărul de caractere din sir atunci va fireturnat sir.

Len(sir) Returnează numărul de caractere din sir. In cazul în care sir nueste iniţializat, atunci funcţia returnează numărul de bytesnecesari pentru memorarea valorii argumentului.16

Page 17: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

InStr([start, ]string1,string2 [, compara])

Returnează o valoare de tip long care reprezintă poziţia şirului string1 înşirul string2. Funcţia are 4 argumente din care 2 sunt opţionale:

start – argument numeric opţional. Poate fi variabilă, expresiematematică sau o valoare întreagă care desemnează numărulcaracterului dir string2 de unde începe căutarea şirului string1. Acestargument este obligatoriu în cazul în care se face o comparaţie.

string1 – argument obligatoriu care conţine şirul de caractere cetrebuie căutat.

string2 – argument obligatoriu care conţine şirul de caractere în care seface căutarea.

compara – argument numeric opţional care poate lua valorile 0, 1 sau 2.0 (implicit) se realizează o comparare binară.1 se realizează o comparare cararcter cu caracter fără a se ţine cont dacă

caracterele sunt majuscule sau nu.2 compararea este realizată pe baza informaţiilor din baza de date

(compararea are sens doar în cazul utilizării mediului MicrosoftAccess.

Funcţia returnează următoarele valori:0 – string1 are lungime 0 sau string2 nu este definit sau start > string2Null – string1 sau string2 este Nullstart – string2 are lungimea 0ValNum – poziţia la care a fost detectat string1 în string2

17

Page 18: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Funcţia DescriereLSet sirDest

= sirSursaCopiază un şirul de caractere sirSursa în şirul de caractere

sirDest. Copierea se realizează prin înlocuire caracter cucaracter începând cu primul caracter al şirului sirDest.Dacă sirDest este mai lung decât sirSursa atunci dupăînlocuire, toate caracterele rămase din sirDest suntînlocuite cu spaţii.

LTrim(sir) Returnează şirul de caractere din sir fără eventualele spaţii dela începutul şirului (dacă sir conţine“ Test functie “ atunci funcţia returnează “Test functie“).

RSet sirDest= sirSursa

Copiază un şirul de caractere sirSursa în şirul de caracteresirDest. Copierea se realizează prin înlocuire caracter cucaracter începând cu ultimul caracter al şirului sirDest.Dacă sirDest este mai lung decât sirSursa atunci dupăînlocuire, toate caracterele rămase din sirDest suntînlocuite cu spaţii.

18

Page 19: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Funcţia DescriereRTrim(sir) Returnează şirul de caractere din sir fără eventualele

spaţii de la sfârşitul şirului (dacă sir conţine“ Test functie “ atunci funcţia returnează “ Testfunctie”).

Trim(sir) Returnează şirul de caractere din sir înlăturând spaţiile dela începutul şi sfârşitul şirului (dacă sir conţine “ Testfunctie “ atunci funcţia returnează “Test functie”).

Mid(sir,intStart [,intLung])

Returnează un subşir din argumentul sir. Inceputulsubşirului este caracterul cu poziţia intStart din sir şiare lungimea de intLung caractere. ArgumentulintLung este opţional. Dacă nu este dat atunci va fiextras un subşir începând cu caracterul cu poziţiaintStart în sir până la sfârşitul acestuia.

Right(sir,intLung)

Returnează un număr de intLung carctere începând cumarginea din dreapta a argumentului sir. Dacă valoareargumentului intLung depăşeşte numărul de caracteredin sir atunci va fi returnat sir. 19

Page 20: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

Space(NrSp) Returnează un şir format din NrSp spaţii.Str() Converteşte un argument numeric într-un şir de caractere.

StrComp(string1,string2

[, compara])

Returnează o valoare întreagă care indică rezultatul comparării a 2şiruri de caractere. Funcţia are 3 argumente din care unul esteopţional:

string1 şir de caractre obligatoriu care reprezintă primul termen alcomparaţiei

string2 şir de caractre obligatoriu care reprezintă primul termen alcomparaţiei

compara – argument numeric opţional care poate lua valorile 0, 1sau 2.

0 – (implicit) se realizează o comparare binară.1 – se realizează o comparare cararcter cu caracter fără a se ţine cont

dacă caracterele sunt majuscule sau nu.2 – compararea este realizată pe baza informaţiilor din baza de date

(compararea are sens doar în cazul utilizării mediului MicrosoftAccess.

Funcţia returnează următoarele valori:0 – string1 este egal cu string2-1 – string1 este mai mic decât string21 – string1 este mai mare decât string2Null – string1 sau string2 este Null 20

Page 21: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

StrConv(string,conversie)

Returnează un şir de caractere ca rezultat al conversiei şirului string. Tipulconversiei este dictat de argumentul numeric conversie. Argumentelefuncţiei sunt:

string şirul de caractere ce se converteşte.conversie argument întreg care reprezintă suma criteriilor de conversie ale

şirului string.Cele mai uzuale criterii de conversie sunt definite printr-o valoare întreagă

sau o constantă cu nume după cum urmează:Constantă Val Descriere criteriu de conversievbUpperCase 1 Converteşte şirul în majuscule.

vbLowerCase 2 Converteşte şirul în caractere mici.vbProperCase 3 Converteşte primul caracter al fiecărui cuvânt din

şir în majusculeNotă: argumentul conversie poate fi sumă numerică sau suma constantelor

cu nume implicate (3 = 3 +2 = vbLowerCase + vbProperCaseUCase(sir) Returnează argumentul cu caracterele transformate în majuscule.

Argumentul poate fi un şir de caractere sau o variabilă care conţine unşir de caractere.

21

Page 22: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate

EXEMPLE

Page 23: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate
Page 24: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate
Page 25: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate
Page 26: siruri de caractere - Universitatea "Lucian Blaga" din Sibiuweb.ulbsibiu.ro/cristian.matran/html/docs/siruri_de_caractere.pdf · Tabelul 2.7. –Literali respectiv valori utilizate