Font Style Stringe Çevirme ve String i Font Style Çevirme
function FontStyletoStr(St: TFontStyles): string;
var
  S: string;
begin
  S := '';
  if St = [fsbold] then S := 'Kalın'
  else if St = [fsItalic] then S := 'İtalik'
  else if St = [fsStrikeOut] then S := 'Üstu Çizgili'
  else if St = [fsUnderline] then S := 'Altı Çizgili'

  else if St = [fsbold, fsItalic] then S := 'Kalın İtalik'
  else if St = [fsBold, fsStrikeOut] then S := 'Kalın, Üstü Çizgili'
  else if St = [fsBold, fsUnderline] then S := 'Kalın, Altı Çizlili'
  else if St = [fsbold,fsItalic, fsStrikeOut] then S := 'Kalın İtalic Üstü Çizgili'
  else if St = [fsBold, fsUnderline,fsStrikeOut] then S := 'Kalın Altı Çizgili Üstü Çizgili'
  else if St = [fsbold,fsItalic, fsUnderline] then S := 'Kalın İtalic Altı Çizgili'
  else if St = [fsItalic, fsStrikeOut] then S := 'İtalik Üstü Çizgili'
  else if St = [fsItalic,fsUnderline] then S := 'İtalik Altı Çizgili'
  else if St = [fsUnderLine,fsStrikeOut] then S := 'Altı Üstü Çizgili'
  else if St = [fsItalic,fsStrikeOut] then S := 'İtalik Altı Çizgili';
  Result := S;
end;

function Pnn_StrtoFontStyle(St: string): TFontStyles;
var
  S: TfontStyles;
begin
  S  := [];

  if St = 'Kalın' then S :=[fsbold]
  else if St = 'İtalik'  then S :=[fsItalic]
  else if St = 'Üstu Çizgili' then S :=[fsStrikeOut]
  else if St = 'Altı Çizgili' then S := [fsUnderline]

  else if St = 'Kalın İtalik' then S :=[fsbold,fsItalic]
  else if St = 'Kalın, Üstü Çizgili' then S :=[fsBold, fsStrikeOut]
  else if St = 'Kalın, Altı Çizlili' then S :=[fsBold, fsUnderline]
  else if St = 'Kalın İtalic Üstü Çizgili' then S :=[fsbold,fsItalic, fsStrikeOut]
  else if St = 'Kalın İtalic Altı Çizgili' then S := [fsbold,fsItalic, fsUnderline]
  else if St = 'Kalın Altı Çizgili Üstü Çizgili' then S :=[fsBold, fsUnderline,fsStrikeOut]

  else if St = 'İtalik Üstü Çizgili' then S :=[fsItalic, fsStrikeOut]
  else if St = 'İtalik Altı Çizgili'  then S :=[fsItalic,fsUnderline]
  else if St = 'Altı Üstü Çizgili' then S := [fsUnderLine,fsStrikeOut]
  else if St = 'İtalik Altı Çizgili' then S := [fsItalic,fsStrikeOut];
  Result := S;
end;

Kullanımı

Font Dialogtaki Seçilen Style ı string e çeviriyoruz
edit1.text :=  FontStyletoStr(FontDialog1.Font.Style);

