Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

BCB için Kod Parçaları

Başlatan Analyzer, 25 Mayıs 2006, 23:19:52

Analyzer

BCB için Kod Parçaları - 1

Selam,

Delphi'nin abisi Borland C++ Builder'da zaman zaman kullandığım küçük kodları buraya koymak isterim. İhtiyacı olan arkadaşlarım istedikleri gibi kullanabilirler. Bazı kısımlar alıntıdır, büyük kısmını kendim yazmıştım. İsteyen biraz uğraşarak kolayca Delphi'ye çevirebilir. Vaktim oldukça düzenleyip buraya ufak kod parçaları koymaya çalışacağım. Kolay gelsin.

Analyzer

Kredi Kartı geçerliliğinin kontrolü
--------------------------------------

#define ERR_WRONG_NUMBER_OF_DIGITS   1
#define ERR_INVALID_CC               2
#define ERR_INVALID_INPUT            3
#define MASTERCARD                   4
#define VISA                         5
#define AMEX                         6


bool odd (int s)
{
int t;
t = 0;
t = s % 2;
if (t == 1) return true;
else return false;
}

BYTE CheckCC(const char *pszNumber)
{
 int i,nSum;

 if(strlen(pszNumber) != 16)
   return ERR_WRONG_NUMBER_OF_DIGITS;

 for(int i = 0; i < 16; i++)
   if(!isdigit(pszNumber))
     return ERR_INVALID_INPUT;


 for(i = 0, nSum = 0; i < 16; i += 2)
 {
   int nDigit = (pszNumber - 48) * 2;
   nSum += (nDigit < 10 ? nDigit : nDigit / 10 + nDigit % 10) + (pszNumber[i + 1] - 48);
 }

 if(nSum % 10)
   return ERR_INVALID_CC;

return 0;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString CC;
CC = Edit1->Text;
BYTE byRet = CheckCC(CC.c_str());

if (byRet == 0)
{
if ((CC[1] == '5') && (CC[2] > '0' || CC[2] < '6')) ShowMessage ("Geçerli MASTERCARD kartı");
if (CC[1] == '4') ShowMessage ("Geçerli VISA kartı");
if ((CC[1] == '3') && ((CC[2] == '4') || (CC[2] == '7')))
ShowMessage ("Geçerli AMEX Kart");
}
else
{
ShowMessage("Geçersiz Kredi Kartı Numarası");
}
}

Çok basit Şifreleme ve Çözme Algoritması
-------------------------------------------------

char encrypt(char* string) {
  char key = rand() % 0x40;

  char* pch = string;
  while(*pch != '\0') {
     if(isprint(*pch)) {
        char enc = *pch ^ key;
        if(enc != 0x7F)
           *pch = enc;
        }
     ++pch;
     }

  return key;
  };


void decrypt(char* string, char key) {
  char* pch = string;
  while(*pch != '\0') {
     if(isprint(*pch)) {
        char dec = *pch ^ key;
        if(dec != 0x7F)
           *pch = dec;
        }
     ++pch;
     }
  };

TR'ye uygun Telefon EditBox hazırlanması
-----------------------------------------------

Form üzerine bir MaskEdit yerleştirin. From Create eventi için, temizlemek için :

Edit1->Text = "(   )          ";

kodunu çalıştırın.Son olarak EditBox'ın exit eventine bu kodu yazın.

void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
char a,sdk;
bool sdf;  sdf = false;
sdk = 0;
for (a=2;a<5;a++)   {if ((!isdigit(Edit1->Text[a]))) sdf = true;if (Edit1->Text[a] == ' ') sdk++;}
for (a=7;a<10;a++)  {if ((!isdigit(Edit1->Text[a]))) sdf = true;if (Edit1->Text[a] == ' ') sdk++;}
for (a=11;a<13;a++) {if ((!isdigit(Edit1->Text[a]))) sdf = true;if (Edit1->Text[a] == ' ') sdk++;}
for (a=14;a<16;a++) {if ((!isdigit(Edit1->Text[a]))) sdf = true;if (Edit1->Text[a] == ' ') sdk++;}

if (sdk != 10)
if (sdf)
{
MessageBox(0,"Hatalı Giriş Yaptınız! Lütfen Tekrarlayınız","Ekran",16);
Edit1->Clear();Edit1->SetFocus();
}
}

DXF Dosyası Olarak Kaydetme
------------------------------------

