XML dosya oluşturma ve Base64 çevirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
XML dosya oluşturma ve Base64 çevirme
Merhaba Arkadaşlar,
XML dosya oluşturma ve oluşturulan bu dosyanın base64 ile şifrelenmiş dosyasını oluşturmaya ihtiyacım var. Sitede bu işin nasıl yapılacağı ile ilgili net bir bilgiye ulaşamadım yada yorumlayamadım. Xmldocument veya farklı hiçbir component kullanmadan kayıtları database'den okuyup memo alana bilgileri satır satır ilgili tag ları kendim açıp kapatarak yazıyorum. Sonra bu dosyayı xml uzantılı olarak kaydediyorum. Oluşan dosyayı xml olarak browser'da açabiliyorum fakat türkçe karakterlerde hata veriyor, hatayı aşağıya yapıştırdım. Acil olarak bu konuda bana yardımcı olacak arkadaşlara minnettar olacağım. Xml dosya nasıl oluşturabilirim ve oluşturduğum bu dosyayı base64 formatında nasıl şifrelerim ? Şimdiden çok teşekkür ediyorum.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
XML sayfası görüntülenemiyor
XML girişi XSL stil sayfası kullanılarak görüntülenemez. Lütfen hatayı düzeltin ve Yinele düğmesini tıklatın veya daha sonra yeniden deneyin.
Metin içeriğinde geçersiz karakter bulundu.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
XML dosya oluşturma ve oluşturulan bu dosyanın base64 ile şifrelenmiş dosyasını oluşturmaya ihtiyacım var. Sitede bu işin nasıl yapılacağı ile ilgili net bir bilgiye ulaşamadım yada yorumlayamadım. Xmldocument veya farklı hiçbir component kullanmadan kayıtları database'den okuyup memo alana bilgileri satır satır ilgili tag ları kendim açıp kapatarak yazıyorum. Sonra bu dosyayı xml uzantılı olarak kaydediyorum. Oluşan dosyayı xml olarak browser'da açabiliyorum fakat türkçe karakterlerde hata veriyor, hatayı aşağıya yapıştırdım. Acil olarak bu konuda bana yardımcı olacak arkadaşlara minnettar olacağım. Xml dosya nasıl oluşturabilirim ve oluşturduğum bu dosyayı base64 formatında nasıl şifrelerim ? Şimdiden çok teşekkür ediyorum.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
XML sayfası görüntülenemiyor
XML girişi XSL stil sayfası kullanılarak görüntülenemez. Lütfen hatayı düzeltin ve Yinele düğmesini tıklatın veya daha sonra yeniden deneyin.
Metin içeriğinde geçersiz karakter bulundu.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Re: XML dosya oluşturma ve Base64 çevirme
Merhaba,
Hangi sürüm Delphi kullandığınızı bildirmemişsiniz. Oluşturulacak XML dosyası içeriği ile ilgili hiç bilgi vermemişsiniz. XML dosyaları oldukça karmaşık olabiliyorlar. Sizin ihtiyaç duyduğunuz yapıyı bilmeden verilecek örnekler çok doğru olmayacaktır.
Delphi 7 için şu kaynaktaki örneği inceleyebilirsiniz: http://stackoverflow.com/questions/8354 ... -in-delphi
Delphi 10.1 için şu kaynaktaki örneği inceleyebilirsiniz: http://docwiki.embarcadero.com/CodeExam ... e_(Delphi)
Base64 ile ilgili olarak:
Delphi 7 için EncdDecd unit içindeki EncodeString(), DecodeString(), UTF8Encode(), UTF8Decode() fonksiyonlarını kullanabilirsiniz.
Delphi 10.1 için Soap.EncdDecd unit içindeki aynı fonksiyonları kullanabilirsiniz.
Burada dikkat etmeniz gereken konu bu fonksiyonların AnsiString türünde değer çevirdikleridir. Bunu sizin uygun şekilde farklı string türlerine çevirmeniz gerekecektir. Delphi 10.1 için verilmiş basit bir örnek şu şekilde olabilir:
Base64 ile ilgili olarak dikkat edilmesi gereken başka bir konu ise her 75 karakterde bir bu Encode eden fonksiyon CRLF (ENTER YENİ SATIR karakterleri) ekleyecektir. Eğer göndermeye çalıştığınız bilgiler bundan daha uzun ve arada enter karakteri olmaması gerekiyor ise bu konuyu da özellikle incelemenizde fayda var.
Browserlar dosyaların içeriklerini UTF-8 olarak gösterirler. Eğer sizin oluşturduğunuz dosya içeriği Ansi veya Unicode ise browser içinde türkçe karakterlerin düzgün gözükmemesi normaldir. Bu noktada dosya ouştururken Encoding seçeneğini doğru bir şekilde seçmeniz gerekecektir.
Biraz daha detay bilgi ve mümkünse oluşturulması gereken veri ve örnek kod paylaşabilirseniz sizin kullanımınıza özel örnekler verilebilir.
Hangi sürüm Delphi kullandığınızı bildirmemişsiniz. Oluşturulacak XML dosyası içeriği ile ilgili hiç bilgi vermemişsiniz. XML dosyaları oldukça karmaşık olabiliyorlar. Sizin ihtiyaç duyduğunuz yapıyı bilmeden verilecek örnekler çok doğru olmayacaktır.
Delphi 7 için şu kaynaktaki örneği inceleyebilirsiniz: http://stackoverflow.com/questions/8354 ... -in-delphi
Delphi 10.1 için şu kaynaktaki örneği inceleyebilirsiniz: http://docwiki.embarcadero.com/CodeExam ... e_(Delphi)
Base64 ile ilgili olarak:
Delphi 7 için EncdDecd unit içindeki EncodeString(), DecodeString(), UTF8Encode(), UTF8Decode() fonksiyonlarını kullanabilirsiniz.
Delphi 10.1 için Soap.EncdDecd unit içindeki aynı fonksiyonları kullanabilirsiniz.
Burada dikkat etmeniz gereken konu bu fonksiyonların AnsiString türünde değer çevirdikleridir. Bunu sizin uygun şekilde farklı string türlerine çevirmeniz gerekecektir. Delphi 10.1 için verilmiş basit bir örnek şu şekilde olabilir:
Kod: Tümünü seç
uses
Soap.EncdDecd;
function GetBase64(const Value: string): string;
begin
Result := string(EncodeBase64(Pointer(Value), Length(Value)));
end;
Browserlar dosyaların içeriklerini UTF-8 olarak gösterirler. Eğer sizin oluşturduğunuz dosya içeriği Ansi veya Unicode ise browser içinde türkçe karakterlerin düzgün gözükmemesi normaldir. Bu noktada dosya ouştururken Encoding seçeneğini doğru bir şekilde seçmeniz gerekecektir.
Biraz daha detay bilgi ve mümkünse oluşturulması gereken veri ve örnek kod paylaşabilirseniz sizin kullanımınıza özel örnekler verilebilir.
Re: XML dosya oluşturma ve Base64 çevirme
Merhaba Ertank,
Haklısınız bilgileri eksik vermişim ama yine de verdiğiniz linkler xml oluşturmam için yardımcı oldu. Verdiğiniz linklerde ki kodlardan faydalanarak kendi kodumu tamamladım, çok teşekkür ediyorum. Şu an xml dosya oluşturma problemim kalmadı, istediğim gibi oldu. Türkçe problemi de kalmadı. Bu arada Delphi 7 kullanıyorum. Base64 ile ilgili de delphi 7 için biraz daha detaylı anlatan bir link veya örnek bir kod verebilirseniz çok sevinirim. Kolay gelsin.
Haklısınız bilgileri eksik vermişim ama yine de verdiğiniz linkler xml oluşturmam için yardımcı oldu. Verdiğiniz linklerde ki kodlardan faydalanarak kendi kodumu tamamladım, çok teşekkür ediyorum. Şu an xml dosya oluşturma problemim kalmadı, istediğim gibi oldu. Türkçe problemi de kalmadı. Bu arada Delphi 7 kullanıyorum. Base64 ile ilgili de delphi 7 için biraz daha detaylı anlatan bir link veya örnek bir kod verebilirseniz çok sevinirim. Kolay gelsin.
Re: XML dosya oluşturma ve Base64 çevirme
Eski Delphi sürümlerinde (Delphi 7 dahil) UTF8Encode() ve UTF8Decode() fonksiyonları bozuktur. 3 byte üzerindeki sıralı bilgileri doğru bir şekilde işleyemiyor. Bu sorun Delphi 2009'da çözülmüştür.
Eğer UTF8 kullanıyor iseniz farklı bir kaynak kullanarak dönüşümler yapmanızda fayda var. Benim şahsi önerim mORMot projesi olacaktır.
https://synopse.info/fossil/wiki/Synopse+OpenSource
Şifreleme ve json konularında da faydalanabileceğiniz çok geniş bir kütüphaneye sahiptir.
Base64 ile ilgili aşağıdaki Delphi 7 örneğinin işinizi görmesi gerekli diye düşünüyorum.
Eğer UTF8 kullanıyor iseniz farklı bir kaynak kullanarak dönüşümler yapmanızda fayda var. Benim şahsi önerim mORMot projesi olacaktır.
https://synopse.info/fossil/wiki/Synopse+OpenSource
Şifreleme ve json konularında da faydalanabileceğiniz çok geniş bir kütüphaneye sahiptir.
Base64 ile ilgili aşağıdaki Delphi 7 örneğinin işinizi görmesi gerekli diye düşünüyorum.
Kod: Tümünü seç
uses
EncdDecd;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := EncodeString(Edit1.Text); // Base64 yap
Edit3.Text := DecodeString(Edit2.Text); // Normale çevir
end;
Re: XML dosya oluşturma ve Base64 çevirme
Tekrar Merhaba,
Aşağıda ki kodu kullanarak xml dosyası oluşturabiliyorum artık, fakat oluşan dosyaya encoding=''UTF-8'' bilgisi gelmiyor. Aşağıda oluşan xml dosyasının ilk satırlarını görebilirsiniz. xml dosyasına encoding bilgisini nasıl getirebilirim ? Yardımlarınızı rica ediyorum.
----------------- Oluşan XML Dosyası ------------------
<?xml version="1.0" standalone="no" ?>
- <Faturalar>
- <Fatura>
- <FaturaBaslikBilgisi>
------------------------------------------------------------
Function xmlolustur(FIS_NO:double):double;
var xmlyaz,XMLDOSYASI: String;
var LineId: integer;
var StringList: TStringList;
var XML : IXmlDocument;
begin
StringList := TStringList.Create;
StringList.Add('<?xml version=''1.0'' encoding=''UTF-8'' standalone=''no''?>');
StringList.Add('<Faturalar>');
StringList.Add('<Fatura>');
StringList.Add('<FaturaBaslikBilgisi>');
StringList.Add('<VergiDairesi>'+VERGI_DA+'</VergiDairesi>');
StringList.Add('<VergiKimlikNo>'+VERGI_NO+'</VergiKimlikNo>');
StringList.Add('<FirmaAdi>'+HESAP_ADI+'</FirmaAdi>');
StringList.Add('<Adres>');
StringList.Add('<Ulke>'+ULKE+'</Ulke>');
StringList.Add('<Sehir>'+IL+'</Sehir>');
StringList.Add('<Ilce>'+ILCE+'</Ilce>');
StringList.Add('<CaddeSokak>'+CADDE_SOKAK+'</CaddeSokak>');
StringList.Add('<BinaAdi>'+BINA_ADI+'</BinaAdi>');
StringList.Add('<BinaNo>'+BINA_NO+'</BinaNo>');
StringList.Add('<PostaKodu>'+POSTA_KODU+'</PostaKodu>');
StringList.Add('</Adres>');
StringList.Add('<Iletisim>');
StringList.Add('<Telefon>'+TELEFON+'</Telefon>');
StringList.Add('<fax>'+FAX+'</fax>');
StringList.Add('<Mail>'+EMAIL+'</Mail>');
StringList.Add('</Iletisim>');
StringList.Add('<FaturaTarihi>'+DateToStr(FATURA_TARIHI)+'</FaturaTarihi>');
StringList.Add('</FaturaBaslikBilgisi>');
StringList.Add('<FaturaSatirlari>');
StringList.Add('<StokAdi>'+STOK_ADI+'</StokAdi>');
StringList.Add('<Birim>'+BIRIM+'</Birim>');
StringList.Add('<Miktar>'+FloatToStr(MIKTAR)+'</Miktar>');
StringList.Add('<ParaBirimi>TRY</ParaBirimi>');
StringList.Add('<Tutar>'+FloatToStr(ARA_TOPLAM)+'</Tutar>');
StringList.Add('</FaturaSatirlari>');
StringList.Add('</Fatura>');
StringList.Add('</Faturalar>');
ForceDirectories(xmldir);
if IOResult <> 0 then
showmessage('DİKKAT... Xml dosyası oluşturulamadı.')
else
begin
XMLDOSYASI:= 'Fatura'+IntToStr(FIS_NO)+'.xml';
XML := NewXMLDocument;
XML.Version := '1.0';
XML.Encoding:= 'UTF-8';
XML:= LoadXMLData(FormatXMLData(StringList.Text));
XML.SaveToFile(F_ANAMENU.xmldir+XMLDOSYASI);
showmessage(XMLDOSYASI+' dosyası başarı ile oluşturuldu.');
end;
end;
Aşağıda ki kodu kullanarak xml dosyası oluşturabiliyorum artık, fakat oluşan dosyaya encoding=''UTF-8'' bilgisi gelmiyor. Aşağıda oluşan xml dosyasının ilk satırlarını görebilirsiniz. xml dosyasına encoding bilgisini nasıl getirebilirim ? Yardımlarınızı rica ediyorum.
----------------- Oluşan XML Dosyası ------------------
<?xml version="1.0" standalone="no" ?>
- <Faturalar>
- <Fatura>
- <FaturaBaslikBilgisi>
------------------------------------------------------------
Function xmlolustur(FIS_NO:double):double;
var xmlyaz,XMLDOSYASI: String;
var LineId: integer;
var StringList: TStringList;
var XML : IXmlDocument;
begin
StringList := TStringList.Create;
StringList.Add('<?xml version=''1.0'' encoding=''UTF-8'' standalone=''no''?>');
StringList.Add('<Faturalar>');
StringList.Add('<Fatura>');
StringList.Add('<FaturaBaslikBilgisi>');
StringList.Add('<VergiDairesi>'+VERGI_DA+'</VergiDairesi>');
StringList.Add('<VergiKimlikNo>'+VERGI_NO+'</VergiKimlikNo>');
StringList.Add('<FirmaAdi>'+HESAP_ADI+'</FirmaAdi>');
StringList.Add('<Adres>');
StringList.Add('<Ulke>'+ULKE+'</Ulke>');
StringList.Add('<Sehir>'+IL+'</Sehir>');
StringList.Add('<Ilce>'+ILCE+'</Ilce>');
StringList.Add('<CaddeSokak>'+CADDE_SOKAK+'</CaddeSokak>');
StringList.Add('<BinaAdi>'+BINA_ADI+'</BinaAdi>');
StringList.Add('<BinaNo>'+BINA_NO+'</BinaNo>');
StringList.Add('<PostaKodu>'+POSTA_KODU+'</PostaKodu>');
StringList.Add('</Adres>');
StringList.Add('<Iletisim>');
StringList.Add('<Telefon>'+TELEFON+'</Telefon>');
StringList.Add('<fax>'+FAX+'</fax>');
StringList.Add('<Mail>'+EMAIL+'</Mail>');
StringList.Add('</Iletisim>');
StringList.Add('<FaturaTarihi>'+DateToStr(FATURA_TARIHI)+'</FaturaTarihi>');
StringList.Add('</FaturaBaslikBilgisi>');
StringList.Add('<FaturaSatirlari>');
StringList.Add('<StokAdi>'+STOK_ADI+'</StokAdi>');
StringList.Add('<Birim>'+BIRIM+'</Birim>');
StringList.Add('<Miktar>'+FloatToStr(MIKTAR)+'</Miktar>');
StringList.Add('<ParaBirimi>TRY</ParaBirimi>');
StringList.Add('<Tutar>'+FloatToStr(ARA_TOPLAM)+'</Tutar>');
StringList.Add('</FaturaSatirlari>');
StringList.Add('</Fatura>');
StringList.Add('</Faturalar>');
ForceDirectories(xmldir);
if IOResult <> 0 then
showmessage('DİKKAT... Xml dosyası oluşturulamadı.')
else
begin
XMLDOSYASI:= 'Fatura'+IntToStr(FIS_NO)+'.xml';
XML := NewXMLDocument;
XML.Version := '1.0';
XML.Encoding:= 'UTF-8';
XML:= LoadXMLData(FormatXMLData(StringList.Text));
XML.SaveToFile(F_ANAMENU.xmldir+XMLDOSYASI);
showmessage(XMLDOSYASI+' dosyası başarı ile oluşturuldu.');
end;
end;
Re: XML dosya oluşturma ve Base64 çevirme
Gönderdiğim örnek üzerinden XML dosyası oluşturmamışsınız. Yine string değerleri kullanarak yapmaya çalışmışsınız. Doğru kullanım şekli aşağıdaki gibi olmalı.
Özellikle kodları içerleyerek yazmaya çalıştım ki hangi değer hangi "node" altına yazılıyor daha kolay anlaşılsın.
Yukarıdaki kod ile ouşturulan XML dosyası aşağıdaki içeriğe sahip oluyor:
Burada dikkat edilmesi gereken nokta, XML.SaveToFile() prosedürü dosya var ise hata vermeden, onay almadan direk üzerine yazar. Eski dosyayı kaybedersiniz.
Özellikle kodları içerleyerek yazmaya çalıştım ki hangi değer hangi "node" altına yazılıyor daha kolay anlaşılsın.
Kod: Tümünü seç
uses
XMLIntf,
XmlDoc;
procedure TForm1.Button1Click(Sender: TObject);
var
Xml: IXMLDocument;
RootNode, CurNode, FaturaSatirlari, Iletisim, Adres, FaturaBaslik, Fatura: IXMLNODE;
begin
XML := NewXMLDocument;
XML.Encoding := 'utf-8';
XML.Options := [doNodeAutoIndent]; // üst "node" bağlantısı olan değerler başında ekstra boşluk ile kaydedilmesi için
RootNode := XML.AddChild('Faturalar');
Fatura := RootNode.AddChild('Fatura');
FaturaBaslik := Fatura.AddChild('FaturaBaslikBilgisi');
CurNode := FaturaBaslik.AddChild('VergiDairesi');
CurNode.Text := 'Vergi Dairesi Değeri';
CurNode := FaturaBaslik.AddChild('VergiKimlikNo');
CurNode.Text := 'Vergi Kimlik No Değeri';
CurNode := FaturaBaslik.AddChild('FirmaAdi');
CurNode.Text := 'Firma Adı Değeri';
Adres := FaturaBaslik.AddChild('Adres');
CurNode := Adres.AddChild('Ulke');
CurNode.Text := 'Ülke Değeri';
CurNode := Adres.AddChild('Sehir');
CurNode.Text := 'Şehir Değeri';
CurNode := Adres.AddChild('Ilce');
CurNode.Text := 'İlçe Değeri';
CurNode := Adres.AddChild('CaddeSokak');
CurNode.Text := 'Cadde Sokak Değeri';
CurNode := Adres.AddChild('BinaAdi');
CurNode.Text := 'Bina Adı Değeri';
CurNode := Adres.AddChild('BinaNo');
CurNode.Text := 'Bina No Değeri';
CurNode := Adres.AddChild('PostaKodu');
CurNode.Text := 'PostaKodu Değeri';
Iletisim := FaturaBaslik.AddChild('Iletisim');
CurNode := Iletisim.AddChild('Telefon');
CurNode.Text := 'Telefon Değeri';
CurNode := Iletisim.AddChild('fax');
CurNode.Text := 'fax Değeri';
CurNode := Iletisim.AddChild('Mail');
CurNode.Text := 'Mail Değeri';
CurNode := FaturaBaslik.AddChild('FaturaTarihi');
CurNode.Text := 'FaturaTarihi Değeri';
FaturaSatirlari := FaturaBaslik.AddChild('FaturaSatirlari');
CurNode := FaturaSatirlari.AddChild('StokAdi');
CurNode.Text := 'Stok Adı Değeri';
CurNode := FaturaSatirlari.AddChild('Birim');
CurNode.Text := 'Birim Değeri';
CurNode := FaturaSatirlari.AddChild('Miktar');
CurNode.Text := 'Miktar Değeri';
CurNode := FaturaSatirlari.AddChild('Tutar');
CurNode.Text := 'Tutar Değeri';
Xml.SaveToFile(ExtractFilePath(Application.ExeName) + 'xml.xml');
end;
Kod: Tümünü seç
<?xml version="1.0" encoding="utf-8"?>
<Faturalar>
<Fatura>
<FaturaBaslikBilgisi>
<VergiDairesi>Vergi Dairesi Değeri</VergiDairesi>
<VergiKimlikNo>Vergi Kimlik No Değeri</VergiKimlikNo>
<FirmaAdi>Firma Adı Değeri</FirmaAdi>
<Adres>
<Ulke>Ülke Değeri</Ulke>
<Sehir>Şehir Değeri</Sehir>
<Ilce>İlçe Değeri</Ilce>
<CaddeSokak>Cadde Sokak Değeri</CaddeSokak>
<BinaAdi>Bina Adı Değeri</BinaAdi>
<BinaNo>Bina No Değeri</BinaNo>
<PostaKodu>PostaKodu Değeri</PostaKodu>
</Adres>
<Iletisim>
<Telefon>Telefon Değeri</Telefon>
<fax>fax Değeri</fax>
<Mail>Mail Değeri</Mail>
</Iletisim>
<FaturaTarihi>FaturaTarihi Değeri</FaturaTarihi>
<FaturaSatirlari>
<StokAdi>Stok Adı Değeri</StokAdi>
<Birim>Birim Değeri</Birim>
<Miktar>Miktar Değeri</Miktar>
<Tutar>Tutar Değeri</Tutar>
</FaturaSatirlari>
</FaturaBaslikBilgisi>
</Fatura>
</Faturalar>
Re: XML dosya oluşturma ve Base64 çevirme
Yardımlarınız ve sabırlı yaklaşımınız için çok teşekkür ediyorum ertank, örneğinizdeki gibi oluşturdum xml dosyasını sorun çözüldü. Evet dediğiniz gibi string kullanarak oluşturursam xmldocument'i sonuç hatalı oluyor. Şu an xml oluşturmak ile ilgili sorunum kalmadı, tekrar teşekkürler. Bir sorum daha var ama o konuda da yardımcı olabilir misiniz acaba. UUID nasıl oluşturuluyor bu konuda da bana yardımcı olabilir misiniz.
Re: XML dosya oluşturma ve Base64 çevirme
UUID (Uniqueidentifier) Microsoft firmasının kullandığı ifadedir. GUID (Globally Unique Identifier) ise genel kullanılan isimdir. Her ikiside aynı şeyi ifade etmektedir.
Yeni GUID oluşturmak için:
Editör içinde GUID string kullanmak için CTRL + Shift + G tuş kombinasyonunu kullanabilirsiniz.
Eğer herhangi bir zamanda GUID oluşturma zamanında sorun yaşarsanız eğer ethernet kartı veya bir donanım bileşeninin arızalı olduğunu varsaymak çok yanlış olmayacaktır.
Bir şekilde String GUID değerini TGuid türüne dönüştürmeniz gerekirse:
Yeni GUID oluşturmak için:
Kod: Tümünü seç
uses
SysUtils;
procedure TForm1.Button1Click(Sender: TObject);
var
MyGuid: TGuid;
TempString: string;
begin
if CreateGuid(MyGuid) <> 0 then
begin
ShowMessage('Guid oluşturulamadı');
Exit;
end;
TempString := GuidToString(MyGuid);
ShowMessage(TempString);
end;
Eğer herhangi bir zamanda GUID oluşturma zamanında sorun yaşarsanız eğer ethernet kartı veya bir donanım bileşeninin arızalı olduğunu varsaymak çok yanlış olmayacaktır.
Bir şekilde String GUID değerini TGuid türüne dönüştürmeniz gerekirse:
Kod: Tümünü seç
// Yukarıdaki kodun devamı olacak şekilde düşünülürse
try
MyGuid := StringToGuid(TempString);
except
on E: EConvertError do
begin
ShowMessage('String değer GUID türüne dönüştürülemiyor.');
Exit;
end;
end;
Re: XML dosya oluşturma ve Base64 çevirme
GUID oluşturma ile ilgili verdiğiniz kodu çalıştırdım, hiç bir sorun yaşamadım. Nokta atışı çözüm önerileriniz ve yardımlarınız için yeniden çok teşekkür ediyorum ertank. Bana çok yardımcı oldunuz, Allah razı olsun. Son olarak Base64 çevirme ile ilgili göndermiş olduğunuz kodu devreye alacağım, orada da sorun çıkacağını sanmıyorum. Çok Teşekkürler.
Re: XML dosya oluşturma ve Base64 çevirme
ertank yazdı:Eski Delphi sürümlerinde (Delphi 7 dahil) UTF8Encode() ve UTF8Decode() fonksiyonları bozuktur. 3 byte üzerindeki sıralı bilgileri doğru bir şekilde işleyemiyor. Bu sorun Delphi 2009'da çözülmüştür.
Eğer UTF8 kullanıyor iseniz farklı bir kaynak kullanarak dönüşümler yapmanızda fayda var. Benim şahsi önerim mORMot projesi olacaktır.
https://synopse.info/fossil/wiki/Synopse+OpenSource
Şifreleme ve json konularında da faydalanabileceğiniz çok geniş bir kütüphaneye sahiptir.
Base64 ile ilgili aşağıdaki Delphi 7 örneğinin işinizi görmesi gerekli diye düşünüyorum.Kod: Tümünü seç
uses EncdDecd; procedure TForm1.Button1Click(Sender: TObject); begin Edit2.Text := EncodeString(Edit1.Text); // Base64 yap Edit3.Text := DecodeString(Edit2.Text); // Normale çevir end;
Tekrar Merhaba,
Base64 çevirmede şöyle bir sıkıntım var, xml dosyasını oluşturduğum anda aynı xml dosyasının birde base64 çevrilmiş halini yine xml uzantılı olarak kaydetmek istiyorum. Fakat Encoding işlemini xmldoc'da bulunan bilgiyi memo text'e atarak yaparsam eğer memo text'e türkçe karakterler bozuk geliyor ve memo text deki bilgiyi bozuk karakterler ile base64 yaparsam decode işleminde bu karakterlerin karşılığı bozuk olabilir diye düşünüyorum. Memo text kullanmadan oluşan xml dosyasının base64 koduna göre dönüştürülmüş halini nasıl oluşturabilir ve xml uzantılı olarak saklayabilirim. XML dosya oluşturma ve kaydetme işlemini tamamen sizin belirttiğiniz şekilde yaptım. Yardımınızı rica ediyorum.
Re: XML dosya oluşturma ve Base64 çevirme
İlgili kodu paylaşabilir misiniz?
Re: XML dosya oluşturma ve Base64 çevirme
Amacım şu : Sizin verdiğiniz örneğe uygun olarak xml dosyasını oluşturuyorum, oluşan dosyada hiçbir problem yok, her şey olması gerektiği gibi. Fakat şimdi bu dosyayı oluştururken aynı zamanda aynı dosyanın base64 koda çevrilmiş halinide xml uzantılı olarak kaydetmem gerekiyor. Aşağıda kodda BASE64 yazılı kısımda bunu yapmaya çalıştım. Bu çalışmamda ihtiyacım olan bir tek bu konu kaldı.
1. Oluşturduğum xml dosyasının bas64 koduna çevrilmiş halinin xml uzantılı olarak keydetmek.
2. Base64 formatta saklanmış bir dosyayı memo veya string alan içine alabilmek.
Yardımlarınız için çok teşekkür ediyorum.
1. Oluşturduğum xml dosyasının bas64 koduna çevrilmiş halinin xml uzantılı olarak keydetmek.
2. Base64 formatta saklanmış bir dosyayı memo veya string alan içine alabilmek.
Yardımlarınız için çok teşekkür ediyorum.
Kod: Tümünü seç
ForceDirectories(xmldir);
if IOResult <> 0 then
showmessage('DİKKAT... Xml dosyası oluşturulamadı.')
else
begin
XMLDOSYASI:= 'Fatura'+IntToStr(FIS_NO)+'.xml';
Memo2.Text := XMLDoc.XML.Text; //oluşan dosyayı görmek için.
XMLDoc.SaveToFile(xmldir+XMLDOSYASI);
XMLDoc.Active := False;
showmessage(XMLDOSYASI+' dosyası başarı ile oluşturuldu.');
//.. BASE64 ..//
XML dosyasını kaydettikten sonra aynı dosyayı base64'e çevirerek yine xml uzantılı olarak kaydetmek istiyorum. Bunu yapabilmek içinde izlediğim
yol memo2.text i sizin verdiğiniz örnekte olduğu gibi base64 e çevirip memo2 alanının text bilgisini xmldoc'a yükleyip xml olarak kaydetmek.
Aşağıda ki kodda bu anlattığımı yapmaya çalıştım fakat sanırım dosya formatına uymadığı için
XmlDoc:= LoadXMLData(FormatXMLData(Memo2.Text)); bu satırda hata veriyor.
XMLDOSYASI:= 'Base64Enc'+'.xml';
//.. Edit2.Text := EncodeString(Edit1.Text); // Base64 yap
//.. Edit3.Text := DecodeString(Edit2.Text); // Normale çevir
XmlDoc:= NewXMLDocument;
XmlDoc.Version := '1.0';
XmlDoc.Encoding:= 'UTF-8';
XmlDoc.Active := True;
XmlDoc.Options := [doNodeAutoIndent]; // üst "node" bağlantısı olan değerler başında ekstra boşluk ile kaydedilmesi için
XmlDoc.standalone:='no';
Memo2.Text := EncodeString(Memo2.Text);
XmlDoc:= LoadXMLData(FormatXMLData(Memo2.Text));
XmlDoc.SaveToFile(xmldir+XMLDOSYASI);
showmessage('Base64 çevirimi yapıldı.');
end;
Re: XML dosya oluşturma ve Base64 çevirme
Aşağıdaki gibi deneyebilir misiniz?
Kod: Tümünü seç
Memo2.Text := UTF8Decode(XMLDoc.Xml.Text);
Re: XML dosya oluşturma ve Base64 çevirme
Bu sorunu da çözmüş olduk, ertank yardımların için çok teşekkür ediyorum.