Dosya transferi ile ilgili internetten bir kod buldum.kod çalışıyor ama bi sıkıntı var.program gelen dosyayı c:\ içerisine txt olarak kaydediyor. gönderilen normal dosyayı txt olarak görüyorum.bu txt dosyasını normal gönderilen dosya formatına çevirmek mümkünmüdür?
SaveDialogBox1.execute; //Tabii ki forma bi savedialogbox eklemelisin
fDst := FileCreate(SaveDialogBox1.filename);
ama biraz zorlamak istiyorsan indireceğin dosyanın ilk satırını okutup ona göre yorum yaptırabilirsin... Bence bu iş için Arama'ya bak ben bu tip çok örnek gördüm de (savedialog - opendialog - POS falan diye arat)
Merak ettim sen bu soruyu sorarken dosyayı tcp/ip gibi bir protokol yardımıyla internetten mi transfer edeceksin? çünkü verilen cevaplar dosya kaydetme ile ilgili cevaplar sen tam olarak neyi sordun. Bu arada socket.sendtext metodu yerine socket.sendstream/ socket.sendbuf (kullandığın bileşene ve işini görecek olana göre) metodlarını kullanmalısın. Tabi eğer doğru anladıysam
Bu program network üzerinde dosya transferi ile ilgili bir program.kod mantıklı ve çalışıyor gibi gözüküyor.ama dediğim gibi hangi dosya transfer edilirse edilsin c:\ içerisine deneme.txt olarak dosyayı atıyor.Deneme.txt ile gönderilen dosyanın büyüklüğü aynı.ama uzantısı txt olduğundan alınan xls dosyası veya doc dosyası bile olsa açılmıyor.problem kısaca bu şekilde..
o zaman ilk başta karşı tarafa sendtext metodu ile dosya adını yolla. Karşı taraf gelen bu dosya adına göre dosyayı oluşturur. Yani yazdığın programı iki aşamalı yapmalısın. sendtext ve Receievetext kısmını iki aşamalı yap önce yollanacak dosya adını yollasın sonra da dosyanın kendisini oluştursun
ĞÏࡱá > şÿ - şÿÿÿ
şÿÿÿ , ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Í Á€ á °Á â \ p
meteor B °a À = œ ¯
¼ = hÿ M:Ò8 X@ " · Ú 1 " È ÿ ¢ A r i a l T u r 1 " È ÿ ¢ A r i a l T u r 1 " È ÿ ¢ A r i a l T u r 1 " È ÿ ¢
A r i a l T u r 1 " ÿ ¢ A r i a l T u r
#,##0\ "TL";\-#,##0\ "TL"# #,##0\ "TL";[Red]\-#,##0\ "TL"$ #,##0.00\ "TL";\-#,##0.00\ "TL") $
#,##0.00\ "TL";[Red]\-#,##0.00\ "TL"> * 9 _-* #,##0\ "TL"_-;\-* #,##0\ "TL"_-;_-* "-"\ "TL"_-;_-@_-> ) 9 _-* #,##0\ _T_L_-;\-* #,##0\ _T_L_-;_-* "-"\ _T_L_-;_-@_-F , A _-* #,##0.00\ "TL"_-;\-* #,##0.00\ "TL"_-;_-* "-"??\ "TL"_-;_-@_-F + A _-* #,##0.00\ _T_L_-
;\-* #,##0.00\ _T_L_-;_-* "-"??\ _T_L_-;_-@_-à õÿ À à
õÿ ô À à õÿ ô À à õÿ ô À à õÿ
ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à õÿ ô À à
À à + õÿ ø À à ) õÿ ø À à ,
õÿ ø À à * õÿ ø À à õÿ ø À à @ @ À “ €ÿ“ €ÿ“ € ÿ“ €ÿ“ € ÿ“
€ÿ` … Sayfa1… Ï5 Sayfa2… Ö6 Sayfa3Œ Z Z Á Á T ü İ Y Dönem Telefon
B u l u n d u u Y e r
şeklinde.notepad ile açılıyor.dosya ismini veya uzantısını orjinal ismi ve uzantısı ile değiştirme problemi çözmedi.
Peki dosynın bağlantılı olduğu uygulama ile açılıyormu? örn excel eğer açılmıyorsa boyutlarını kontrol et. gönderilmeden önceki boyutuyla gönderildikten sonraki boyutları eşitmi? eğer fastnet bileşenlerini kullanıyorsan bildiğim kadarıyla onlar sınırlı uzunlukta transfer yapabiliyorlar.
gönderilen ve alınan dosyaların dosya boyutu tamamiyle aynı.txt olan dosya değiştirildiğinde mesela excel dosyası ise uzantısını xls yaptığımda excel bu dosyayı açamıyor.dosyayı açma problemi de var.
Farklı yöntemler hakkında fikri olan arkadaşlardan yardım bekliyorum.
- Önerim; NotePad (bildiğimiz standart Windows Not defteri) ile hazırlayacağın (içerisinde birbirini takip eden harf/rakam olmayan şekildeyse daha faydalı olur) bir text dosyasını gönderip/alarak, oluşan farklılığı tespit ederseniz çözüm için faydalı olur...
- Bu şekilde transfer sırasında eksik/fazla ne varsa görünür kılınır...
- Kodunu deneme fırsatı buldum... Aslında dediğin gibi değil, sorunsuz çalışıyormuş... Sadece dosya tipini belirleyen uzantısını değiştirmeyi başaramamışsın...
- Kodunda ufak bir değişiklik yaparsan okuduğun dosya adını C:\ dizinine aynen aktarılmasını sağlayabilirsin... Hatta boş bir klasör verirsen gelen dosya hangisiydi diye karıştırmazsın...
// Buraya 'or fmShareDenyNone' ibaresi eklenerek
// çalışmakta olan dosyaları da transfer edilebilir yapıyoruz.
fSrc := FileOpen(x, fmOpenRead or fmShareDenyNone);
// Burada fDst yani hedef dosya ismi ve tipi kaynak dosya ile aynı oldu...
fDst := FileCreate('C:\' + ExtractFileName(x));
Ben kodunuzu denemedim, ama buffer'i pointer olarak kullanırsanız nasıl olur?
Ben Client-Server Socketle dosya göndermek için böyle bir kod kullandıyorum:
s.a
arkadaslar ben yukardaki ornegi calistirdim ancak herhangi bir veri gitmiyor..
herhangi bir hatada vermiyor..boyutu kucuk olan bir veri gonderiyorum 'uploap ok' diyor hersey yolunda gidiyor ancak ben deneme.txt dosyasini actigimda ici bombos boyutuda 0 bunun sebebi ne olabilir acaba...iyi calismalar