Bir programımda kullanmıştım. DXF'nin eski versiyonu olarak kaydediyor ama ACAD oluşan
dosyayı rahatça açıyor.Form yerine bir Memo kontrolü koyun ve gizleyin.(Detaylı kontrol edemedim
eskiden kullandığım koddan alıntı)

void dline(float x1,float y1,float x2,float y2)
{
Form1->Memo1->Lines->Add("LINE");
Form1->Memo1->Lines->Add(8);
Form1->Memo1->Lines->Add(0);
Form1->Memo1->Lines->Add(10);
Form1->Memo1->Lines->Add(x1);
Form1->Memo1->Lines->Add(20);
Form1->Memo1->Lines->Add(y1);
Form1->Memo1->Lines->Add(30);
Form1->Memo1->Lines->Add(0);
Form1->Memo1->Lines->Add(11);
Form1->Memo1->Lines->Add(x2);
Form1->Memo1->Lines->Add(21);
Form1->Memo1->Lines->Add(y2);
Form1->Memo1->Lines->Add(31);
Form1->Memo1->Lines->Add(0);
Form1->Memo1->Lines->Add(0);
}

void dtext (float x1,float y1,int layer,AnsiString str)
{
Form1->Memo1->Lines->Add("TEXT");
Form1->Memo1->Lines->Add(5);
Form1->Memo1->Lines->Add(layer);
Form1->Memo1->Lines->Add(8);
Form1->Memo1->Lines->Add(0);
Form1->Memo1->Lines->Add(10);
Form1->Memo1->Lines->Add(x1);
Form1->Memo1->Lines->Add(20);
Form1->Memo1->Lines->Add(y1);
Form1->Memo1->Lines->Add(30);
Form1->Memo1->Lines->Add(0);
Form1->Memo1->Lines->Add(40);
Form1->Memo1->Lines->Add("0.12");
Form1->Memo1->Lines->Add(1);
Form1->Memo1->Lines->Add(str);
Form1->Memo1->Lines->Add(0);
}

void kaydet()
{
int x1,y1,x2,y2,q,z;
x1 = 0; y1 = 0; x2 = 100; y2 = 100; q = 500; z = 500;
Memo1->Lines->Add(0);
Memo1->Lines->Add("SECTION");
Memo1->Lines->Add(2);
Memo1->Lines->Add("ENTITIES");
Memo1->Lines->Add(0);
dline(x1,y1,x2,y2);
dtext(z,q,text);
Memo1->Lines->Add("ENDSEC");
Memo1->Lines->Add(0);
Memo1->Lines->Add("EOF");
Memo1->Lines->SaveToFile("C:\\File.DXF");
}

Ayın Son Günü
-----------------

TDate SonGun(TDate D)
{
Word  y, m, d;
 DecodeDate(D, y, m, d);
 m++;
 if (m>12) {y ++;m %= 12;}
 return EncodeDate(y, m, 1) - 1;
}

Gerçek Yuvarlama (Önemlidir)
-----------------------------------

double GercekYuvarla(double x)
{
double Result;
 Result = floor(x);
 if ((x-floor(x)) >= 0.5) Result++;
return Result;
}

Virgülle Üç Basamak Ayırma
---------------------------------

AnsiString Virgulle(AnsiString Num)
{
int cl;
AnsiString St;
St = Num;
cl = St.Length();
if (cl>3) St.Insert(",",cl-2);
if (cl>6) St.Insert(",",cl-5);
if (cl>9) St.Insert(",",cl-8);
if (cl>12) St.Insert(",",cl-11);
if (cl>15) St.Insert(",",cl-14);
return St;
}

Virgülden Ayırma
--------------------

AnsiString Virgulsuz(AnsiString St)
{
int cl,i;
cl = St.Length();
for (i=1;i<cl+1;i++) {if (St == ',') {St.Delete(i,1);cl--;}}
return St;
}

EditBox Kontrolünü Etkisizleştirme (Active = false olmadan)
--------------------------------------------------------------------

void __fastcall DisEdit(void *Hnd)
{
long style = GetWindowLong(Hnd, GWL_STYLE);
style = style | WS_DISABLED;
SetWindowLong(Hnd,GWL_STYLE, style);
}


BCB için Kod Parçaları - 2

Selam,

Delphi'nin abisi Borland C++ Builder'da zaman zaman kullandığım küçük kodları buraya koymak isterim. İhtiyacı olan arkadaşlarım istedikleri gibi kullanabilirler. Bazı kısımlar alıntıdır, büyük kısmını kendim yazmıştım. İsteyen biraz uğraşarak kolayca Delphi'ye çevirebilir. Vaktim oldukça düzenleyip buraya ufak kod parçaları koymaya çalışacağım. Kolay gelsin.

