ClientDataSet ve XMLTransformProvider İle XML Okumak
ClientDataSet ve XMLTransformProvider İle XML Okumak
Merhabalar yukarıdaki yazılanları okudum çok güzel bir çalışma olmuş.
Benim problemim Türkçe karakterle ilgili. "C:\v\veri.xml" adresindeki datayı XMLMApper'ı da kullanarak XMLTransformProvider1, ClientDataSet1, DBGrid1 ve DataSource1 yardımı ile DBGrid1 içerisinde verileri gösteriyorum. XMLMapper da .xtr dosyasını hazırladıktan sonra "Create and test transformation" tuşuna tıkladığımda türkçe karakterler düzgün gözüküyor. Fakat DBGrid1 içerisinde türkçe karakterlerde sorun çıkıyor. Bunu çözmek için "veri.xml" dosyasını notped de açarak ilk satırını aşağıdaki şekillerde değiştirip
<?xml version="1.0" encoding="iso-8859-9"?>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="windows-1254"?>
farklı kaydetten kodlamasını da ona göre değiştirip kaydetmeme rağmen sonuç değişmedi yardımlarınızı bekliyorum.
Benim problemim Türkçe karakterle ilgili. "C:\v\veri.xml" adresindeki datayı XMLMApper'ı da kullanarak XMLTransformProvider1, ClientDataSet1, DBGrid1 ve DataSource1 yardımı ile DBGrid1 içerisinde verileri gösteriyorum. XMLMapper da .xtr dosyasını hazırladıktan sonra "Create and test transformation" tuşuna tıkladığımda türkçe karakterler düzgün gözüküyor. Fakat DBGrid1 içerisinde türkçe karakterlerde sorun çıkıyor. Bunu çözmek için "veri.xml" dosyasını notped de açarak ilk satırını aşağıdaki şekillerde değiştirip
<?xml version="1.0" encoding="iso-8859-9"?>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="windows-1254"?>
farklı kaydetten kodlamasını da ona göre değiştirip kaydetmeme rağmen sonuç değişmedi yardımlarınızı bekliyorum.
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
merhaba ,
Delphi Xe ve Xe2 de yaptığım denemelerde Türkçe karakter sorununu yaşadım ve sonuca varamadım fakat öncesi herhangi bir versiyonda (şuan test ettiğim D2007) türkçe karakter sorunu yaşamadım. Unicode konusuyla ilgili olabilir.
Delphi Xe ve Xe2 de yaptığım denemelerde Türkçe karakter sorununu yaşadım ve sonuca varamadım fakat öncesi herhangi bir versiyonda (şuan test ettiğim D2007) türkçe karakter sorunu yaşamadım. Unicode konusuyla ilgili olabilir.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
Utf-8 dışında bir kodlama kullanmanıza gerek yok. Notepad++ (ücretsiz) gibi programlar kullanarak dosyası UTF-8 olarak kaydedin ve BOM bilgisi eklemeyin. Normal notepad nasıl kaydediyor bilmiyorum.
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
Volkan Bey
dediğiniz gibi Delphi XE2 kullanıyorum. Türkçe karakter sorununu çözemedim. Sayın mkysoft dosyayı UTF-8 olarak kayıt ettim ayrıca kodlamadan da UTF-8 i seçtim ama sonuç değişmedi. çözebilirsem sizlerle de paylaşırım.
dediğiniz gibi Delphi XE2 kullanıyorum. Türkçe karakter sorununu çözemedim. Sayın mkysoft dosyayı UTF-8 olarak kayıt ettim ayrıca kodlamadan da UTF-8 i seçtim ama sonuç değişmedi. çözebilirsem sizlerle de paylaşırım.
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
merhaba ,
aşağıdaki iki linkte konuyla ilgili çözümler yazılmış test etme vaktim olmadı işinize yarayabilir.
http://www.experts-exchange.com/Program ... 00416.html
https://forums.embarcadero.com/thread.j ... adID=65522
aşağıdaki iki linkte konuyla ilgili çözümler yazılmış test etme vaktim olmadı işinize yarayabilir.
http://www.experts-exchange.com/Program ... 00416.html
https://forums.embarcadero.com/thread.j ... adID=65522
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
Volkan Bey,
verdiğiniz https://forums.embarcadero.com/thread.j ... adID=65522 linkteki bilgiler ile sorunum çözüldü.
Öncelikle aşağıdaki procedure'ü forma tanıtıyoruz.
Sonra ClientDataSet1'in After open olayına aşağıdaki kodu yazıyoruz.
Yukarıdaki kodun altınada aşağıdaki procedure'ü ekliyoruz. Ve sorun ortadan kalkıyor.
Benim veri tabanımda bütün karakterler büyük harf olduğu için hiçbir sorun yaşamadım. Fakat verilen linkten anladığım kadarı ile bazı küçük harflerde sorun çıkabilir. Onunda çözümü verilen linkte vardır.
İlgilenen tüm arkadaşlarıma teşekkür ederim.
verdiğiniz https://forums.embarcadero.com/thread.j ... adID=65522 linkteki bilgiler ile sorunum çözüldü.
Öncelikle aşağıdaki procedure'ü forma tanıtıyoruz.
Kod: Tümünü seç
Procedure OnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
Kod: Tümünü seç
procedure TForm2.ClientDataSet1AfterOpen(DataSet: TDataSet);
var
i:integer;
f:TField;
begin
for i:=0 to dataset.fields.count-1 do
begin
f:=dataset.fields[i];
f.ongettext:=Self.OnGetText;
end;
end;
Kod: Tümünü seç
Procedure TForm2.OnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
Begin
text:=Utf8ToString(sender.asString);
End;
İlgilenen tüm arkadaşlarıma teşekkür ederim.
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
Yaptığım denemelerde yukarıdaki çözümün sorunun %95 ini hallettiğini gördüm.Örneğin alanlardaki karakter sayısı 16 yı geçtiğinde sorun oldu yada bazı karakterlerde anlamadığım problemler oluştu. Aynı linkte aşağılarda verilen bir başka çözüm yolu ise bu problemleride çözdü.
"C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\internet\Xmlxform.pas" buradan "Xmlxform.pas" dosyasını kopyalayıp proje klasörümüze yapıştırıyoruz. Burada "Xmlxform.pas" dosyasını not defterinde açıp aşağıdaki satırı buluyoruz.
"Result := Datasnap.DSIntf.StringToVariantArray(Utf8String(S));"
Yukarıdaki satırı aşağıdaki şekilde değiştiriyoruz.
"Result := Datasnap.DSIntf.StringToVariantArray(AnsiString(S));"
Kayıt edip kapatıyoruz. Türkçe karakter problemi ortadan kalkıyor.
<?xml version="1.0" encoding="iso-8859-9"?>
<?xml version="1.0" encoding="UTF-8"?>
xml dosyamızın ilk satırı yukarıdaki her iki şekidede olsa türkçe karakter problemi yaşamadım.
"C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\internet\Xmlxform.pas" buradan "Xmlxform.pas" dosyasını kopyalayıp proje klasörümüze yapıştırıyoruz. Burada "Xmlxform.pas" dosyasını not defterinde açıp aşağıdaki satırı buluyoruz.
"Result := Datasnap.DSIntf.StringToVariantArray(Utf8String(S));"
Yukarıdaki satırı aşağıdaki şekilde değiştiriyoruz.
"Result := Datasnap.DSIntf.StringToVariantArray(AnsiString(S));"
Kayıt edip kapatıyoruz. Türkçe karakter problemi ortadan kalkıyor.
<?xml version="1.0" encoding="iso-8859-9"?>
<?xml version="1.0" encoding="UTF-8"?>
xml dosyamızın ilk satırı yukarıdaki her iki şekidede olsa türkçe karakter problemi yaşamadım.
-
- Üye
- Mesajlar: 5
- Kayıt: 24 Ara 2013 05:26
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
İyi günler
Çok güzel bir çalışma basit bir xml dosyasından veri okumam gerekiyordu yazdıklarınız sayesinde yaptım teşekkürler
Şimdi başka bir sorunum var
E fatura xml dosyasından veri okuyup başka bir xml (farklı bir formatta) dosyasına yazmak istiyorum
xmp mapper ile efatura xml yi açıp select all children veya all dediğimde
ve sonrasında xmldatapacket oluştur dediğimde Bu adda ":" karakteri kullanılamaz diye uyarı alıyorum
yardım lütfen
Çok güzel bir çalışma basit bir xml dosyasından veri okumam gerekiyordu yazdıklarınız sayesinde yaptım teşekkürler
Şimdi başka bir sorunum var
E fatura xml dosyasından veri okuyup başka bir xml (farklı bir formatta) dosyasına yazmak istiyorum
xmp mapper ile efatura xml yi açıp select all children veya all dediğimde
ve sonrasında xmldatapacket oluştur dediğimde Bu adda ":" karakteri kullanılamaz diye uyarı alıyorum
yardım lütfen
Re: ClientDataSet ve XMLTransformProvider İle XML Okumak
ben delphi 10.2 kullanıyorum aö nün paylaşımında bahsettiği olayı çözdüm fakat kelime kırpıyor onu yapamadım xmlxform.pas dosyasını bulamadım sürümden kaynaklı mı acaba yardımcı olabilirmisiniz.
Vurulup Tertemiz Alnından uzanmış Yatıyor
Bir Hilal Uğruna Ya Rab, Ne Güneşler Batıyor!
Bir Hilal Uğruna Ya Rab, Ne Güneşler Batıyor!