Btgunluk.com
Kişisel bir bilişim blogu
Lazarus'un Console Applicaton'ında Türkçe Karakter Sorunu
Programlamaya hangi dil ile başlamalı? Bu sorunun cevabı bence Pascal'dır. Muhtemel rakiplerinin ilk programlama dili olmak için uygun olmayan özelliklerini yazarsam, bu tercihimin sebebi daha net anlaşılabilir.
İlk akla gelen dillerden C, C++ ve Java'da büyük küçük harf ayrımı vardır. Yeni programlamaya başlayan bir kişinin bir harfi büyük yazacağına küçük yazdığı için yazdığı program çalışmadığında yaşayacağı hayal kırıklığını düşünün. Bu dilleri eledik.
Python dediğinizi duyar gibiyim. Bu dilde değişken tanımlaması yok. Bu yeni programlamla öğrenenlerin başını oldukça ağrıtacak bir konu. Ayrıca şu for döngüsü yeni programlama öğrenen birini bu işten soğutmaya yetecektir:
#For loop from 0 to 2, therefore running 3 times. for x in range(0, 3): print "We're on time %d" % (x)
Visual Basic'in DotNet platformundaki halleri malum, yeni programlama öğrenen birini nesneye yönelik programlamanın ayrıntılarında boğmak çok akıl karı değil.
Gördüğünüz gibi rakiplerini incelediğimizde elimizdeki en iyi alternatifin Pascal olduğu ortada.
Peki Pascal'ı hangi ortamda öğreteceğiz? Malum Turbo Pascal güncel Windows platformlarında artık çalışmıyor. DosBox'la filan çalıştırmak yeni öğrenen biri için pratik olmayacaktır. Her ne kadar ücretsiz bir versiyonu olsa da, Delphi, gerektirdiği güçlü sistem gereksinimleri nedeniyle çok uygun bir seçenek değil CharmPascal vs'yi de inceledim ve ne yazık ki yetersizler.
Geriye Lazarus kalıyor. Ancak Lazarus'ta da Dosya'dan Yeni'yi seçip sonra da Project bölümünden Simple Program'ı seçip bir konsol uygulaması yazdığınızda, Türkçe karakterlerin konsolda düzgün görünmediğini fark edeceksiniz. Bu sorunu şu şekilde çözmek mümkün. Önce aşağıdaki unit'i oluşturuyoruz:
unit setdefaultcodepages; interface uses Windows; implementation Const LF_FACESIZE = 32; Type CONSOLE_FONT_INFOEX = record cbSize : ULONG; nFont : DWORD; dwFontSize : COORD; FontFamily : UINT; FontWeight : UINT; FaceName : array [0..LF_FACESIZE-1] of WCHAR; end; { Only supported in Vista and onwards!} function SetCurrentConsoleFontEx(hConsoleOutput: HANDLE; bMaximumWindow: BOOL; var CONSOLE_FONT_INFOEX): BOOL; stdcall; external kernel32; var New_CONSOLE_FONT_INFOEX: CONSOLE_FONT_INFOEX; initialization SetConsoleOutputCP(DefaultSystemCodePage); SetTextCodePage(Output, DefaultSystemCodePage); FillChar(New_CONSOLE_FONT_INFOEX, SizeOf(CONSOLE_FONT_INFOEX), 0); New_CONSOLE_FONT_INFOEX.cbSize := SizeOf(CONSOLE_FONT_INFOEX); New_CONSOLE_FONT_INFOEX.FaceName := 'Consolas'; // New_CONSOLE_FONT_INFOEX.FaceName := 'Lucida Console'; //use Lucida Console for Win XP New_CONSOLE_FONT_INFOEX.FontWeight := 400; //New_CONSOLE_FONT_INFOEX.dwFontSize := 20; SetCurrentConsoleFontEx(StdOutputHandle, False, New_CONSOLE_FONT_INFOEX); end.
Sonra programımızı şu şekilde yazıyoruz:
program project1; uses crt, setdefaultcodepages; begin Writeln('Console output codepage: ', GetTextCodePage(Output)); Writeln('System codepage: ', DefaultSystemCodePage); writeln('Hello Türkçe'); readln; clrscr; readln; end.
En son olarak da Lazarus'un Code Editor'ünde sağ tıklayıp File Settings'den Encoding/Ansi (cp1254)'ü seçip dosyayı kaydediyoruz. Sonuç şu şekilde oluyor:
11.02.2017 08:50:15
Yorumlar
Yazı hakkında yorum yapmak için, buraya tıklayın.
Kategoriler :
- Bilişim (52)
- C Sharp (1)
- Delphi (44)
- Duyuru (8)
- Excel (8)
- Fıkralar (9)
- Flash (2)
- Javascript (3)
- Kategorisiz (2)
- Kıssa'dan Hisse (5)
- Php (20)
- Program Tanıtımı (1)
- Python (2)
Arşiv :
- Kasım 2008 (11)
- Ekim 2010 (6)
- Kasım 2010 (11)
- Aralık 2010 (3)
- Ocak 2011 (2)
- Mayıs 2011 (1)
- Temmuz 2011 (4)
- Ağustos 2011 (10)
- Ekim 2011 (2)
- Ocak 2012 (2)
- Şubat 2012 (1)
- Mart 2012 (1)
- Nisan 2012 (3)
- Haziran 2012 (2)
- Temmuz 2012 (1)
- Ağustos 2012 (1)
- Kasım 2012 (1)
- Mart 2013 (1)
- Mayıs 2013 (1)
- Temmuz 2013 (1)
- Ekim 2013 (2)
- Kasım 2013 (2)
- Şubat 2014 (1)
- Ekim 2014 (1)
- Kasım 2014 (3)
- Şubat 2015 (1)
- Ağustos 2015 (3)
- Eylül 2015 (1)
- Ekim 2015 (1)
- Ocak 2016 (3)
- Nisan 2016 (1)
- Ekim 2016 (1)
- Aralık 2016 (8)
- Ocak 2017 (27)
- Şubat 2017 (1)
- Haziran 2017 (1)
- Eylül 2017 (1)
- Kasım 2017 (1)
- Ocak 2018 (2)
- Temmuz 2018 (2)
- Kasım 2018 (1)
- Aralık 2018 (1)
- Şubat 2019 (1)
- Ağustos 2019 (2)
- Aralık 2019 (1)
- Ocak 2020 (1)
- Nisan 2020 (10)
- Kasım 2020 (1)
- Aralık 2020 (1)
- Ocak 2021 (1)
- Mayıs 2022 (1)
- Kasım 2022 (1)
- Mart 2023 (1)
- Mayıs 2023 (2)
- Haziran 2023 (1)
- Ocak 2024 (2)
- Temmuz 2024 (1)
Etiketler :
- 3d acar baltas Android asp.net banana pi c sharp delphi fonksiyonları excel Firefox flash flowplayer ipucu opencv pascal pdf php fonksiyonları python super pi ttnet veritabanı video visual studio Windows word