Analyzer

Sayıdan Yazıya (Kısa Yol)
-------------------------

AnsiString Sayi2Yazi(AnsiString number)
{
char *birler[]={"","BİR","İKİ","ÜÇ","DÖRT","BEŞ","ALTI","YEDİ","SEKİZ","DOKUZ"};
char *onlar[]={"","ON","YİRMİ","OTUZ","KIRK","ELLİ","ALTMIŞ","YETMİŞ","SEKSEN","DOKSAN"};
char *yuzler[]={"","YÜZ","BİN","MİLYON","MİLYAR","TRİLYON","KATRİLYON","KATRİLYAR","SEPTRİLYON"};

String word_number="";
int temp=1,t1,t2,t3,s;

s=number.Length();

if(number.SubString(1,1)=="0")
{
ShowMessage("Hatalı sayı Lütfen Düzeltin!");
// return;
}
else {
while(s>0)
{
if(s>=3)
{
t2=3;
t3=1;
if(StrToInt(number.SubString(s-2,1))==0)
t3=0;
if(StrToInt(number.SubString(s-2,1))==1)
t1=0;
else
t1=StrToInt(number.SubString(s-2,1));
}
else
t2=s;

if(temp==2 && number=="1")
t2=0;


if(temp>1 && number.SubString(s-2,3)!="000")
word_number=yuzler[temp]+word_number;
if(t2>=1)
word_number=birler[StrToInt(number.SubString(s,1))]+word_number;
if(t2>=2)
word_number=onlar[StrToInt(number.SubString(s-1,1))]+word_number;
if(t2==3)
{
word_number=yuzler[t3]+word_number;
word_number=birler[t1]+word_number;
}
// word_number=" "+word_number;
temp++;
number=number.SubString(1,s-3);
s-=3;
}

return word_number;
}
return 0;
}

Daha hassas Delay fonksiyonu
-------------------------

void Delay(long int msec)
{
long int start, stop;

start = GetTickCount();
do {
stop = GetTickCount();
Application->ProcessMessages();
} while ((stop - start) < msec);
}

Kendi IP adresimiz
------------------

#include winsock.h


String Title = "TFTP Host adresi tespit edilemedi";


WSAData wsaData;
if (WSAStartup(MAKEWORD(1,1), &wsaData) == 0)
{ char ac[80];
if (gethostname(ac, sizeof(ac)) != SOCKET_ERROR)
{ struct hostent * phe = gethostbyname(ac);
if (phe != 0)
{ Title = "TFTP Sunucu (";
int i;
struct in_addr addr;
for (i=0; phe->h_addr_list != 0; i++)
{ memcpy(&addr, phe->h_addr_list, sizeof(struct in_addr));
if (i > 0)
Title = Title + ", ";
Title = Title + inet_ntoa(addr);
}
Title = Title + ")";
}
}
}
WSACleanup();
Form1->Caption = Title;

Windows XP/2000 Tarama Hızının Belirlenmesi
-------------------------------------------

HDC HandleDC = Form1->Canvas->Handle;


int MonitorVertFreq = GetDeviceCaps(HandleDC, VREFRESH);


ShowMessage(String(MonitorVertFreq));

Form'un Başlıksız ve Tam Ekran Yapılması (1)
--------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
HWND HTaskBar;
long int OldVal;

HTaskBar = FindWindow("Shell_TrayWnd", NULL);
SystemParametersInfo(97, Word(true), &OldVal, 0);
EnableWindow(HTaskBar, false);
ShowWindow(HTaskBar, SW_HIDE);

BorderStyle = bsNone;
FormStyle = fsStayOnTop;
Left = 0;
Top = 0;
Height = Screen->Height;
Width = Screen->Width;
}

Form'un Başlıksız ve Tam Ekran Yapılmasından Sonra Eski Haline Getirilmesi (2)
--------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
HWND HTaskBar;
long int OldVal;

HTaskBar = FindWindow("Shell_TrayWnd", NULL);
SystemParametersInfo(97, Word(false), &OldVal, 0);
EnableWindow(HTaskBar, true);
ShowWindow(HTaskBar, SW_SHOW);
}

Monitörü Kapatmak (1)
---------------------

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);

Monitörü Tekrar Açmak (2)
-------------------------

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, - 1);
Üşeniyorum, öyleyse yarın!