Edit teki Style ımızı Edit1 in fontuna atıyoruz
Edit1.Font.Style := StrtoFontStyle(Edit1.Text);
SQL SERVER Sistem Tabloları
Sistem tablosu Veritabanı Fonksiyon
sysdatabases Master Her satırda bir veritabanı içerir.
syslogins Master Her satırda SQL Server’a bağlanmak için bir login hesabı içerir.
sysmessages Master Her satırda SQL Server’ın verebileceği bir hata mesajı ya da uyarı içerir.
sysalerts MSDB Her uyarı için bir satır içerir.
syscategories MSDB SQL Server Management Studio tarafından; işleri, uyarıları ve operatörleri kaydetmek amacıyla kullanılan kategorileri içerir.
sysdownloadlist MSDB Tüm hedef sunucular için download talimatlarının sırasını içerir.
sysjobactivity MSDB O anki SQL Server Agent işinin etkinliği ve durumu hakkındaki bilgileri içerir.
sysjobhistory MSDB SQL Server Agent tarafından planlanmış işlerin uygulaması hakkındaki bilgileri içerir.
sysjobs MSDB SQL Server Agent tarafından tamamlanmış olması gereken her planlanmış iş ile ilgili bilgileri depolar.
sysjobschedules MSDB SQL Server Agent tarafından tamamlanmış olması gereken işlerin plan bilgilerini içerir.
sysjobservers MSDB Belirli bir iş ile bir ya da daha fazla hedef sunucu arasındaki tüm bağların bilgilerini içerir.
sysjobsteps MSDB SQL Server Agent tarafından tamamlanmak üzere olan bir işin her aşamasıyla ilgili bilgileri içerir.
sysjobstepslogs MSDB İş aşamalarının günlükleriyle ilgili bilgileri içerir.
sysmail_allitems MSDB Veritabanı Postası tarafından işlenmiş her mesaj için bir satır içerir.
sysmailevent_log MSDB Veritabanı Posta Sistemi tarafından geri çevrilen her Windows ya da SQL Sunucusu mesajı için bir satır içerir.
sysmail_faileditems MSDB Başarısız durumdaki her Veritabanı Posta mesajı için bir satır içerir.
sysmail_mailattachments MSDB Veritabanı Postasına iliştirilen her ek için bir satır içerir.
sysmail_sentitems MSDB Veritabanı Postası tarafından gönderilen her mesaj için bir satır içerir.
sysmail_unsentitems MSDB “Gönderilemedi” veya “tekrar deneniyor” durumundaki her Veritabanı Posta Mesajı için bir satır içerir.
sysnotifications MSDB Her bildirim için bir satır içerir.
sysoperators MSDB Her SQL Server Agent operatörü için bir satır içerir.
sysproxies MSDB SQL Server Agent yetkili hesaplarıyla ilgili bilgileri içerir.
sysproxylogin MSDB Her SQL Server Agent yetkili hesabıyla ilişkilendirilmiş SQL Server oturumunu kaydeder.
sysproxysubsystem MSDB Her yetkili hesabıyla kullanılan SQL Server alt sistemini kaydeder.
sysschedules MSDB SQL Server Agent iş planlarıyla ilgili bilgileri içerir.
syssessions MSDB Her SQL Server Agent oturumu için SQL Server Agent’ın başlagıç tarihini içerir.
syssubsystems MSDB Mevcut tüm SQL Server Agent yetkili alt sistemlerle ilgili bilgileri içerir.
systargetservergroupmembers MSDB O anda çok sunuculu grupta listelenmiş olan hedef sunucuları kaydeder.
systargetservergroups MSDB O anda çok sunuculu ortamda listelenmiş hedef sunucu gruplarını kaydeder.
systargetservers MSDB O anda çok sunuculu işlem etki alanında listelenmiş hedef sunucuları kaydeder.
systaskids MSDB SQL Server’ın önceki sürümlerinde oluşturulmuş görevlerle, güncel Microsoft SQL Server 2005 Management Studio’daki işler arasındaki eşleştirmeleri içerir.
sysaltfiles Hepsinde Özel durumlarda, veritabanındaki dosyalara karşılık gelen satırlar içerir.
syscacheobjects Hepsinde Önbelleğin nasıl kullanıldığına dair bilgiler içerir.
syscharsets Hepsinde SQL Server 2005 veritabanı motoru tarafından kullanılmak üzere her karakter için bir satır içerir ve bunları sıralar.
syscolumns Hepsinde Veritabanında kayıtlı her işlem parametresini ve tablolardaki her sütunu satıra çevirir.
syscomments Hepsinde Veritabanında tutulan her tablo, kural, varsayılan değer, varsayılan kısıtlaması ve kontrol kısıtlaması için girdi içerir.
sysconfigures Hepsinde Kullanıcı tarafından tanımlanmış her kurulum seçeneği için bir satır içerir.
sysconstraints Hepsinde Veritabanında yer alan objeler ve bu objelerle ilgili kısıtlamaların eşleştirmesini içerir.
syscurconfigs Hepsinde Geçerli kurulumun her seçeneği için bir girdi içerir.
sysdepends Hepsinde Veritabanındaki objelerle (tablo, işlem ve deklanşörler) tanımlarının içerdiği objeler arasındaki bağla ilgili bilgiler içerir.
sysdevices Hepsinde Diskteki her yedek dosyası, banttaki her yedek dosyası ve veritabanındaki her dosya için bir satır içerir.
sysfilegroups Hepsinde Veritabanındaki her dosya grubu için bir satır içerir. Bu tabloda ana dosya grubu için en az bir girdi mevcuttur.
sysfiles Hepsinde Veritabanındaki her dosya için bir satır içerir.
sysforeignkeys Hepsinde Veritabanındaki tanım tablosunda bulunan dış anahtar (foreign key) kısıtlamalarıyla ilgili bilgileri içerir.
sysfulltextcatalogs Hepsinde Tüm metin katalogları hakkında bilgiler içerir.
sysindexes Hepsinde Aktif veritabanındaki her tablo ve her dizin için bir satır içerir.
sysindexkeys Hepsinde Veritabanı dizinindeki anahtarlar veya kolonlar ile ilgili bilgileri içerir.
syslanguages Hepsinde SQL Server 2005’te mevcut olan tüm diller için bir satır içerir.
syslockinfo Hepsinde Beklemedeki, değişim halindeki ve kabul edilmiş tüm kilit değişiklikleriyle ilgili bilgileri içerir.
sysmembers Hepsinde Veritabanı görevindeki her üye için bir satır içerir.
sysobjects Hepsinde Her bir satırda o veritabanındaki objelerden birini içerir.
sysoledbusers Hepsinde Özel bağlı sunucuda her kullanıcı ve şifre eşleştirmesi için bir satır içerir.
sysperfinfo Hepsinde Windows Sistem Monitörü tarafından görüntülenebilen, SQL Server 2005’in performans ölçücü veritabanı motorunun gösterimini içerir.
syspermissions Hepsinde Veritabanındaki kabul ve reddedilmiş tüm kullanıcı, grup ve görev izinleri ile ilgili bilgileri içerir.
sysprocesses Hepsinde Microsoft SQL Server örneğinde geçerli tüm işlemlerle ilgili bilgileri içerir.
sysprotects Hepsinde GRANT ve DENY komutları yardımıyla veritabanındaki güvenlik hesaplarına verilen izinlerle ilgili bilgileri içerir.
sysreferences Hepsinde Veritabanındaki ilişkili kolonlarla DIŞ ANAHTAR (FOREIGN KEY) kısıtlama tanımlarının eşleştirmesini içerir.
sysremotelogins Hepsinde Microsoft SQL Server 2005 örneğinde stoklanmış işlemleri çağırmaya izinli tüm uzak kullanıcılar için bir satır içerir.
sysservers Hepsinde Bir Microsoft SQL Server 2005 örneğinin OLE DB veri kaynağı olarak erişebildiği tüm sunucular için bir satır içerir.
systranschemas Hepsinde Karşılıklı yayımlanan makale ve reklamlardaki şemalarda yapılan değişiklikleri takip etmek için kullanılır.
systypes Hepsinde Veritabanında, kullanıcı tarafından tanımlanmış ve sistemde bulunan her türlü veri için bir satır dönüştürür.
sysusers Hepsinde Her satırda bir NT kullanıcısı, NT grup, SQL Server kullanıcsı ya da SQL rolü içerir.
MSSQL Rebuild Index , Sql Server Index Yenileme

