Indy ile Tcp/Ip Programlama Türkçe Karakter Problemi ÇÖZÜLDÜ

C, C++ ve C++ Builder ile ilgili konuları buraya yazabilirsiniz.
Cevapla
theSinan

Indy ile Tcp/Ip Programlama Türkçe Karakter Problemi ÇÖZÜLDÜ

Mesaj gönderen theSinan »

s.a
Test Projemde

adet Form var
Form1 (Server)
Form2(Client)

Form1 de ındy bileşenlerinden
1 Adet TIdTcpServer
bir adet button
bir adet Edit koydum
bir adet ListBox

Form2(Client) ındy bileşenlerinden
1 Adet TIdTcpClient
bir adet button
bir adet Edit koydum
bir adet ListBox

client ve server Porlarını Host iplerini ayarladım
bilgi gönderirken Türkçe Karakterler soru işareti (?) olarak gözüküyor neden olabilir acaba
En son theSinan tarafından 01 Nis 2014 11:34 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Re: Indy ile Tcp/Ip Programlamada Türkçe Karakter Problemi

Mesaj gönderen mcihad »

Delphi 7 mi kullanıyorsun?
Bize iyilik yaraşır.
theSinan

Re: Indy ile Tcp/Ip Programlamada Türkçe Karakter Problemi

Mesaj gönderen theSinan »

XE5 kullanıyorum
INDY versiyonu 10.6.0.5040
türkçe karakter için bir ayar yapmam gerekiyor mu
nguzeller
Üye
Mesajlar: 109
Kayıt: 19 Oca 2004 03:29

Re: Indy ile Tcp/Ip Programlamada Türkçe Karakter Problemi

Mesaj gönderen nguzeller »

uses IdGlobal ekle

ilk bağlantı kurduğunda
IdTCPClient1.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; fakli seçeneklerde var.

aynı işlemi server tarafında da yapman lazım
theSinan

Re: Indy ile Tcp/Ip Programlamada Türkçe Karakter Problemi

Mesaj gönderen theSinan »

IdTCPClient1.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; bu şekilde Hata veriyor

Hata mesajı
[bcc32 Error] Unit1.cpp(165): E2034 Cannot convert '_di_IIdTextEncoding()' to '_di_IIdTextEncoding'
Full parser context
Unit1.cpp(160): parsing: void BilgiGonder(TIdContext *)

/----------------------------------------------------

böyle
AContext->IOHandler->DefStringEncoding = enUTF8;

yazınca hata vermiyor
ancak türkçe karakterleri gönderdikten Sonra
Gönderdiğim kelimeyi Gösteriyor ancak Türkçe İçren Kelimenin Tamamı görüntülenmiyor
Sonra Donuyor
çünkü ikinci Mesajı Gönderdiğimde Almıyor
ancak içerisine türkçe harf yazmadan
istedeğim kadar mesaj gönderebiliyorum

ancak
nguzeller
Üye
Mesajlar: 109
Kayıt: 19 Oca 2004 03:29

Re: Indy ile Tcp/Ip Programlamada Türkçe Karakter Problemi

Mesaj gönderen nguzeller »

uses IdGlobal
eklediniz mi.
theSinan

Re: Indy ile Tcp/Ip Programlamada Türkçe Karakter Problemi

Mesaj gönderen theSinan »

Sorunun Neden Kaynaklandığını Buldum Ama Çözümü ÇÖZÜMÜDE
Yazma Yaparken
AContext->Connection->IOHandler->Write(Form1->Edit4->Text.Length());
AContext->Connection->IOHandler->Write(Form1->Edit4->Text);
Okuma Yaparken
Int iMessageUzunluk = AContext->Connection->Socket->ReadLongInt();
String Message = AContext->Connection->Socket->ReadString(iMessageUzunluk);
diye Okumaya çalışıyorum
Türkçe Karakterleri sayarken String Uzunluğunu aldığımdan String uzunluğu kadar sayıyor
ancak
Türkçe Karakterleri Okurken Türkçe Karakterleri 2 saydığından tıkanıyor
çözümü

yazarken Sonuna Terminatör Ektedir yani Sonlandırıcı
AContext->Connection->IOHandler->WriteLn(Form1->Edit4->Text+"|x|");

okurken eklediğim sonlandırıcıya kadar Okuyorum Sorun Düzeldi
Form1->ChatClient->IOHandler->ReadLn("|x|");

Yardımlarınız için Teşekkürler
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Indy ile Tcp/Ip Programlama Türkçe Karakter Problemi ÇÖZ

Mesaj gönderen PROGRAMADOR »

verileri byte olarak alsanız ve byte olarak gönderseniz hiç böyle sorunlarla karşılaşmazsınız. Ayrıca widestring olarak veri gönderdiğinizde length alırken herhangi bir sorun olmaz.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Cevapla