Sunteți pe pagina 1din 3

Mici trucuri de programare

Cum să constrângem o valoare introdusă la un interval dat de valori:

Deseori cand vrem ca valoarea unei variabile sa fie intr-un anumit interval, scriem ceva de genul:

//definim o variabilă x şi vrem ca valorile sale sa fie doar în intervalul 1-100


int x;
if (x<1) x=1;
if (x>100) x=100;
Mai putem face însă în următorul mod:

template<class T> inline T constrange(const &T valoare,const &T inferior, const &T superior)
{
return (superior<valoare) ? superior : (valoare<inferior) ? inferior : valoare;
}

Cu acest template definit putem scrie acum:


x = constrange(x,1,100);

Cum să dăm unei aplicaţii prioritate în timp-real:

In general, schimband prioritatea de procesare a unui program "nu este" lucru indicat. Dar dacă
trebuie neapărat necesat să faceţi lucrul acesta Serge Kreutzmann a oferit următoarea rezolvare:

// HIGH_PRIORITY_CLASS este in cele mai multe cazuri cea mai buna


// alegere, apoi REALTIME_PRIORITY_CLASS
// ****************************************************
// Functia care face modificarea prioritatii
//
// următoarele argumente pot fi utilizate:
// IDLE_PRIORITY_CLASS, NORMAL_PRIORITY_CLASS,
// HIGH_PRIORITY_CLASS, REALTIME_PRIORITY_CLASS
// ****************************************************
void SetAppPriority(DWORD dwPiority)
{
// Determina Process Handle utilizand OpenProcess() si trece-l catre
// SetPriorityClass():

if(!::SetPriorityClass(GetCurrentProcess(),dwPiority))
ShowMessage("Nu pot schimbat prioritatea procesului!");
}
Bineînţeles, folosiţi numai când este neapărată nevoie.

Asocierea unui tip de fişier cu o anumită aplicaţie:

Un post de pe un grup de discuţii: "Cum fac ca aplicaţia mea să înregistreze un anumit tip de fişier
sub Windows? Aş dori ca aplicaţia mea să se deschidă atunci când se dă dublu-clic pe unul din
fişierele înregistrate cu ea.". Iată răspunsul:
Trebuie să creaţi nişte chei în regiştrii, sub: HKEY_CLASSES_ROOT

key: <extensie> (de ex .dat, inclusiv punctul)


default value: <nume> (de ex., myApp.Datafile)

key: <nume>
default value: <nume afisat> (afisat in Explorer pentru acel tip de fisier)

key: <nume>\shell\open\command
default value: <calea completa a executabilului> "%1"
Utilizati RegEdit ca să vedeţi nişte exemple, cum ar fi pentru fişierele cu extensia *.txt.

Un alt răspuns:

Presupunând că puteţi scrie în Regiştrii (adică nu rulaţi WinNT cu problemele sale specifice de
securitate), atunci puteţi crea o structură de chei similară cu cea prezentată în cele ce urmează:

HKEY_CLASSES_ROOT\.ext
(Default) "MyProg.File"
Aceasta setează asocierea intre extensia de fişier ".ext" cu tipul "MyProg.File".

HKEY_CLASSES_ROOT\MyProg.File
(Default) "Type Description"
HKEY_CLASSES_ROOT\MyProg.File\Shell\Open\Command
(Default) "c:\path\myprog.exe "%1""

Aceste trei valori vor lansa programul "c:\path\myprog.exe" ca raspuns la un dublu clic in Explorer
(sau clic-dreapta si Open), trecand numele fisierului pe care l-ati indicat.

Probabil veţi vrea să setaţi o nou icon pentru acel tip de fişier:

HKEY_CLASSES_ROOT\MyProg.File\DefaultIcon
(Default) "F:\WIN95\SYSTEM\shell32.dll,-154"

Din borland.public.delphi.winapi newsgroup postari de Peter Below (TeamB) si Corey Murtagh.

Desenarea unui text pe un fundal transparent

Canvas->Brush->Style = bsClear;
Canvas->TextOut( 0, 0, "Text Transparent" );

Cum se schimba directorul in care Borland Builder face salvarile proiectelor?

Pe Windows 95 si NT, Builder va salva in directorul de unde a fost lansat. Deci daca se lanseaza din
c:\dir\curent atunci el va salva in acest director. Scurtatura folosita pentru a lansa Builderul contine
un parametru care indica Windowsului de unde sa lanseze Builderul. Pentru a schimba acest
parametru, clic dreapta pe scurtatura, propietati, si clic pe tabul "Shortcut" din partea superioara a
ferestrei care apare. Schimbati "Start in: " cu ce director doriti si apoi salvati pentru a reflecta in
practica schimbarile.
Pe Windows 98 si 2000, sistemul de operare tine o evidenta despre ultimul director vizitat al
fiecarei aplicatii cu ajutorul registrilor.
Cum putem crea o aplicatie gen CD Player in Builder c++?

Un asemenea tip de aplicatie se poate crea foarte simplu astfel (este vb de o "foarte simpla"
aplicatie):

File|New Application
Puneti o componenta MediaPlayer pe Form. In propietatile Object Inspector, modificati dupa cum
urmeaza:
Device Type=tAutoSelect
AutoEnable = true
FileName = Clic pe ... navigati pe CDROM si selectati o piesa

Cum obtin acces la datele membre a unei clase private/protejate fara sa schimb
sursa?

O solutie ar fi (desi este una neeleganta si bruta):

#define private public


#define protected public
#include <theworld.h>
#undef private
#undef public

S-ar putea să vă placă și