Sanal disk oluşturma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
n0nex
Üye
Mesajlar: 9
Kayıt: 07 Şub 2016 11:37

Sanal disk oluşturma

Mesaj gönderen n0nex »

Merhaba arkadaşlar.

Delphi'de sanal disk oluşturma ile ilgili bilgi almak istiyorum.
Örneğin 10 MB'lık bir dosya oluşturup, bu dosyayı tercihe göre FAT veya NTFS ile biçimlendirmek istiyorum.
Yani önce istediğim boyutta bir dosya oluşturacak ardından bu dosyayı biçimlendirecek.
Bu işlemi nasıl yapabilirim?

Teşekkürler
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Sanal disk oluşturma

Mesaj gönderen freeman35 »

Bunu delphi değil işletim sistemi yapar, bunu da yaptırtmak için comutları shellexecute tü sanırım onunla çalıştırabilirsin.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Sanal disk oluşturma

Mesaj gönderen fesiharslan »

Merhaba;
freeman35 yazdı:Bunu delphi değil işletim sistemi yapar, bunu da yaptırtmak için comutları shellexecute tü sanırım onunla çalıştırabilirsin.
Aşağıdaki komutları sırası ile CMD (freeman35 dediği gibi Delphi shellexecute) ile çalıştırın.

Diskpart
Create vdisk file=C:\DelphiDisk.vhd maximum=10
select vdisk file=c:\DelphiDisk.vhd
attach vdisk
create partition primary
format fs=ntfs label=”DelphiDiskim” quick
assign letter=Y

2. Adım 10 MB'lık sanal disk oluşturur.
3. Adım Oluşturulan diski seçer. Bu adıma geçmeden önce biraz beklemeniz gerekebilir. VHD boyutuna göre işlem süresi uzar.
4. Adımda Disk bölümü oluşturulur.
5. Adımda NTFSdosya formatında hızlı biçimlendirme yapılmakta ve bölüm etiketi verilmektedir.
Son adımda ise oluşturulan disk bölümüne (Y) sürücü harfi atanmaktadır.

Daha detaylı parametre kullanımı için
http://ss64.com/nt/diskpart.html

Örnek ShellExecute kullanımı:

Kod: Tümünü seç

Uses 
  Winapi.ShellApi;

Kod: Tümünü seç

ShellExecute(0, nil, 'cmd.exe', '/C Diskpart', nil, SW_HIDE);
n0nex
Üye
Mesajlar: 9
Kayıt: 07 Şub 2016 11:37

Re: Sanal disk oluşturma

Mesaj gönderen n0nex »

* Uses kısmına Winapi.ShellApi eklediğim zaman "File not found, Winapi.ShellApi.dcu" şeklinde bir hata alıyorum. Önce bu kütüphaneyi yüklemem lazım, nerden yükleyebilirim?

* Verdiğiniz ShellExecute ile cmd penceresini açabilirim ama Diskpart ile ilgili işlemleri de programla yapmak istiyorum. Yani tıkladığım zaman kendisi vhd dosyasını oluştursun ve mount etsin. Elle manuel olarak Diskpartta herhangi bir şey yazmaya gerek kalmasın.

* Kod kısmının tamamını gönderebilirseniz sevinirim.

(mail adresim:

Teşekkürler.

Freeman35: Kod yazdırmak istiyorsan, mesajlarını Eleman arıyanlar bölümüne viewforum.php?f=14 yaz.
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Sanal disk oluşturma

Mesaj gönderen fesiharslan »

Uses bölümüne Winapi.ShellApi yerine yalnızca ShellApi yazın.
Kodun tamamını gönderin demişiniz. Ortada bu konu ile ilgili yazdığım bir kod yok.
Burada işin mantığını anlattık.
Projenize ShellExecute ile komut göndererek yapmalısınız.
n0nex
Üye
Mesajlar: 9
Kayıt: 07 Şub 2016 11:37

Re: Sanal disk oluşturma

Mesaj gönderen n0nex »

Tam olarak orada sıkıntı var zaten.
ShellExecute ile DiskPart'ı açtıktan sonra;

Diskpart
Create vdisk file=C:\DelphiDisk.vhd maximum=10
select vdisk file=c:\DelphiDisk.vhd
attach vdisk
create partition primary
format fs=ntfs label=”DelphiDiskim” quick
assign letter=Y

yukarıdaki işlemleri program ile nasıl halledebilirim? Yani elle girmeden..
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Sanal disk oluşturma

Mesaj gönderen mrmarman »

Delphi yakasından önce Windows yakasında DISKPART'ın nasıl çalıştığını öğrenmelisiniz.
Size bir ipucu. Bu komutları bir TEXT dosyasına yazdığınızı sonra da DISKPART /S ile bu text dosyasını gösterdiğinizde olacakları değerlendirin.
:ara bkz. bu linkteki technet.msdn "DiskPart Scripting" başlıklı kısım.
Resim
Resim ....Resim
n0nex
Üye
Mesajlar: 9
Kayıt: 07 Şub 2016 11:37

Re: Sanal disk oluşturma

Mesaj gönderen n0nex »

Değerli dostlar; Yardımlarınız için müteşekkirim.

Muharrem bey linki kontrol ettim, gayet faydalandım. Ancak Shellexecute ile birleştiremedim. Yani;

Kod: Tümünü seç

ShellExecute(0, nil, 'cmd.exe', '/C Diskpart /s script.txt', nil, SW_SHOW);
şeklinde bir kullanımla istediğimi yaptıramadım.
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Sanal disk oluşturma

Mesaj gönderen fesiharslan »

Önce oluşturduğunuz Script'i doğrudan CMD ile deneyin. Böylece Script'in sağlıklı çalıştığından emin olursunuz. Çünkü ShellExecute ile çalıştırdığınız komutun hatalı olması durumuna CMD ekranı hızlı bir şekilde kapanır ve işlem sonucunu görünmez.
n0nex
Üye
Mesajlar: 9
Kayıt: 07 Şub 2016 11:37

Re: Sanal disk oluşturma

Mesaj gönderen n0nex »

Kod: Tümünü seç

ShellExecute(0, nil, 'cmd.exe', '/C Diskpart /s C:\script.txt', nil, SW_SHOW);
Yukarıdaki kod ile C dizini altında bulunan script.txt'yi çalıştırabildim. Böylece yeni bir partition oluşturup, mount edebildim.
Ancak herhangi bir script.txt dosyası olmadan, program içinden script çalıştırabilir miyim?
Yani DiskPart ile çalıştıracağım komutları harici bir text dosyasına yazmayayım istiyorum.
Doğrudan program içerisinde yapamaz mıyım?
Cevapla