MsSql deki index lerimizi zaman zaman rebuild yapıp indexleri yenilememiz gerekir bunuda aşağıdaki script ile gerçekleştirebilir siniz

USE [Database]
GO
ALTER INDEX [Index_Adı] ON [dbo].[Tablo Adı]
REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 10)
GO
Delphi Tutarı Yazıya Çevirme Function
function YaziyaCevir(Rakam:real ):string;
  const
    b1:ARRAY [1..9] of string =
      ('BİR','İKİ','ÜÇ','DÖRT','BEŞ','ALTI','YEDİ','SEKİZ','DOKUZ');
    b2:ARRAY [1..9] of string =
      ('ON','YİRMİ','OTUZ','KIRK','ELLİ','ALTMIŞ','YETMİŞ','SEKSEN','DOKSAN');
    b3:ARRAY [1..6] of string =
      ('KATRİLYON','TRİLYON','MİLYAR','MİLYON','BİN','');
  var
    gr:ARRAY [1..6] of string[3];
    sn:ARRAY [1..6] of string;
    bs:ARRAY [1..3] of integer;
    tutars, tutart, tutark , sonuct, sonuck: string;
    tur,i,l: integer;


  begin
     tutars:=floattostr(Rakam);
     if pos(',',tutars)=0 then tutars:=tutars+',00';
     tutart:=copy(tutars,1,(pos(',',tutars)-1));
     tutark:=copy(tutars,(pos(',',tutars)+1),2);
     tutart:=stringofchar('0',(18-(length(trim(tutart))))) + tutart;
     tutark:=tutark + stringofchar('0',( 2-(length(trim(tutark)))));
     for i:=1 to 6 do gr[i]:=copy(tutart,1+(3*(i-1)),3);

     for l:=1 to 6 do
      begin
        bs[1]:=strtoint(copy(gr[l],1,1));
        if bs[1]<>0 then
          (
            if bs[1]<>1 then
              sn[l]:=sn[l]+b1[bs[1]]+'YÜZ'
            else
              sn[l]:=sn[l]+'YÜZ'
          );
        bs[2]:=strtoint(copy(gr[l],2,1));
        if bs[2]<>0 then sn[l]:=sn[l]+b2[bs[2]];
        bs[3]:=strtoint(copy(gr[l],3,1));
        if bs[3]<>0 then sn[l]:=sn[l]+b1[bs[3]];
        if length(trim(sn[l]))<>0 then sn[l]:=sn[l]+b3[l];
      end;

     if sn[5]='BİRBİN' then sn[5]:='BİN';
     for i:=1 to 6 do sonuct:=sonuct+sn[i];
     if strtoint(copy(tutark,1,1))<> 0 then sonuck:=sonuck + b2[strtoint(copy(tutark,1,1))];
     if strtoint(copy(tutark,2,1))<> 0 then sonuck:=sonuck + b1[strtoint(copy(tutark,2,1))];
     if tur=0 then result:=sonuct + '.TL / ' + sonuck + '.KR ';
     if tur=1 then result:=sonuct + '.TL ';
     if tur=2 then result:=sonuck + '.KR ';
  end;
