Jump to content

Dosya Kopyalanırken Süre Ve Hızını Gösterme


WolfmanTR_
 Share

Recommended Posts

  • Editor

Help dosyasına bakmamışsınız ama.

 

function kopyala(Source,Destination,Copied,Total,FileCopied,FileTotal)
Toplam = Total;
Kaynak = Source;
Hedef = Destination;
mevcutkopyalanan=FileCopied;
Toplamdosya=FileTotal;
end

Bu kodları globa functions a kopyala File.Copy kmutunun callbackfunctions kısmına kopyala yaz.değişkenleri istediğin gibi kullan.

Link to comment
Share on other sites

String.getformattedsize ile yapabilirsin

neresine eklemeliyim ?

 

function CopyCallback(Source,Destination,Copied,Total,FileCopied,FileTotal)
	Progress.SetCurrentPos("Progress1", (Copied / Total) * 100);
	yuzde = Math.Floor((Copied / Total) * 100);
	Progress.SetText("Progress1", "%"..yuzde.."")
	Toplam = Total;
	Kaynak = Source;
	Hedef = Destination;
	mevcutkopyalanan=FileCopied;
	Toplamdosya=FileTotal;
	nYol = INIFile.GetValue("AutoPlay\\Docs\\data.ini","Dosya","Konum")
	Label.SetText("Label3", ""..mevcutkopyalanan);
	end
	nYol = INIFile.GetValue("AutoPlay\\Docs\\data.ini","Dosya","Konum")
	sYol = INIFile.GetValue("AutoPlay\\Docs\\datac.ini","Dosya","Konum")
	File.Copy(nYol,sYol, true, true, false, true, CopyCallback);
	error = Application.GetLastError();
	if error ~= 0 then
	Dialog.Message("Hata!", "Dosya İndirilirken Hata Oluştu.\r\nHata Kodu:"..error, MB_OK, MB_ICONSTOP);
	end
	Dialog.Message("Bilgi", sYol.." konumuna taşındı", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

 

 

 

Süre yok malesef görmedim ben.

 

 

help dosyasında bir örnek buldum"SecontLeft yada SecontLeftFormat " işimize yarar mı ? ben denedim ama hata aldım

 

-- Callback function for HTTP.Download
function DownloadCallback (nDownloaded, nTotal, TransferRate, SecondLeft, SecondsLeftFormat, Message)
    -- Convert total and downloaded bytes into formatted strings
    sDownloaded = String.GetFormattedSize(nDownloaded, FMTSIZE_AUTOMATIC, true);
    sTotal = String.GetFormattedSize(nTotal, FMTSIZE_AUTOMATIC, true);

    -- Set statusdlg title and message
    StatusDlg.SetTitle("Downloading . . . ");
    
    -- Output time left, formatted.
    StatusDlg.SetMessage("Currently downloading file . . . Time Left: " .. SecondsLeftFormat);
    
    -- Output formatted sizes to user through statusdlg status text
    StatusDlg.SetStatusText("Downloaded: " .. sDownloaded .. " / " .. sTotal);

    -- Set meter range (max range = 65534)
    StatusDlg.SetMeterRange(0, 65534);

    -- Set meter position (fraction downloaded * max meter range)
    StatusDlg.SetMeterPos((nDownloaded / nTotal) * 65534);
end



-- Show the StatusDlg
StatusDlg.Show(0, false);

-- Download a file from the internet to the user's computer
-- Uses DownloadCallback() as the callback function
HTTP.Download("http://www.yourdomain.com/downloads/update.exe", _TempFolder .. "\\update.exe", MODE_BINARY, 20, 80, nil, nil, DownloadCallback);

-- Hide the StatusDlg
StatusDlg.Hide();
Edited by wolfman.tr_
Link to comment
Share on other sites

  • 1 ay sonra...

Kalan süreyi hesaplamak için içler dışlar çarpımını kullandım. Yani eğer X MB 1 saniye de kopyalanıyorsa, Toplam MB kaç saniye de kopyalanır şeklinde. Tabi bu +/- 1 saniye farklılık gösterebilir ayrıca kopyalama esnasında başka bir program/işlem vs. işlemciye yük bindirirse süre uzayabilir. Buda sonucu saptırabilir. Bunu geliştirip her saniye de kopyalanan MB cinsinden ya da KB cinsinden veriyi alıp aynı şekilde bir matematiksel işlemle kesine yakın sonuç bulunabilir.
 
http://www.mediafire.com/?b5ao34aw6jdnweo

Link to comment
Share on other sites

Kalan süreyi hesaplamak için içler dışlar çarpımını kullandım. Yani eğer X MB 1 saniye de kopyalanıyorsa, Toplam MB kaç saniye de kopyalanır şeklinde. Tabi bu +/- 1 saniye farklılık gösterebilir ayrıca kopyalama esnasında başka bir program/işlem vs. işlemciye yük bindirirse süre uzayabilir. Buda sonucu saptırabilir. Bunu geliştirip her saniye de kopyalanan MB cinsinden ya da KB cinsinden veriyi alıp aynı şekilde bir matematiksel işlemle kesine yakın sonuç bulunabilir.
 
http://www.mediafire.com/?b5ao34aw6jdnweo

akıllıca bir yöntem, Kendi projeme uyarladığımda bu hatayı alıyorum.

 

pre_1358648000__ekran_alnts.png

 

kodlar:

function CopyCallback(Source,Destination,Copied,Total,FileCopied,FileTotal)
	yuzde = Progress.GetCurrentPos("Progress1");
	Progress.SetText("Progress1", " Kopyalaniyor - %"..yuzde.." - ["..sTamamlanan.."/"..sKopyalanacak.."]");
	FileCopied = File.Getsize(secilendosyalar);
    boyut = String.GetFormattedSize(FileCopied,FMTSIZE_MB, true);
	Label.SetText("kalan", " ["..boyut.."/"..FileTotal.."]");
	Progress.SetCurrentPos("Progress1", (Copied / Total) * 100);
	Label.SetText("ilerleme", Math.Floor(((Copied)/Total)*100) .. "% | " .. String.GetFormattedSize(Copied, FMTSIZE_AUTOMATIC, true) .. "/" .. String.GetFormattedSize(Total, FMTSIZE_AUTOMATIC, true))
	return true
	end
	sTamamlanan = 1;
	sKopyalanacak = Table.Count(secilendosyalar);
	for i,v in pairs(secilendosyalar) do

    File.Copy(v,secilenklasor, true, true, false, true, CopyCallback);

	sTamamlanan = sTamamlanan+1;
	end
	error = Application.GetLastError();
	if error ~= 0 then
	Dialog.Message("Hata!", "Dosya Kopyalanırken Hata Oluştu.\r\nHata Kodu:"..error, MB_OK, MB_ICONSTOP);
	end
	Progress.SetText("Progress1", "");
	Progress.SetCurrentPos("Progress1", 0);
	Input.SetText("Input1", "")
	Label.SetText("Label2", "Hedef Klasörü Seçmek için Tıklayın")
		
		saniye = 0;
Edited by wolfman.tr_
Link to comment
Share on other sites

Dosya sıkıştırmada bir sorun varmış onu düzeltmek için 79.satırdaki "result" yazan yeri _DesktopFolder olarak değiştirmen yeterli masaüstüne kaydetmek istiyorsan..

 

Zip açmaya bakıyorum şimdi..

 

Sorunlar çözüldü !!

 

http://www.mediafire.com/?pc48hs18yps20x0

 

Yanlış anlaşılmasın Yakup ama

 

""..sifre..""

ile

 

sifre

 

arasında hiç fark yok gereksiz tırnak kullanmışsın :D

Edited by nightmare3519
Link to comment
Share on other sites

Umarım istediğin gibi olmuştur

http://www.mediafire.com/?e59emek80cn27a4

 

Bu arada page 1 deki label1 de bir kod eksikliği var sanırım 

 

nSecilen = Dialog.FileBrowse(true, "Program Seçiniz...", _DesktopFolder, "Tüm Dosyalar", "", "dat", true, false);

 

değil

 

nSecilen = Dialog.FileBrowse(true, "Program Seçiniz...", _DesktopFolder, "Tüm Dosyalar", "*.*", "*.*", true, false);

 

olması gerekmiyormu?

Edited by nightmare3519
Link to comment
Share on other sites

"" .. degisken .. ""

bu ibareyi kim ortaya attı, herkes kimden esinlendi onu bir bulursam çok fena yapacam zaten :devil:

 

MostWanted'in AIO derslerinde öyle geçiyor. İlk öğrendiğimde ben de öyle yapıyorum :)

Link to comment
Share on other sites

tamam abartmayın, MostWanted'a sordum, evet ben yazdım onları, yalnız o zamanlar 14 yaşındaydım yeni öğreniyordum dedi. Olur o kadar yani, ben 14 yaşındayken Atari salonlarında mortal kombat oynuyordum, adam burada kod yazıyormuş :)

Link to comment
Share on other sites

tamam abartmayın, MostWanted'a sordum, evet ben yazdım onları, yalnız o zamanlar 14 yaşındaydım yeni öğreniyordum dedi. Olur o kadar yani, ben 14 yaşındayken Atari salonlarında mortal kombat oynuyordum, adam burada kod yazıyormuş :)

ben kimseyi şuçlamıyorum olabilir, ben gördüğüm şeyi kolay unutamam. öyle gördüğüm içinde öyle yapmışım :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...