ftp ile linux ta Türkce karakter sorunu[çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
onclick_lik
Üye
Mesajlar: 35
Kayıt: 04 Eki 2007 08:06

ftp ile linux ta Türkce karakter sorunu[çözüldü]

Mesaj gönderen onclick_lik »

selamün aleyküm

delphi 7(indy) ile yapılmıs bir ftp programım var ve bu programla linux(server) makinaya (jpeg,mpg,mpeg,png,gif) uzantılı dosyalar gonderiyorum. fakat dosya isminde(çışüöğĞÜÖŞÇ) gibi karakterler bulunursa linux(server) makinada bu dosyalar calısmıyor.

sole bi yol izledim

birtane funtion kullanarak bu karakterleri ingilizce karakter olarak buyuk harfe cevirdim.

dosyanın orjinal ismi____kış.jpg

cevrilmiş hali__________KIS.jpg

fakat bu sefer de ftp üzerinden linux(server) makinaya dosyaları yollarken (c:\Document and settings\user\KIS.jpg Windows bu yolu algilayamıyor gibi bir hata verdi) ve dosyaları gonderemedim.

bu konuda bana yardımcı olursanız sevinirim.

yardımlarınız için tesekkürler.
En son onclick_lik tarafından 19 Kas 2007 11:15 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

"c:\documents and settings\ffff\xxx xxx\" şeklinde dene. içinde boşluk varsa tırnak içine almalısın. mumkunse kodu yapıştr bakalım
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
onclick_lik
Üye
Mesajlar: 35
Kayıt: 04 Eki 2007 08:06

Mesaj gönderen onclick_lik »

Kullandıgım kod bu

Kod: Tümünü seç

procedure Tanaform.dosgonderClick(Sender: TObject);
var
 i: Integer;
  begin
    for i := 0 to (ListBox2.Items.Count - 1) do begin
       if ListBox2.Selected[i] then
        begin
         try
          ext:=extractfileext(listbox2.items.strings[i]);
          dosyaadi := ExtractFileName(ListBox2.Items.Strings[i]);
             if (ext='.sh') then
               begin
                IdFTP1.TransferType:=ftascii;
                 IdFTP1.put(ListBox2.Items.Strings[i],dosyaadi,true);
                  listelerClick(self);
                 end;
               ext:=extractfileext(listbox2.items.strings[i]);
              dosyaadi := ExtractFileName(ListBox2.Items.Strings[i]);
              if (ext='.jpg') or (ext='.png') or (ext='.jpeg') or (ext='.gif') or    (ext='.GİF') or (ext='.JPEG') or (ext='.JPG') or (ext='.PNG') then
                begin
                  idftp1.TransferType:=ftbinary;
                    IdFTP1.put(ListBox2.Items.Strings[i],dosyaadi,true);
                     listelerClick(self);
                      end;
              except
      Application.MessageBox('Dosya     Gönderilemedi','Uyarı',mb_ok+mb_iconinformation);
    end;
Dosya transfer ettiğimde Türkce karakterler varsa dosya isminde linux(server) makina calıstırmıyor bu dosyaları.Eğer programda ingilizce karaktere cevirip gondermeye calsıtıgım da bu sefer de windows bu yolu tanımıyor hata veriyor gondermiyor.
En son onclick_lik tarafından 19 Kas 2007 11:50 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

hocam burda isimle alakalı birşey yooki. ismi nasıl cevirdin anlamadım.

birde şu olay var.

dosyaadını Türkçeye rename ilemi cevirdin yoksa sadece ekrandamı ceviriyorsun
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
onclick_lik
Üye
Mesajlar: 35
Kayıt: 04 Eki 2007 08:06

Mesaj gönderen onclick_lik »

program da put komutuyla Türkce karakterli dosya transfer ettiğimde linux(server) da harfler değişik cıkıyor dosya calısmıyor.benim bu Türkce karakterleri programım dan düzenleyip Linux(server) a gondermem lazım.
ben gonderirken

orjinal dizin

örnegin;

C:\document and settings\belgelerim\kiş.jpg(bunu gonderiyor ama karsıda calısmıyor)

ben bunu filelistbox ekranın da İngilizce karaktere cevirip gonderme listeme aktarıyorum.(rename kullanmadım)

C:\document and settings\belgelerim\KIS.jpg olarak yani

ama boleyken dosyayı gonderirken
(C:\document and settings\belgelerim\KIS windows bu yolu algılayamıyor gibi bir hata veriyor)

ve dosyayı gondermiyor

benim amacım linux(servere) Türkce karakter bulunan dosya isimlerini ingilizce karaktere cevirip gondermek.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

rename yapmazsan program dosyayı bulamazki.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
onclick_lik
Üye
Mesajlar: 35
Kayıt: 04 Eki 2007 08:06

Mesaj gönderen onclick_lik »

Arkadaslar baya bi ugrastan sonra kendi sorunumu hallettim.

öncelikle bir function tanımlıyoruz

Kod: Tümünü seç

Function lowerCase(Txt: String): String;
Const
YHarfler: String[39] = 'abccdefgghiijklmnoopqrsstuuvwxyzgusioc';
THarfler: String[39] = 'abcçdefgğhıijklmnoöpqrsştuüvwxyzĞÜŞİÖÇ';
Var
i: Byte;
Begin
For i:=1 To Length(Txt) Do
If Pos(Txt[i],THarfler)>0 Then Txt[i]:=YHarfler[Pos(Txt[i],THarfler)];
Result:=Txt;
End;
ve funtionumuzu tanımladıktan sonra;
kodumuz;

Kod: Tümünü seç

RenameFile(AnsiLowerCase(ExtractFileName(FileListBox1.FileName)),lowerCase(ExtractFileName(FileListBox1.FileName)));
ben bunu filelistboxta ki Türkce karakterli dosya isimlerini ingilizce karakterlerli dosya isimlerine cevirmek için kullanmıstım.

siz programınız da istediginiz yere uyarlayabilirsiniz.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

güzel... kafa göz yarıldı belki ama sorunda çözüldü....
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Cevapla