Delphi Dosya base64 Decode ve Encode

Projemize alttaki kütüphaneleri ekliyoruz

daha sonra formumuza 2 adet buton bir tane filenameedit yada opendialog da olabilir 1 tane de memo ekliyoruz

     
    uses Soap.EncdDecd,System.NetEncoding;

Dosyamızı base64 formatına çevirmek için aşağıdaki kodu kullanıyoruz


procedure TForm3.Button1Click(Sender: TObject);
var
   stream: TMemoryStream;
begin
    stream := TMemoryStream.Create;
     try
           stream.LoadFromFile(JvFilenameEdit1.Text);
           Memo1.Text := EncodeBase64(stream.Memory, stream.Size);
     finally
          stream.Free;
  end;
end;


Base64 olan bir string i dosyaya çevirmek için benim çevirdiğim dosya pdf olduğundan pdf olarak ekledim


procedure TForm3.Button2Click(Sender: TObject);
var
   stream : TmemoryStream;
begin
stream := TmemoryStream.Create;
   stream.write(TNetEncoding.Base64.DecodeStringToBytes(Memo1.Text),
   length(TNetEncoding.Base64.DecodeStringToBytes(Memo1.Text)));
    stream.Position := 0;
   stream.SaveToFile('d:\test2.pdf');
end;


Delphi 10.4 FreeAndNil Hatası Çözümü

Delphi 10.3 olan freeandnil komutunda 10.4 versiyonunda değişikliğe gidilmesinden dolayı sadece Tobject leri gönderebiliyoruz array ları freeandnil olarak kullanamıyoruz

