dosya boyutu/türü
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
dosya boyutu/türü
Veri tabanına KOD,DOSYA YOLU,DOSYA ADI,AÇIKLAMA,BOYUTU,TÜR diye kayıt yaptığım bir table var.Open dialog ile dosyayı veritabanına kayıt yapabiliyorum.Ancak Türünü ve boyutunu nasıl bulacağım hakkında bir bilgim yok.mesela c:\telefon.txt diye bir dosyayı ekletim.boyut olarak :13 k ,tür olarak metin belgesi diye yazdırmak istiyorum.kısaca bir dosyanın boyutu ,türü hakında bilig edinmek istiyorum.Ayrıca c:\telefon.txt yi dosyayı çalıştır deyince açmak istiyorum.Yardımlarınızı bekliyorum.Teşekkürler...
TSearchRec yapısı tam olarak istediğini yapmıyor. Boyutunu vs alırsınız ama türünü vermez. Türü için sistemle bilgi alışverişinde bulunabileceğiniz SHGetFileInfo apisini araştırmanızı öneririm. Böylece dosya türü ile birlikte ilgili dosyanın sistemde kayıtlı bulunan tür ikonunu da alırsınız. Ancak exe dosyaların kişisel ikonlarını vermez.
Ayrıca TSearchRec yapısının alternatifi olarak TWin32FindData yapısını tavsiye ederim.
Örnek kodu ancak cpp builder için verebilirim.
Ayrıca TSearchRec yapısının alternatifi olarak TWin32FindData yapısını tavsiye ederim.
Örnek kodu ancak cpp builder için verebilirim.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Mustafa Kemal Atatürk...
TWin32FindData ,SHGetFileInfo
TWin32FindData ,SHGetFileInfo hakında daha fazla bilgi alabilirmiyim.
Benim Bilgilerim gridde şöyle gözükmesini istiyorum:
DOSYA ADI BOYUT TÜR
TELEFON.TXT 1230 METİN BELGESİ
VE AÇ DEYİNCE AÇMASINI İSTİYORUM
DOSYA DI YOLU VE BOYUT TAMAM DA TÜR VE AÇ DEYİNCE AÇMA OLAYI=?
TEŞEKKÜRLER
Benim Bilgilerim gridde şöyle gözükmesini istiyorum:
DOSYA ADI BOYUT TÜR
TELEFON.TXT 1230 METİN BELGESİ
VE AÇ DEYİNCE AÇMASINI İSTİYORUM
DOSYA DI YOLU VE BOYUT TAMAM DA TÜR VE AÇ DEYİNCE AÇMA OLAYI=?
TEŞEKKÜRLER
Selam...
-
Programınızda sadece belli türlerde dosyalarla çalışıyorsanız, uzantısı ile ve/veya uzantısı ne olursa olsun dosyanın içeriğinin bir kısmıyla binary olarak tür hakkında fikir sahibi olabilirsiniz...
- EXE dosyalar MZ ile başlar..
- TXT dosyaların içeriğinde Text dışında karakter yoktur...
- AVI dosyalar başında RIFF AVI,
- GIF, JPG, BMP gibi resim formatlarının başında türü hakkında fikir verecek BM, JFIF vb. bilgiler bulunur vs...
-
Dosya uzunluğunu ise şahsen OpenFile ile açıp, Assign edip 1 Byte'lık record büyüklüğü ile reset edip FileSize ile okuyor ve CloseFile kapatıyorum oluyor...
-
Açma olayı için de ShellAPI'yi uses ekleyip ShellExecute() fonksiyonu ile NotePad, Word, Excel vb. ile açtırabilirsiniz..
@fahrettin'in örneklediği link: viewtopic.php?t=1718&highlight=#8189
Kod: Tümünü seç
DOSYA ADI BOYUT TÜR
TELEFON.TXT 1230 METİN BELGESİ

- EXE dosyalar MZ ile başlar..
- TXT dosyaların içeriğinde Text dışında karakter yoktur...
- AVI dosyalar başında RIFF AVI,
- GIF, JPG, BMP gibi resim formatlarının başında türü hakkında fikir verecek BM, JFIF vb. bilgiler bulunur vs...
-

-

