RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiyim ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Javs
Üye
Mesajlar: 32
Kayıt: 16 Eyl 2014 02:45

RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiyim ?

Mesaj gönderen Javs »

Merhaba arkadaşlar tabiri caiz ise exe içine dosya gömme olarak tabir ettiğimiz brcc32 resource compiler ile derleyip res dosyası oluşturarak projemizin içine gömdüğümüz data dosyasını ben programın içerisinden çıkarıp bir klasörden okutmak istiyorum bunu yapabilirmiyiz programın içerisinden çıkartmak sorun diil ben resource decompiler ile bu işi hallederim önemli olan bu dosyayı programın içerisinden diil klasörden okutabilmek.

TResourceStream.Create(Instance, ResName, RT_RCDATA) bu şekilde diilde

TResourceStream.Create('C://dosya ismi', ResName, RT_RCDATA) gibi gösterip okutma şansımız varmı

veya herhangi bir şekilde o dosyayı klasörden gösterip RT_RCDATA dosyası olduğunu belirtip okutabilirmiyiz
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiy

Mesaj gönderen sabanakman »

Bir .exe içindeki kaynağı dosya olarak dışarı çıkartabilirsiniz.

Kod: Tümünü seç

function ExedenCikart(const KaynakAdi, DosyaAdi:String): Boolean;
var Kaynak:TResourceStream;
begin
  //Result:=True;
  try
    Kaynak:=TResourceStream.Create(hInstance,KaynakAdi,RT_RCDATA);
    try
      Kaynak.Position:=0;
      with TFileStream.Create(DosyaAdi,fmCreate) do try
        try
          Result:=CopyFrom(Kaynak,Kaynak.Size)=Kaynak.Size;
        except
          Result:=False;
        end;
      finally
        Free;
      end;
    except
      Result:=False;
    end;
    Kaynak.Free;
  except
    Result:=False;
  end;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiy

Mesaj gönderen SimaWB »

sabanakman yazdı:Bir .exe içindeki kaynağı dosya olarak dışarı çıkartabilirsiniz.

Kod: Tümünü seç

function ExedenCikart(const KaynakAdi, DosyaAdi:String): Boolean;
var Kaynak:TResourceStream;
begin
  //Result:=True;
  try
    Kaynak:=TResourceStream.Create(hInstance,KaynakAdi,RT_RCDATA);
    try
      Kaynak.Position:=0;
      with TFileStream.Create(DosyaAdi,fmCreate) do try
        try
          Result:=CopyFrom(Kaynak,Kaynak.Size)=Kaynak.Size;
        except
          Result:=False;
        end;
      finally
        Free;
      end;
    except
      Result:=False;
    end;
    Kaynak.Free;
  except
    Result:=False;
  end;
end;
Bir TFilestream oluşturmaya gerek yok. Direk Kaynak.SaveToFile yapabilirsiniz...
There's no place like 127.0.0.1
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiy

Mesaj gönderen SimaWB »

Javs yazdı:veya herhangi bir şekilde o dosyayı klasörden gösterip RT_RCDATA dosyası olduğunu belirtip okutabilirmiyiz
Bunu neden yapmak istediğinizi anlamadım ama sonuçta elinizde bir dosya var ve bunu TFileStream ile açtığınızda bir stream içine almış olursunuz. Sizin bildiğiniz bir formatta dosya olduğu için istediğiniz şekilde kullanırsınız.
There's no place like 127.0.0.1
Kullanıcı avatarı
Javs
Üye
Mesajlar: 32
Kayıt: 16 Eyl 2014 02:45

Re: RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiy

Mesaj gönderen Javs »

