Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Pascal / Delphi / Delphi.NET

Cevapla
 
LinkBack Seçenekler
Eski 10/05/2008, 00:48   #1 (permalink)
Üye
 
metali Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Mesaj: 117
Varsayılan processbar kullanımı

merhabalar tekrar, delphi de en çok merak ettiğim konulardan biriside processbar kullanımı. bununla ilgili forumun arama aparatını kullanarak baktım ama pek aydınlatıcı bişey yoktu.

20.000 adet kayıdım var bunları mysql'den access'a aktarıyorum. burdakii bekleme süresi aşşağı yukarı 2 dk kadar oluyor bu süreçte bir processbar koyup verilerin kopyalama durumunu grafik olarak göstermek istiyorum.. bir yol çizmek gerekirse, neresinden başlamalıyım hocalarım.
__________________
metali hatta değil   Alıntı Yaparak Yanıtla
Eski 10/05/2008, 01:01   #2 (permalink)
Kodlarım, Canlarım...
 
cemaliozan Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2005
Yer: » Delphi Bölümü «
Mesaj: 1,677
Varsayılan

Biraz karışık ve cxProgressbar kullanmışım, ama aynı şey...

PHP Kodu:
procedure TForm1.SpeedButton1Click(SenderTObject);
  Var
    
DosyaAdi    String;
    
RC          Integer;
    
tmpS        String;
    
tmpF        TStringList;
    {
      
IndexTitleList,
      
IndexListNoBody,
      
IndexListBody TStringList;
    }
    
DosyaVarmi  Boolean;
    
DosyaIndex  Integer;
    
IndexTitle  String;
begin
  
try
    
tmpF              := TStringList.Create;
    {
      
IndexListNoBody := TStringList.Create;
      
IndexListBody   := TStringList.Create;
      
IndexTitleList  := TStringList.Create;
    }
    
RC  := wwClientDataSet1.RecordCount;
    
wwClientDataSet1.First;
    
cxProgressBar1.Position := 0;
    While 
Not wwClientDataSet1.Eof do
    
begin
      IndexTitle 
:= wwClientDataSet1Title.AsString;
      
Edit1.Text := IndexTitle;
      
tmpS       := KarakterDuzelt(IndexTitle);

      
DosyaAdi   := 'pek-cok-net-tips-'+tmpS;
      
DosyaIndex := 0;
      
Repeat
        DosyaVarmi 
:= FileExists(ExtractFilePath(paramstr(0))+'edosya\delphi\tips\nobody\'+DosyaAdi+'.ascx');
        if DosyaVarmi then
        begin
          Inc(DosyaIndex);
          DosyaAdi := '
pek-cok-net-tips-'+tmpS+IntToStr(DosyaIndex);
        end;
      Until Not DosyaVarmi;

      With SynExporterHTML1 do
      begin
        Title           := '';
        UstContent      := '';
        AltContent      := '';
        // no body
        SadeceBody      := True;
        ExportAsText    := True;
        ExportAll(DBSynEdit1.Lines);
        SaveToFile(ExtractFilePath(paramstr(0))+'
exportedosyadelphitipsnobodyhtml'+DosyaAdi+'.html');
        SaveToFile(ExtractFilePath(paramstr(0))+'
exportedosyadelphitipsnobody'+DosyaAdi+'.ascx');
        // body li
        SadeceBody      := False;
        Title           := IndexTitle;
        UstContent      := '
<span class="indextitle">'+IndexTitle+'</span>';
        AltContent      := '';
        ExportAsText    := True;
        ExportAll(DBSynEdit1.Lines);
        SaveToFile(ExtractFilePath(paramstr(0))+'
exportedosyadelphitipsbodyhtml'+DosyaAdi+'.html');
        SaveToFile(ExtractFilePath(paramstr(0))+'
exportedosyadelphitipsbody'+DosyaAdi+'.ascx');
      end;
       tmpF.Clear;
       tmpF.LoadFromFile(ExtractFilePath(paramstr(0))+'
exportedosyadelphitipsbody'+DosyaAdi+'.ascx');
       With zQuery1 do
       begin
         Close;
         Sql.Clear;
         Params.Clear;
         Params.CreateParam(ftString,'
ptips',ptInput);
         Params.CreateParam(ftString,'
plink',ptInput);
         Params.CreateParam(ftString,'
pbaslik',ptInput);
         Params.CreateParam(ftVariant,'
picerik',ptInput);
         Params.CreateParam(ftString,'
pdosya',ptInput);

         ParamByName('
ptips').AsString   := 'kod-bank';
         ParamByName('
plink').AsString   := 'pek-cok-net~pek-cok-qedosya-mdelphitips-xdb-w'+tmpS+'.html';
         ParamByName('
pbaslik').AsString := IndexTitle;
         ParamByName('
picerik').AsString := tmpF.Text;
         ParamByName('
pdosya').AsString  := 'edosyadelphitipsbody'+DosyaAdi+'.ascx';
         Sql.Add(
         '
INSERT INTO delphi_tips (tips,link,baslik,icerik,gonderen_idVALUES('+
               '
:ptips,:plink,:pbaslik,:picerik,:pdosya)');
         ExecSQL;      
       end;
      {
      IndexTitleList.Add('
<span class="tipstitlelist">'+IndexTitle+'</br></span>'+#13#10);
      IndexListNoBody.Add('
<a href="pek-cok-net~pek-cok-qedosya-mdelphitips-xnobody-w'+tmpS+'.html" class="dtips">'+
                    '
<span class="dtipsspan">'+IndexTitle+'</span></a></br />');
      IndexListBody.Add('
<p><a href="pek-cok-net~pek-cok-qedosya-mdelphitips-xbody-w'+tmpS+'.html" class="dtips">'+
                    '
<span class="dtipsspan">'+IndexTitle+'</span></a></br/>');
      }
      wwClientDataSet1.Next;
      cxProgressBar1.Position := (wwClientDataSet1.RecNo*100) Div RC;
      //Application.ProcessMessages;
      Sleep(3);
    end;
  finally
    wwClientDataSet1.EnableControls;
    {
    IndexListNoBody.SaveToFile(ExtractFilePath(Paramstr(0))+'
exportedosyadelphitipsnobodyindexnobody.html');
    IndexListBody.SaveToFile(ExtractFilePath(Paramstr(0))+'
exportedosyadelphitipsbodyindexbody.html');
    IndexTitleList.SaveToFile(ExtractFilePath(Paramstr(0))+'
exportedosyadelphitipsindextipstitlelist.html');
    IndexListNoBody.Free;
    IndexListBody.Free;
    IndexTitleList.Free;
    }
    tmpF.Free;
    ZQuery1.Close;
    zConnection.Connected := False;
    ShowMessage('
Bitti);
  
end;
end
__________________
Haberbox | Tek Sevgi | Genel Seçimler | Magice Book | Yerel Seçimler
Yaşamaya Değer Bir Hayattan, Sevmeye Değer Bir Aşktan, Dostluğa Değer Bir Arkadaşlıktan Asla Vazgeçmeyin...
cemaliozan hatta değil   Alıntı Yaparak Yanıtla
Eski 10/05/2008, 01:18   #3 (permalink)
Üye
 
Caylaq Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 12/2007
Yer: DELPHI LAND
Mesaj: 642
Varsayılan

Hocam bende AutoCreate formları oluştururken yani Program açılırken aşaıdaki şekilde kullanıyorum


Alıntı:
begin
Form83:=TForm83.create(Application);
Form83.show;
Form83.update;
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Application.Initialize;
Application.Title := '75 Ets ';
Application.CreateForm(TMainForm, MainForm);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm8, Form8);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm11, Form11);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm31, Form31);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm38, Form38);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm43, Form43);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm50, Form50);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm51, Form51);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm52, Form52);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm53, Form53);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm54, Form54);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm55, Form55);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm56, Form56);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm57, Form57);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm58, Form58);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm60, Form60);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm61, Form61);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm62, Form62);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm63, Form63);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm64, Form64);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm65, Form65);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm47, Form47);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm68, Form68);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm26, Form26);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm34, Form34);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm33, Form33);
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.update;
Application.CreateForm(TForm25, Form25);
// Sleep(5000); // 5 sn. bekle
Form83.Gauge1.Progress:=Form83.Gauge1.Progress+1;
Form83.Release;
Application.Run;






Umarım YArarlı Olur


İyi çalışmalar




.
Caylaq hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 18:35   #4 (permalink)
Üye
 
metali Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Mesaj: 117
Varsayılan

arkadaşlar bu konu hakkında; kod değilde daha çok nasıl bir mantık kurmalıyım onu merak ediyorum. mesela bir kayıdın kopyalanma süresini hesaplayıp, toplam kayıt sayısını bu süreyle progressbarın uzunluguna eşitleyip yapmak aklıma geliyor. bunu yapan arkadaslarım nasıl bir mantık kurdular acaba... kısaca anlatabilirmiyiz
__________________
metali hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 19:00   #5 (permalink)
Kodlarım, Canlarım...
 
cemaliozan Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2005
Yer: » Delphi Bölümü «
Mesaj: 1,677
Varsayılan

Haklısın balık yemeyi değil tutmayı öğrenmek istiyorsun. Ama kod okumayı ve kendi mantığını çıkarmayıda öğrenmelisin.

Bu yüzden yine kod örneği veriyorum. Sen yorum yap, biz arkandan geliriz.

PHP Kodu:
function SplitFile(FileName TFileNameSizeofFiles IntegerProgressBar TProgressBar) : Boolean;
var
  
Word;
  
fssStreamTFileStream;
  
SplitFileNameString;
begin
  ProgressBar
.Position := 0;
  
fs := TFileStream.Create(FileNamefmOpenRead or fmShareDenyWrite);
  try
    for 
:= 1 to Trunc(fs.Size SizeofFiles) + do
    
begin
      SplitFileName 
:= ChangeFileExt(FileName'.'FormatFloat('000'i));
      
sStream := TFileStream.Create(SplitFileNamefmCreate or fmShareExclusive);
      try
        if 
fs.Size fs.Position SizeofFiles then
          SizeofFiles 
:= fs.Size fs.Position;
        
sStream.CopyFrom(fsSizeofFiles);
        
ProgressBar.Position := Round((fs.Position fs.Size) * 100);
      
finally
        sStream
.Free;
      
end;
    
end;
  
finally
    fs
.Free;
  
end;

end
__________________
Haberbox | Tek Sevgi | Genel Seçimler | Magice Book | Yerel Seçimler
Yaşamaya Değer Bir Hayattan, Sevmeye Değer Bir Aşktan, Dostluğa Değer Bir Arkadaşlıktan Asla Vazgeçmeyin...
cemaliozan hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 19:26   #6 (permalink)
Üye
 
Caylaq Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 12/2007
Yer: DELPHI LAND
Mesaj: 642
Varsayılan

Alıntı:
kayıt sayısını bu süreyle progressbarın uzunluguna eşitleyip yapmak
Hocam Tamam işte Mantık bu. Kurmuşsun iste



.
__________________
Soru Sormadan Önce:
http://forum.ceviz.net/announcement.php?f=27&a=55





Sigarayı BIRAKMANIN YOLLARI.......!
http://www.yesilay.org.tr/sigara_nasil_birakilmali.asp
Caylaq hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 19:33   #7 (permalink)
Kodlarım, Canlarım...
 
cemaliozan Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2005
Yer: » Delphi Bölümü «
Mesaj: 1,677
Varsayılan

Oran orantı işi yani..

Şöyleki :

T = Toplam Uzunluk
G = Geçerli Konum
P = Progressbar'da bulunulması gereken posizyon
%100 = Sabit progressbar yüzdesel değeri

P = (Gx100) Div T

Hemen örnek yapalım....

T = 150
G = 20

P = (20x100) Div 150 = 13.3 Olur.

Yani toplam işlemin %13 lük kısmı gerçekleşmiş olur...
__________________
Haberbox | Tek Sevgi | Genel Seçimler | Magice Book | Yerel Seçimler
Yaşamaya Değer Bir Hayattan, Sevmeye Değer Bir Aşktan, Dostluğa Değer Bir Arkadaşlıktan Asla Vazgeçmeyin...
cemaliozan hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 19:33   #8 (permalink)
Üye
 
metali Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Mesaj: 117
Varsayılan

merhaba hocam, yollagınız progressbar kodu çok sade, eminim çokta kolaydır. ben anladıgım satırları karşılarına yazdım. anlamadıgım ve kullanımını bilmediğim çok komut var ama fazla bir fatura çıkarıp sizinde başınızı agrıtmak istemedim. istediklerimi satıların karşılarına yazdım

teşşekkürler....
Kod:
function SplitFile(FileName : TFileName; SizeofFiles : Integer; ProgressBar : TProgressBar) : Boolean; 
var 
  i : Word; 
  fs, sStream: TFileStream; // file stream nedir?
  SplitFileName: String; 
begin 
  ProgressBar.Position := 0;  // progressbarın konumunu sıfıra getir
  fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);  // burdaki oluşturma komutunu anlamadım
  try  // hata denetimi
    for i := 1 to Trunc(fs.Size / SizeofFiles) + 1 do //  birden dosya boyutu kadar bir döngü, lütfen yanlışımı düzeltin 
    begin 
      SplitFileName := ChangeFileExt(FileName, '.'+ FormatFloat('000', i));  //bu satırdan bir şey anlamadım :(
      sStream := TFileStream.Create(SplitFileName, fmCreate or fmShareExclusive);  // bu satırdan da :( 
      try 
        if fs.Size - fs.Position < SizeofFiles then // fs nin boyutundan fs nin pozisyonunu cıkarıp EĞER dosya boyutundan küçükse;
          SizeofFiles := fs.Size - fs.Position;  // dosya boyutu = dosya boyutu-dosya pzoisyonuna eşitle
        sStream.CopyFrom(fs, SizeofFiles);  // kopyalama işlemi yapılıyor ama nasıl bir kopyalama?
        ProgressBar.Position := Round((fs.Position / fs.Size) * 100);  // progressbarın pozisyonununu eşitlenmesi
      finally 
        sStream.Free; 
      end; 
    end; 
  finally 
    fs.Free; 
  end; 
end;
__________________
metali hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 19:38   #9 (permalink)
Üye
 
metali Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 01/2008
Mesaj: 117
Varsayılan

son 2 cevabı yeni gördüm arkadaşlar oldukça basit bir anlatım.. mantıgı da aslında baya kolay ama. komut bilgimin az oluşundan dolayı sanırım biraz sıkıntı yaşadım. toplam uzunluğu toplam toplam dosya boyutu ile eşitlemişsinizz...

şimdii şöyle yapcm...

1. bütün dosyaların boyutlarını toplayacagım...
2. aktif olan kayıta kadar alınmış dosya toplamını 100 ile çarpıp;
3. toplam dosyalar boyutuna böleceğim
4. ve progressbar konumuna eşitleyceğim

evet yaa... süper

ama benimkiler bir dosya değil ki bir kayıt
__________________
metali hatta değil   Alıntı Yaparak Yanıtla
Eski 11/05/2008, 19:40   #10 (permalink)
Kodlarım, Canlarım...
 
cemaliozan Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2005
Yer: » Delphi Bölümü «
Mesaj: 1,677
Varsayılan

Alıntı:
metali, mesajından alıntı: Mesajı Gör
ama benimkiler bir dosya değil ki bir kayıt
Ha toplam dosya ha toplam kayıt sayısı ne farkeder ?
__________________
Haberbox | Tek Sevgi | Genel Seçimler | Magice Book | Yerel Seçimler
Yaşamaya Değer Bir Hayattan, Sevmeye Değer Bir Aşktan, Dostluğa Değer Bir Arkadaşlıktan Asla Vazgeçmeyin...
cemaliozan hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Not in kullanımı the lizard king Veritabanları & SQL 5 31/01/2008 15:19
Ocr kullanımı apathe Uygulama Yazılımları / Hazır Betikler 2 24/03/2007 08:19
ASP ve SQL Kullanımı. aspogren ASP 8 22/02/2007 23:55
max() kullanımı nelanne Veritabanları & SQL 10 29/05/2005 23:06
GCC kullanımı nomyon GNU / Linux / UNIX / BSD / Pardus 5 07/04/2004 18:19


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 09:23.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net