Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Un exemplu de folosire a unui dictionar

   In acest articol, vom lucra un exemplu in care vom folosi o colectie, un dictionar cu perechi de chei de tip int si valori de tip string, dictionar care va fi construit pe baza a ceea ce introduce utilizatorul de la tastatura. Dupa crearea lui, il vom salva intr-un fisier text pe hard. Apoi vom citi colectia din fisierul text.

   Vom alege un proiect de tip Console Application si vom explica notiuni care nu au fost introduse pana acum.

   Construim clasa DictionarExemplu, care va avea ca metode NumarElemente, CreeazaDictionar, SalveazaDictionar, CitesteDictionar.

   Mai intai, in interiorul clasei, declaram un obiect de tip Dictionary<int,string>:

Continue reading

Dictionary – o colectie utila

   O alta colectie generica utila in .Net este Dictionary. Ea functioneaza pe principiul perechilor cheie/valoare.

   Dictionarele stabilesc o relatie (“map“) intre o cheie si o valoare. De exemplu, avem numarul de identificare al unui angajat, caruia ii putem atribui un obiect care reprezinta angajatul.

   Clasa generica Dictionary face parte din spatiul de nume System.Collection.Generics. Pentru folosirea ei, vom folosi:

    using System.Collections.Generic;

   Folosind in continuare clasa Cont, folosita in articolele despre ArrayList si List<T>, construim un dictionar care va stoca perechi cheie/valoare de tipul string/Cont:

Continue reading

Cateva cuvinte despre List – introducere in clasele generice

   Reamintesc problema din articolul despre ArrayList: cream o lista in care adaugam referinte catre obiecte iar pentru a le accesa trebuia sa convertim explicit la tipul obiectului, altfel primeam eroare la compilare, de tipul: “Cannot implicitly convert type ‘object’ to ‘ContExemplu.Cont’. An explicit conversion exists (are you missing a cast?)”.

   C# este un limbaj type-safe, lucru care permite ca unele eventualele erori sa fie returnate la compilare (acest lucru face ca programul sa fie stabil, in sensul ca mare parte dintre errorile datorate tipurilor de date folosite sunt detectate la compilare), si nu la executie (run-time).

   Am expus aceasta problema, pentru a intelege mai bine termenul de generic. Clasele sau functiile generice sunt cele care primesc ca parametru tipul datelor manipulate si sunt foarte folosite in implementarea colectiilor sau algoritmilor care actioneaza asupra unor tipuri variate de date.

   Notiunea de cod generic poate parea cunoscuta celor care programeaza in C++, doar ca implementarea si regulile de utilizare difera in .Net.

Continue reading

Despre fire de executie in c# (threads)

   De multe ori, aplicatiile au nevoie de mult timp pentru a rezolva o sarcina (descarcarea unui fisier, printare, generarea unui raport etc), timp in care programul nu poate raspunde unei alte actiuni a utilizatorului. Pentru a face ca o aplicatie sa indeplineasca o sarcina si sa poata primi si altele in acelasi timp, sunt folosite firele de executie multiple (multiple threads).

   Intr-un program liniar se executa o singura linie de cod, se asteapta pentru completare si apoi se continua cu urmatoarea linie de cod.  Programul nu poate raspunde actiunii unui utilizator in acest timp si chiar in cazul mai multor procesoare, va fi folosit doar unul singur, limitand performanta, datorita programarii single-thread.

Continue reading

Cateva reguli de scriere

Nu stiu daca sunt cel mai in masura sa scriu despre asa ceva, dat fiind ca nu am o indelungata experienta in lumea scrisului, insa “o sa ma risc”! Tot ce scriu e rezultatul experientei proprii, cateva reguli pe care le-am dedus sau invatat citind ceea ce altii au scris. Nu, nu o sa scriu despre ce trebuie scris, ci despre cum trebuie scris, chestii tehnice, de genul: daca tot e titlu, fa-l mai mare decat restul textului, ca sa stim si noi ca e titlu; sau: daca tot te apuci de scris ceva, macar scrie corect. Aminteste-ti ca gramatica nu e optionala la scris.

Scrisul de tip messenger este numai pentru messenger. Acolo trebuie sa comunici rapid, de obicei cu prieteni, cu care iti permiti sa spui/scrii orice si oricum, si, de obicei, ei fac la fel. Insa in momentul in care ai iesit in public, incearca sa nu zgarii retina cititorului prin compozitii de text si imagine greu digerabile. Si prin greu digerabile ma refer atat la cunoscutul stil messengerist care combina tot soiul de icons cu text si combinatii de prescurtari etc cat si la texte scrise negliject, cu gramatica sau semne de punctuatie lipsa.

Continue reading

Aplicatie utila: paint.Net

Mai devreme sau mai tarziu toti ajungem sa avem nevoie de un editor de imagini.
Fie ca vrem sa corectam o fotografie, fie ca vrem sa o redimensionam, sa "taiem"
un detaliu pe care nu il vrem acolo, cand trimitem o poza pe email etc. Nu pot sa
imi imaginez pe cineva nu are nevoie de un astfel de program.

Ce face acum omu' care are nevoie de un editor ocazional? Ori cauta pe net tot
soiul de demo/shareware si, de obicei gaseste tot soiul de chestii ciudate, ori
cauta un program consacrat si il imprumuta – un crack gaseste tot omu pentru ultima
versiune de photoshop. Insa aici apar alte probleme: nu stii daca nu cumva acest
crack nu este de fapt un virus/troian care ajuta pe o parte, si pe alta parte iti
trimite toata lista de contacte la un grup de baieti buni.

Continue reading

c# events | evenimente in c# (.Net)

    In stransa legatura cu facilitatea delegate a limbajului C#, prezentam evenimentele, events.

   Cele mai multe evenimente sunt actiuni ale utilizatorilor (click, schimbarea unei liste, introducere de text, sfarsitul unui calcul etc).

    In .Net, obiectele cunoscute ca si event senders, declanseaza evenimente atunci cand au loc actiuni. Event receivers se ocupa de aceste evenimente prin rularea unei metode numite event handler. Pentru ca event sender-ul nu stie care metoda se va ocupa de eveniment, trebuie creat un delegate care sa se comporte ca un pointer catre event handler.

    Pentru a produce un eveniment, trebuie sa parcurgem 3 pasi : sa declaram un delegate, sa construim un obiect eveniment, sa apelam delegatul intr-o metoda.

Continue reading

Afisarea unui XML intr-un GridView

Un document xml poate stoca date de tip tabela. Ce inteleg prin date de tip tabela? Daca am tabelul de mai jos:

id projName verion asignedTo lastUpdateDate
175077 UI Web john smith 1/4/2009 9:57:15 PM
175078 Windows UI olga bruno 2/4/2009 10:07:20 AM
175079 2.0 CommeonDLL Adrian Blumer 15/2/2009 07:12:21 AM
175070 1.0 WS Joseph Lee 6/1/2010 11:11:10 AM

pot salva acest tabel ca document xml asa:
Continue reading

despre delegates – Introducere

    In programare, exista situatii cand trebuie sa executam o anumita actiune, dar fara sa stim in avans ce metoda sau ce obiect vom apela pentru executarea actiunii. Exemplu : la apasare, un buton va sti ca trebuie sa notifice un anumit obiect , dar nu stie exact care. Solutia simpla consta in conectarea butonului la un delegat si apoi acesta sa indice catre o anumita metoda.

    Un delegat este un obiect care poate referi o metoda. Chiar daca nu este un obiect, o metoda ocupa un loc in memorie, iar aici, la aceasta adresa, va fi transmis controlul la invocarea metodei.

Continue reading