biraz açıklama yapayım :)
31 yaşındayım;
Devlet memuruyum;
bilgisayar ile 25-26 yaşlarında tanıştım Afkanistanda askerlik yaptım cep telefonu kullanamadığımız için(yasak olduğu için diil çekmediği için :) ) taburda internet olduğu için msn denen bir icat vardı ozamanlar kuzenim msn den görüşelim demişti nasıl olucak ben bilmiyorum ki ben sana bir msn adresi alayım dedi ordan görüşelim sabit telefondan görüşebiliyoruz bu arada neyse bana bir meil adresi ve şifresi verdi ben geçtim bilgisayarın başına yanımdaki arkadaşlara msn'i açtırdım oturdum başına başladım kullanıcı adımı yazmaya ama bir sıkıntı var @ işaretini yapamıyorum :) baya bi debelendikten sonra yanımda oturan arkadaştan rica ettim ve bilgisayarla tanışma maceram başladı neyse askerlik bitti köye internet gelmiş bi arkadaşda internet kafe açmış arkadaşlar orda takılıyolar onların yanında bende takılıyorum chat mhat hatun muhabbetleri derken ozamanlar gençlik merak falan bende bir bilgisayarın başına oturdum zaman geçtikce hayatımızdan fırsat buldukça bilgisayarın başına oturmaya başladık bursada fiat'ın araba fabrikasında işe başladım 3 yıla yakın çalıştım resmen köleliğin günümüze uyarlanmış haliydi neyse eve geldiğimde canım sıkılıyor uğraşıcak bişi lazım 2008 de ilk bilgisayarımı aldım hala kullanıyorum bu dönemlerde internet üzerinde meşhur olan Camfrog diye sesli görüntülü chat yapılan bir platform var orda takılıyoruz arkadaşlar gırgır şamata zaman geçiyor tabi ortamda hacker'lar falan dolanmaya başladı (hacker dediğime aldırmayın tabiki meraklı gençlik sadece) neyse öyle böyle bir şekilde arkadaş kardeş muhabbetine bana gönderilen bir dosyayı bilgisayarımda çalıştırdım ve bilgilerim falan arkadaş diye bildiğimiz bu meraklı gencin eline geçti sanırım bu ki bende bir hırs uyandırdı neyse ogünden sonra trojen falan bir merak saldı ki sormayın içine girdikce daha fazla merak salıyor ve kurtulamıyorum kendi kendime inat yaptım ve kendimi geliştirmeye başladım bu vesileyle internet'de dolaşırken iki site ile tanıştım birisi crack üzerine diğeri trojen keylogger velashıl tamamen illegal :D tamda benim arayıp bulamadığım şey. Başladık takılmaya tabi uğraşırken sitede bulunanlara soru falan soruyoruz hem yeni üye hemde meraklı olduğumuz ve çok soru sorduğumuz için birde takıldığımız sitenin yaş ortalaması biraz düşük olduğu için gençlerde hem ego var hemde bilende zaten sınırlı bilgiye sahip bu daha çok zoruma gitti o hırsla uğraşa uğraşa nasıl bir hırs yaptıysam trojen sitesinde admin'lik yapmaya başladım kendi kendimize dosya analizleri crack serial bulma trojenleri antivisürlerden kaçırma gibi işler üzerinde uğraşmaya kendimi geliştirmeye başladım ama tabi hepiniz bilirsinizki bu işin içine girdinmi yetinmeyi bilmiyor insan. Zaman geçtikce bişiler yapmaya yaptığımız şeylerin nasıl yapıldığını gösteren eğitim videoları çekmeye başladık tabi birçoğumuzun belki aşina olduğu lena diye yabancı bir arkadaşın crack eğitim seti vardır Türkçe'ye çevrilmiş bu seti izledik kendimizi geliştirmek için ogün bugündürde içimde bir ukte böyle bir eğitim seti yapmak ozamanlar bizim için hayal programlama ile daha alakam bile yok sadece mantık yerleşiyor. zaman geçti ben özel sektörü bıraktım çünkü resmen ömür törpüsüydü hayatım boyunca oturum hiç ders çalışmadım okulu hep kaç puanla geçiliyorsa okadar puanla geçtim +1 puan fazla alayım yanımda bulunsun demedim tabi hayatın yükü omuzlarımıza basınca 27 yaşından sonra oturup 1 yıl kpss ye hazırlandım özel sektörde biriktirdiğim para ile dershaneye gittim ders çalışıyorum ama kafamda hep bilgisayar var neyse öyle böyle bir yılı bitrdim kpss ye girdik şükürler olsun devlet kapısında ekmek sahibi olduk bu saatten sonra durulurmu bilgisayara olan ilgim bittimi bitmedi geçensene öss diye dile getireyim adı okadar çok değiştiki :d sınava girdim uzaktan eğitim bilgisayar programcılığı yazdım oda geldi okumaya başladım ama eskisi gibi okulu geçecek kadar diil oturup her dersi izledim çünkü sevdiğim bişiler ile uğraşıyorum sınıfta 2. oldum bu yıl okul bitecek sonra ki hedeflerde var tabiki dgs mühendislik fakültesi falan neyse onlar bir kenara dursun şimdi geleyim bir zamanlar izlediğim crack görsel eğitim seti gibi bir set hazırlamaya bunu hazırladım ama insan işte yetinmiyor şimdi elimde bulunan crack eğitimi için çekilmiş swf formatındaki dosyaları tek dosya haline getirip treeview de listelenmiş olan isimlerine tıkladığımda dosyaları TShocwaveFlash nesnesinde görüntülemek sıkıntım ise res dosyası olarak tek dosya haline getirdim çok büyük bir dosya olacağı için yüzlerce video var bu dosyayı exe ye gömmek yerine exenin bulunduğu klasöre atıp ordan dosyaları okutmak olacak tabi dosyayı diske yazdırıp yol gösterek diil hafızaya yazdırıp hafızadan TShockwaveFlash veya TWebBrovser nesnesine link gösterip okutmak bu kısmını daha başaramadım ama çalışmalarım hala sürüyor

bu arada baya yazmışım biraz daha uğraşsam tek çiltlik kitap olucakmış sanırım :) neden bukadar yazdım onuda bilmiyorum belki sıkıntıdan belki zaman olduğu içindir orasını sorgulamayın bende bilmiyorum :D
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: RT_RCDATA dosyasını herhangi bir klasörden okutabilirmiy

Mesaj gönderen sabanakman »

O zaman dosyaları hiç .exe içerisine gömmeyin, bunun yerine .exe ile aynı klasöre ilgili dosyaları .exe ile aynı klasöre atmalısınız. Eğer çok fazla dosya olacaksa bir alt klasöre atılabilir ve dosyalar buradan yüklenebilir.

Kod: Tümünü seç

var DosyaAdi:String;
begin
...
  DosyaAdi:=ExtractFilePath(Application.ExeName)+'AltKlasor\DosyaAdi.uzn';
  Modul.LoadFromFile(DosyaAdi);
...
//Application.ExeName yerine ParamStr(0) da kullanılabilir
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla