Türkçe karekterler

56 views
Skip to first unread message

kasif fisak

unread,
Oct 3, 2009, 4:22:16 AM10/3/09
to Dizgi projesi iletisim grubu
Çıktı yaparken Türkçe karakter kullanmak için setlocale fonksyonunu
kullanıbiliriz.ama değişkene girdi yaparken wstring kullanmamız
gerekir.Bu hafızada fazla yer kaplanmasına sebep olabilir ama zaten
günümüze 256 mb'ın altında ram i olan kalmadı.yani hem bir sürü
program kullanıp hemde bu wstring'den 100-150 tane tanımlı bi program
kullansalar bile bilgisayar fazla kasmaz.

Yanlışım varsa düzeltin


Merhaba Crime,

Yanlış değilsin wstring kullanılabilir elbette ama ben daha öncede
belirttiğim gibi daha çok temelde char * tipi üzerinde çalışmak
istiyorum bunun sebebi olarakta c++ string sınıfını bilmediğimi
söylemiştim.

Bu arada sen nelerle uğraşıyorsun, çalışıyormusun öğrencimisin?
progamlama ile ilgin nedir?
Message has been deleted

kasif

unread,
Oct 5, 2009, 9:48:49 AM10/5/09
to Dizgi projesi iletisim grubu
Pekala CreamCoder madem FOREVER C++ diyorsun tamam o zaman.

Projeyi bilgisayarına kurup çalıştırabildin mi? önce onu öğrenelim?

On 5 Ekim, 16:40, CrimeCoder <CrimeCo...@hotmail.com> wrote:
> Ben genellikle bilgisayarlar uğraşıyorum.6. Sınıfa yeni başladım
> (ilköğretim 6).Programlamaya 10 yaşımda C# ile başladım.Azda olsa C#
> gördüm,asla önermem.FOREVER C++
Message has been deleted

kasif

unread,
Oct 5, 2009, 11:03:03 AM10/5/09
to Dizgi projesi iletisim grubu
Hımm anlıyorum CreamCoder ama bir an önce geliştirme ortamını
kurmalısın.

Öncelikle senin yazdığı fonksiyonlarda çok değerli ama onlar işin
temelinden biraz uzak, mesela Mors-Latin cevirme diyorsun, benim böyle
bir metodu şimdiye kadar hiç ihtiyacım olmadı. Yani bunlar daha sonra
yazılabilecek metodlar anlatabiliyormuyum. Bizim öncelikli hedefimiz
arabanın motorunu çalışır hale getirmek olmalı.

Sen projeyi indirip incelemediğin için bilemiyorsun tabi, biz bir
fonksiyon kütüphanesi yazmıyoruz. Bir sınıf geliştiriyoruz, dolayısyla
zaten bu sınıf kullanıcı tanımlı bir tip oluyor. Bu sebeple örnekleri
incelediğinde göreceksin Dizgi tipinden değişkenler tanımlayabilir
bunlara değer atayabilir, birbiri ile karşılaştırabilirsin hatta son
yazdığım çevirme operatörü sayesinde Dizgi tipindeki bir değişkeni
char * tipini çevirebilirsin. yani demek istediğim bir zaten bir tip
oluşturduk ve bunu geliştirebilirsek c++ için string sınıfını hiç
kullanmadan işlemlerini yapabilrsin, üstelik türkçe karekter sıkıntısı
olmadan.

İkimizde string işlemleri hakkında pek bilgili değiliz. Şimdi senden
istediğim google kullanarak C++, C#, Delphi dillerindeki string
fonksiyonlarını araştırman ve şöyle bir liste hazırlaman, bu listeyi
excelde yapabilirsin, Örneğin aşağıdaki gibi bir liste hazırlaman.

C++ C# Delphi
strupr() str.Upper() UpperCase

Bu listeye her dilde kullanılan string fonksiyonlarını ekleyeceksin.
Bunlardan faydalanarak bizde yazacağımız metodların bir listesini
çıkarıp paylaşırız. Bende şimdi test ortamı için bişeyler
araştırıyorum uygun bir ortam bulunca buraya bilgi eklerim. Hadi
ikimizede kolay gelsin.

On 5 Ekim, 17:29, CrimeCoder <CrimeCo...@hotmail.com> wrote:
> Derliyiciyi yüklesem çoğu şeyi deneyeceğim ama...Bugün %99.9
> yüklerim.CharacterStream'ide deneyeceğim.CevizForumm'daki son
> gönderdiğin mesaja cevabım:
> Ben Dizgi'yi Küçük Harfe Çevirme,Küçük Harfe Çevirme.Sayıya
> Çevirme,Tersine Çevirme,Mors-Latin Çevirme,Latin-Mors Çevirme vs. ben
> yazabilirim.Zaten fazla uzun sürmez bunlar.Bence Dizgi Sınıfını
> tamaladıktan sonra bunu bir Değişken tipi haline getirmeliyiz.
> > > > progamlama ile ilgin nedir?- Alıntıyı gizle -
>
> > - Alıntıyı göster -
Message has been deleted
Message has been deleted

kasif

unread,
Oct 6, 2009, 2:22:07 AM10/6/09
to Dizgi projesi iletisim grubu
Güzel olmuş, C# ve Delphi için olanlarıda hazırlarsan süper olacak.

On 5 Ekim, 18:53, CrimeCoder <CrimeCo...@hotmail.com> wrote:
> C++'ın tablosu hazır:
>
> C++ |
> -------|
> --- Kopyalama ---
> memcpy --- Bellek bloğu kopyalama
> memmove --- Bellek bloğu taşıma
> strcpy --- Dizgi(string) kopyalama
> strncpy --- Dizgi(string)den karakter kopyalama
> --- Birleştirme ---
> strcat --- Dizgi(string) birleştirme
> strncat --- Dizgi(string)den karakter ekleme
> --- Karşılaştırma ---
> memcmp --- İki bellek bloğunu karşılaştırır
> strcmp --- İki Dizgi(string)yi karşılaştırır
> strcoll --- İki Dizgi(string)yi Yerel(locale) kullanarak karşılaştırır
> strncmp --- İki Dizgi(string)in seçilen karakterlerini karşılaştırır
> strxfrm --- Dizgi(string)yi Yerel(locale) kullanarak dönüştürür
> --- Arama ---
> memchr --- Bellek bloğunun içindeki karakterin yerini belirler(bulur)
> strchr --- Locate first occurrence of character in string(Buna
> İngilizcem yetmedi,Google Translatedeki sonuç ise bu = Dizisindeki
> karakteri bulun ilk yinelemesi)
> strcspn --- Dizgi(string)deki karakter kadar uzunluk alır
> strpbrk --- Dizgi(string) içindeki karakterin yerini belirler(bulur)
> strrchr --- Locate last occurrence of character in string(BunaDA
> İngilizcem yetmedi,Google Translatedeki sonuç ise bu = Dizisindeki
> karakteri bulun son gerçekleşme)
> strspn --- Dizgi(string) içindeki Karakter Setinin uzunluğunu alır
> strstr --- substring'in yerini belirler(substring bir Dizgi(string)den
> başka bir Dizgi(string)ye belirtilen kadarını kopyalar)
> strtok --- Belirteç içerisindeki Dizgi(string)yi böler
> --- Diğer ---
> memset --- Bellek bloğunu doldurur
> strerror --- Hata Mesajı Dizgi(string)sine İşaretçi(Pointer) al
> strlen --- Dizgi(string)nin uzunluğunu al
> > > > - Alıntıyı göster -- Alıntıyı gizle -
>
> > - Alıntıyı göster -- Alıntıyı gizle -
>
> - Alıntıyı göster -
Message has been deleted
Message has been deleted

kasif

unread,
Oct 6, 2009, 9:24:20 AM10/6/09
to Dizgi projesi iletisim grubu
Gül olmuş çok iyi iş çıkarmışsın.

Test ortamı olarak son keşfettiğim googletest projesini kullanalım
diyorum ama bu konularda çok bilgim yok. Ben googletesti indirdim.
minGW ile denedim ama derleyemedim. Ancak içerisinde Visual Studio
içinde proje dosyası mevcut bende onunla derledim yeni bir proje açık
denemek istedim ama link progrblemleri oluştu onları çözmeye
çalışıyorum.

On 6 Ekim, 14:49, CrimeCoder <CrimeCo...@hotmail.com> wrote:
> Delphi'de hazır.
>
> Delphi |
> -------|
> AnsiCompareStr --- Birinci parametre ile girilecek olan metni, ikinci
> parametrede aramak için kullanılan bir fonksiyondur. Şayet ilk
> parametre ikinci parametrenin içerisinde bulunuyorsa pozitif,
> bulunmuyorsa negatif, iki metin aynı ise sıfır değeri
> dönecektir.Fonksiyonun kullanımında küçük büyük harf kullanımına
> dikkat etmelisiniz. Aksi takdirde farklı sonuçlar oluşturabilirsiniz.
> AnsiCompareText --- AnsiCompareStr fonksiyonu ile aynı işi yapar.
> Yalnız bu fonksiyonun kullanımı küçük-büyük harf duyarlılığına hassas
> değildir. Yani ali ile ALI nin aynı oldukları kabul edilecektir.
> (Fonksiyondan geriye sıfır değeri dönecektir)
> AnsiDequotedStr --- İkinci Parametre ile belirtilen karakteri, birinci
> parametre ile belirtilen metnin ilk harfinde arar. Şayet bulursa ilk
> ve son karakteri atarak kalan değeri döndürür.Fonksiyonda kullanılan
> parametre değerlerinin küçük büyük harf duyarlılığının bulunduğunu
> hatırlatıp, diğer fonksiyonları incelemeye devam edeceğim.
> AnsiLeftStr --- Bu fonksiyonu kullanabilmemiz için uses satırına
> StrUtils kütüphanesini eklememiz gerekir. Bu fonksiyonda birinci
> parametreyle belirtilen metnin sol tarafından, ikinci parametreyle
> belirtilen adet kadar karakter sökülüp alınabilir. Fonksiyondan geriye
> dönecek olan değer AnsiString tipli bir veri içereceği için her hangi
> bir kontrolde direk yazdırılabilir.
> AnsiLowerCase --- Parametre değeri ile girilen metnin küçük harfe
> çevirmek için kullanılan bir fonksiyondur. Şayet parametre içerisinde
> küçük harflerden oluşan karakterlere rastlarsa onlara dokunmaz.
> AnsiMidStr --- Birinci parametre ile belirtilen metinden, ikinci
> parametredeki karakterden sonra, üçüncü parametre ile belirtilen sayı
> kadar karakteri söküp alır. Fonksiyondan geriye dönen değer AnsiString
> tipte bir veri olacağı için kolayca yazdırabilirsiniz. Uses' e
> StrUtils eklemeyi unutmayınız.
> AnsiPos --- İkinci parametre içerisinde birinci parametreyle girilen
> değeri arar. Şayet bulursa ilk karakterin kaçıncı karakterde
> bulunduğunu, bulmazsa da sıfır değerini döndürür.Şimdi bu fonksiyona
> güzel bir örnek verelim. Örneğimizde Edit kutusuna girilecek olan
> dosya adında (uzantısıyla beraber) "." karakteri aratılmakta, ardından
> dosya adı Edit2 ye, uzantısı da Edit3 e yazdırılmaktadır.
> AnsiReplaceStr --- Birinci parametre ile girilen metin içerisindeki,
> ikinci parametre ile belirtilen bölümün yerine, üçüncü parametre ile
> belirtilen metni aktarabilen bir fonksiyondur.
> AnsiReplaceText --- AnsiReplaceStr ile aynı işi yapar. Aralarında tek
> fark bu fonksiyonun harf duyarlılığının olmamalısır. Yeni aranan
> değerin var veya Var olması fonksiyon için fark etmeyecek, metni
> değiştirecektir.
> AnsiReverseString --- Parametre ile girilen metin değerini ters
> çevirere, yeni bir metin oluşturan fonksiyondur.Fonksiyondan geriye
> dönen değer AnsiString tipte bir içeriğe sahip olduğu için başlıkta
> dönüştürme yaptırmadan yazdırabilmektir.
> AnsiRightStr --- Birinci parametre ile girilen metnin sağ tarafından
> (sonundan), ikinci parametre ile belirtilen sayı kadar karakteri söküp
> alabilen bir fonksiyondur. Uses' e StrUtils eklemeyi unutmayalım.
> AnsiUpperCase --- Parametre ile girilen metni büyük harfle
> yazdırabilmek için kullanılan bir fonksiyondur.
> CompareStr --- Birinci ve ikinci parametre ile girilen metinlerin eşit
> olup olmadıklarını kontrol edebilen bir fonksiyondur. İkinci metnin
> içerisinde birinci metni arar, şayet bulursa negatif, bulmazsa
> pozitif, ikisi aynı ise sıfır değerini döndürür.Fonksiyon büyük küçük
> harfe hassas bir şekilde çalışmaktadır. Yani ilk parametrenin (metnin)
> değerini prestige (hepsi küçük) olarak değiştirirseniz, içinde yok
> kısmı işleyecektir.
> CompareText --- CompareStr fonksiyonu ile aynı işi yapar. Aralarında
> ki tek fark bu fonksiyonun harf duyarlılığının
> olmamasıdır.Fonksiyondan geriye döndürdüğü değer pozitif sayı, negatif
> sayı veya sıfırdır. Bu değeri basit bir dallanmaya tabii tutarak,
> ikinci metnin içerisinde birinci metnin (harf duyarlılığı olmadan) var
> olup olmadığını kolayca öğrenebilirsiniz. CompareStr fonksiyonu ile
> çalışma mantığı benzeştiği için burada örneklendirme yapmamayı uygun
> buldum. (Siz isterseniz aynı örneği çözebilirsiniz)
> Contact --- Parametre ile belirtilen değişken değerlerini yan yana
> yazdırmak için kullanılan bir fonksiyondur.
> Copy --- Birinci parametre ile girilen metnin içeriğinden, ikinci
> parametrede belirtilen karakterden sonra, üçüncü parametreyle
> belirtilen adet kadar karakteri söküp alabilen bir fonksiyondur.
> Fonksiyondan geriye dönen değer yine bir AnsiString veri olacağı için
> sonuç herhangi bir tip dönüştürme işlemine gerek kalmadan direk olarak
> yazdırılabilir.
> Delete --- Birinci parametre ile girilen metnin değerinden, ikinci
> parametre ile girilen karakterden sonra, üçüncü parametreyle
> belirtilen sayı kadar karakteri söküp atan bir prosedürdür. Dikkat
> edeceğiniz husus, yapılan değişikliğin metin isimli parametrenin
> değerine yansıyacağıdır.
> DupeString --- Birinci parametre ile girilen metni, ikinci parametre
> ile girilen adet kadar yan yana yazmak için kullanılan bir
> fonksiyondur.
> Insert --- Birinci parametre ile girilen metni, ikinci parametre ile
> girilen metre, üçüncü parametre de belirtilen karakterden sonra
> eklemek için kullanılan bir prosedürdür. Burada dikkat edilmesi
> gereken husus, yapılan değişikliğin ikinci parametre değerine
> yansıyacağıdır.
> LeftBStr --- Birinci parametre ile belirtilen metinden, ikinci
> parametre ile belirtilen adet kadar karakteri söküp alabilen bir
> fonksiyondur.Daha öncede aynı işlemi yapan fonksiyonu göstermiştim.
> Başında Ansi olan fonksiyon ve prosedürlerin kullanabileceği karakter
> daha fazladır. Ama tercih tamamen size kalmıştır. İstediğiniz
> fonksiyonu veya prosedürü kullanabilirsiniz.
> Length --- Parametre ile belirtilen metnin kaç karakterden oluştuğunu
> hesaplayabilmek için kullanılan bir fonksiyondur.Fonksiyondan geriye
> dönen değer tam sayı tipli olacağı için, form başlığına tip dönüştürme
> fonksiyonu sayesinde yazdırılabilmektedir.
> LowerCase --- AnsiLowerCase (daha önce izah edildi) fonksiyonunun
> yaptığı işi yapar. (Ansi kütüphanesinin daha zengin olduğunu
> hatırlatalım) Parametre olarak girilen metni küçük harfe dönüştürmek
> için kullanılır.
> MidStr --- Birinci parametre ile belirtilen metinden, ikinci parametre
> ile girilen başlangıç başlangıç karakterinden başlayarak, üçüncü
> parametre ile girilen adet kadar karakteri parçalayıp almak için
> kullanılan bir fonksiyondur.
> Pos --- Birinci parametre ile girilen değer ile ikinci parametre ile
> girilen değeri karşılaştırmak için kullanılan bir fonksiyondur. Şayet
> iki parametre farklı değerler içeriyorsa (içinde bulunmuyor ise) 0
> olacaktır.
> RightStr --- Birinci parametre ile belirtilen metnin sonundan, ikinci
> parametre ile belirtilen adet kadar karakteri söküp almak için
> kullanılan fonksiyondur. (AnsiRightStr fonksiyonunun yaptığı işi
> yapar)
> SetLength --- Birinci parametre ile belirtilen metinden, ikinci
> parametre ile belirtilen adet kadar karakteri söküp alabilen bir
> prosedürdür.
> SetString --- Birinci parametre ile belirtilen metne, ikinci parametre
> ile belirtilen katarın, üçüncü parametre ile belirtilen adet kadar
> karakterini (soldan) aktarabilen bir prosedürdür.
> Str --- Birinci parametre ile girilen sayıyı (ondalıklı veya tam
> sayı), ikinci parametre ile girilen metne aktarmak için kullanılan bir
> prosedürdür. İlk parametre parasal tipte bir değişkende olabilir.
>
> StringOfChar --- Birinci parametre ile belirtilen karakteri, ikinci
> parametre ile belirtilen adet kadar yan yana yazdırmak için kullanılan
> bir fonksiyondur.Görsel diller çıkmadan önce çok kullanılan (hakikaten
> işe yarardı) bir fonksiyondu. (Pascal, C vs.) Bilhassa başlık ve
> paragraf altlarını çizdirmek için kullanılırdı.Biliyorum hepiniz Edit
> kutusuna girilen karakteri yan yana yazdırmayı deneyeceksiniz, ama
> olmayacak. Unutmayınız ki Char tipli değişkenlerde AnsiString tipli
> veriler aynı değildir. Bu tip durumlarda izleyeceğiniz yol daha
> farklıdır.
> StringReplace --- Birinci parametre ile verilen metnin içerisinde,
> ikinci parametre ile verilen kısmı, üçüncü parametre ile verilen
> içerikle değiştirmek için kullanılan bir fonksiyondur.
> StuffString --- StringReplace fonksiyonuna benzer iş görmektedir.
> Aralarında ki fark, değiştirilecek olan kısmın burada karakter sayısı
> ile belirlenmesidir.
> Trim --- Parametre ile girilen metnin sol ve sağındaki tüm boşlukları
> atmak için kullanılan bir fonksiyondur.Bilhassa yanlışlık ile space
> tuşuna basılması durumunda oluşabilecek olan hataları engellemek
> amacıyla kullanılan bir fonksiyondur. Bu fonksiyondan dolayı kelimeler
> arasında bulunan boşluklar hiçbir değişikliğe uğramazlar.
> TrimLeft --- Parametre ile girilen metnin sol tarafında bulunan
> boşlukları atmak için kullanılan bir fonksiyondur. Sağ kısımda bulunan
> boşluklara dokunmaz.
> TrimRight --- Parametre ile girilen metnin sağ tarafında bulunan
> boşlukları atmak için kullanılan bir fonksiyondur. Sol kısımda bulunan
> boşluklara dokunmaz.
> UpperCase --- Parametre ile girilen metindeki karakterlerin tamamını
> büyük harfe çevirmek için kullanılan fonksiyondur. Şayet metnin
> içerisinde büyük harfe rastlarsa onlara dokunmayacaktır. Daha önce
> örneklendirildiği için tekrar değinilmeyecektir.
> WrapText --- Birinci parametrede belirleyeceğiniz metni, üçüncü
> parametrede belirleyeceğiniz karakterlerden ...
>
> tamamını oku »
Message has been deleted

kasif

unread,
Oct 6, 2009, 10:37:02 AM10/6/09
to Dizgi projesi iletisim grubu
Teşekkürler biraz zor bir iş olduğunu kabul etmeliyim ama çözebilirsem
çok güzel olucak.
Sende denemek istersen projenin adresi şu : http://code.google.com/p/googletest/

On 6 Ekim, 17:08, CrimeCoder <CrimeCo...@hotmail.com> wrote:
> kolay gelsin.
> ...
>
> tamamını oku »

kasif

unread,
Oct 7, 2009, 3:51:25 AM10/7/09
to Dizgi projesi iletisim grubu
C# için olan string fonksiyonlarınıda bekliyorum :). Bu arada C++ çok
az fonksiyon varmış, eksik var mı diye tekrar kontrol eder misin?
> ...
>
> tamamını oku »
Message has been deleted

kasif

unread,
Oct 23, 2009, 11:03:17 AM10/23/09
to Dizgi projesi iletisim grubu
Türkçe karakterler için bir süredir uğraşmama rağmen kullanışlı bir
çözüm bulamadım. Yereller, geniş karakterler, unicode gibi birkaç
farklı konu hakkında bilgi sahibi olmak gerekiyor. Bunun yanında
kullandığım derleyici mingw-g++ geniş karakterlere (wchar.h) tam
destek vermiyor. Ayrıca proje durma noktasına geldiği için şimdilik
Türkçe karakter desteğini ikinci plana alarak string sınıfı geliştirme
amacımıza odaklanmak niyetindeyim.

On 8 Ekim, 14:25, CrimeCoder <CrimeCo...@hotmail.com> wrote:
> ok
> ...
>
> tamamını oku »

Murat ÇAKMAK

unread,
Nov 6, 2009, 8:20:28 AM11/6/09
to Dizgi projesi iletisim grubu
Merhaba,
CrimeCoder canım, seni tebrik etmek istiyorum. Her ne kadar
yazışmaların altıncı sınıf öğrencisine benzemese de abilerini
kandırmayacagını düşünüyorum:)
Ben Elek- Elektronik mühendisiyim. Elektronik ve sistem programlama
açısından bi isteğin olursa yardımcı olmaktan mutluluk duyarım.

Konuya gelelim. Bence C++'ın standart fonksiyonlarında diretip C++'ın
avantajlarını kaçırmamak lazım . Açıkcası bu fonksiyonlar C++ değil C
dilinden gelen fonksiyonlar. C++ 'ın çok güzel ve yetenekli araçları
var ve ek olarak Standart Kütüphanesi STL(Standart Template Library)
bulunmakta.Bence bunlar da değerlendirilmeli. Yoksa C ile yazmaktan
hiç bir farkı olmayacak.
Reply all
Reply to author
Forward
Message has been deleted
0 new messages