Delphi 10.3 deki FreeAndNil Procedure 
procedure FreeAndNil(var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  TObject(Obj) := nil;
end;
{$ENDIF}
Delphi 10.4 deki FreeAndNil Procedure 

procedure FreeAndNil(const [ref] Obj: TObject);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := Obj;
  TObject(Pointer(@Obj)^) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  Obj := nil;
end;
{$ENDIF}

çözüm için şöyle bir yol buldum 

procedure AHMET_FreeAndNil(var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  TObject(Obj) := nil;
end;
{$ENDIF}

10.4 versiyonunda procedure nin ismini değiştirip projeye dahil ettiğimizde AHMET_FreeAndNil(array1); olarak kullanıp arrayları free edebiliyoruz
Missing Index SQL

Otomatik Index Üreten SQL Scripti

Çalışan database de script çalıştırılınca işe yarar boş database de yada aktif olarak çalışmayan database de boş döner

SELECT    
dm_mid.database_id AS DatabaseID,
dm_migs.avg_user_impact*(dm_migs.user_seeks+dm_migs.user_scans) Avg_Estimated_Impact,
dm_migs.last_user_seek AS Last_User_Seek,
OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) AS [TableName],
'CREATE INDEX [IX_' + OBJECT_NAME(dm_mid.OBJECT_ID,dm_mid.database_id) + '_'
+ REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.equality_columns,''),', ','_'),'[',''),']','') 
+ CASE
WHEN dm_mid.equality_columns IS NOT NULL
AND dm_mid.inequality_columns IS NOT NULL THEN '_'
ELSE ''
END
+ REPLACE(REPLACE(REPLACE(ISNULL(dm_mid.inequality_columns,''),', ','_'),'[',''),']','')
+ ']'
+ ' ON ' + dm_mid.statement
+ ' (' + ISNULL (dm_mid.equality_columns,'')
+ CASE WHEN dm_mid.equality_columns IS NOT NULL AND dm_mid.inequality_columns 
IS NOT NULL THEN ',' ELSE
'' END
+ ISNULL (dm_mid.inequality_columns, '')
+ ')'
+ ISNULL (' INCLUDE (' + dm_mid.included_columns + ')', '') AS Create_Statement
FROM sys.dm_db_missing_index_groups dm_mig
INNER JOIN sys.dm_db_missing_index_group_stats dm_migs
ON dm_migs.group_handle = dm_mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details dm_mid
ON dm_mig.index_handle = dm_mid.index_handle
WHERE dm_mid.database_ID = DB_ID()
ORDER BY Avg_Estimated_Impact DESC
GO
ASCII Table

ASCII Table

Dec  = Decimal Value
Char = Character

'5' has the int value 53
if we write '5'-'0' it evaluates to 53-48, or the int 5
if we write char c = 'B'+32; then c stores 'b'


Dec  Char                           Dec  Char     Dec  Char     Dec  Char
---------                           ---------     ---------     ----------
  0  NUL (null)                      32  SPACE     64  @         96  `
  1  SOH (start of heading)          33  !         65  A         97  a
  2  STX (start of text)             34  "         66  B         98  b
  3  ETX (end of text)               35  #         67  C         99  c
  4  EOT (end of transmission)       36  $         68  D        100  d
  5  ENQ (enquiry)                   37  %         69  E        101  e
  6  ACK (acknowledge)               38  &         70  F        102  f
  7  BEL (bell)                      39  '         71  G        103  g
  8  BS  (backspace)                 40  (         72  H        104  h
  9  TAB (horizontal tab)            41  )         73  I        105  i
 10  LF  (NL line feed, new line)    42  *         74  J        106  j
 11  VT  (vertical tab)              43  +         75  K        107  k
 12  FF  (NP form feed, new page)    44  ,         76  L        108  l
 13  CR  (carriage return)           45  -         77  M        109  m
 14  SO  (shift out)                 46  .         78  N        110  n
 15  SI  (shift in)                  47  /         79  O        111  o
 16  DLE (data link escape)          48  0         80  P        112  p
 17  DC1 (device control 1)          49  1         81  Q        113  q
 18  DC2 (device control 2)          50  2         82  R        114  r
 19  DC3 (device control 3)          51  3         83  S        115  s
 20  DC4 (device control 4)          52  4         84  T        116  t
 21  NAK (negative acknowledge)      53  5         85  U        117  u
 22  SYN (synchronous idle)          54  6         86  V        118  v
 23  ETB (end of trans. block)       55  7         87  W        119  w
 24  CAN (cancel)                    56  8         88  X        120  x
 25  EM  (end of medium)             57  9         89  Y        121  y
 26  SUB (substitute)                58  :         90  Z        122  z
 27  ESC (escape)                    59  ;         91  [        123  {
 28  FS  (file separator)            60  <         92  \        124  |
 29  GS  (group separator)           61  =         93  ]        125  }
 30  RS  (record separator)          62  >         94  ^        126  ~
 31  US  (unit separator)            63  ?         95  _        127  DEL

Kaynak : https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html