@fahrettin'in örneklediği link: viewtopic.php?t=1718&highlight=#8189
Re: TWin32FindData ,SHGetFileInfo
Dosya adı, yolu, boyutu tamam dediğinizden TSearchRec yapısını kullandığınızı anlıyorum.freett yazdı:TWin32FindData ,SHGetFileInfo hakında daha fazla bilgi alabilirmiyim.
Benim Bilgilerim gridde şöyle gözükmesini istiyorum:
DOSYA ADI BOYUT TÜR
TELEFON.TXT 1230 METİN BELGESİ
VE AÇ DEYİNCE AÇMASINI İSTİYORUM
DOSYA DI YOLU VE BOYUT TAMAM DA TÜR VE AÇ DEYİNCE AÇMA OLAYI=?
TEŞEKKÜRLER
Kod: Tümünü seç
TSearchRec BulunanDosya;
SHFILEINFO SHFInfo;
.....dosyaları aradık bulduk......
SHGetFileInfo(BulunanDosya.Name,
BulunanDosya.Attr,
&SHFInfo, //& operatörü sanıyorum delphide @
sizeof(SHFInfo), // byte cinsinden boyutu
SHGFI_TYPENAME | // bu flagları araştırmalısınız
SHGFI_USEFILEATTRIBUTES |
SHGFI_ICON | // | bit operatörü olan (veya)
SHGFI_SMALLICON
);
Ekle(SHFInfo.szTypeName); // Metin belgesi hadisesi..
IkonVer(SHFInfo.iIcon) // ikon indexi registry de yazılı olan
TWin32FindData yapısında TSearchRec yapısından fazla olarak dosyanın yaratıldığı tarih, son erişim tarihi gibi bilgiler de alınabilir. Özellikle versiyon yoklamalarında işe yarıyabilir.
... Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!
Mustafa Kemal Atatürk...
Mustafa Kemal Atatürk...
Programınızda sadece belli türlerde dosyalarla çalışıyorsanız, uzantısı ile ve/veya uzantısı ne olursa olsun dosyanın içeriğinin bir kısmıyla binary olarak tür hakkında fikir sahibi olabilirsiniz...
- EXE dosyalar MZ ile başlar..
- TXT dosyaların içeriğinde Text dışında karakter yoktur...
- AVI dosyalar başında RIFF AVI,
- GIF, JPG, BMP gibi resim formatlarının başında türü hakkında fikir verecek BM, JFIF vb. bilgiler bulunur vs...
DAHA FAZLA BİLGİ...LÜTFEN...
- EXE dosyalar MZ ile başlar..
- TXT dosyaların içeriğinde Text dışında karakter yoktur...
- AVI dosyalar başında RIFF AVI,
- GIF, JPG, BMP gibi resim formatlarının başında türü hakkında fikir verecek BM, JFIF vb. bilgiler bulunur vs...
DAHA FAZLA BİLGİ...LÜTFEN...
talip türkmen
Selam.,
- Internet Cafe'den yazıyorum syntax error olabilir...
- Burada herhangi bir dosyayı text olarak değil de binary olarak okumayı denedik ve başından ilk kısmın okunmasını yaptık...
- İşte yapmanız gereken şey, Okunan değişkeninin içeriğini dosya tipine göre analiz edip farkı görmeniz ve etüd edip, uygun sorgularla bu dosya bunu içeriyorsa budur şeklinde ilkeler oluşturmak... İlk iki byte MZ ise ve devamında A..Z a..z 0..9 ve noktalama işaretleri dışında ASCII kodları barındırıyorsa EXE dosyadır diye başlayabilirsin...
- RIFF AVI ile başlıyorsa ve devamında yine farklı ASCII kodlar barınıyorsa AVI dosyasıdır diyebilirsin vs.
- Daha açık nasıl yazarım bilemiyorum. Takılırsan sor...
- Internet Cafe'den yazıyorum syntax error olabilir...

Kod: Tümünü seç
Var
Dosya : File;
Okunan : Array[0..10] of Char; // sembolik olarak 11 byte verdim...
begin
AssignFile(Dosya, 'C:\ABC.EXE'); // ABC.EXE dosyasını Dosya'ya atadık.
Reset(Dosya, 1); // Kayıt bloklarını 1 byte olarak belirledik...ve başa konumlandık
BlockRead(Dosya, Okunan, SizeOf(Okunan) ); // 11 byte okuduk...
// işte elimizde bu dosyanın ilk 11 byte'ı elimizde...
// bu 11 byte belirli sorgular yapılarak dosya hakkında bilgi verir...
CloseFile(Dosya);
end;
- Burada herhangi bir dosyayı text olarak değil de binary olarak okumayı denedik ve başından ilk kısmın okunmasını yaptık...
- İşte yapmanız gereken şey, Okunan değişkeninin içeriğini dosya tipine göre analiz edip farkı görmeniz ve etüd edip, uygun sorgularla bu dosya bunu içeriyorsa budur şeklinde ilkeler oluşturmak... İlk iki byte MZ ise ve devamında A..Z a..z 0..9 ve noktalama işaretleri dışında ASCII kodları barındırıyorsa EXE dosyadır diye başlayabilirsin...
- RIFF AVI ile başlıyorsa ve devamında yine farklı ASCII kodlar barınıyorsa AVI dosyasıdır diyebilirsin vs.
- Daha açık nasıl yazarım bilemiyorum. Takılırsan sor...