Max1414 Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 Wie ktoś jak mogę zoptymalizowac ponizszy kod aby szybciej sie lista pobierala?? Bo przykladowo na wolnym laczu(nic sie nie pobiera itp) u mnie trwa to 10s na neo256, a w takich samych warunkach total commander i Internet Explorer odczytuje liste plikow w ok. 2s... jest roznica...[delphi][/delphi] Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 Przed tym całym pobieraniem daj: [code=Delphi] (Sender as TListView).BeginUpdate;hui'(Sender as TListView).EndUpdate; [/code]To wszystko dopiero wyświetli się po skonczeniu, a nie (niepotrzebnie) od razu... Przy np. kilkuset elementach jest spora różnica. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 2, 2006 Autor Zgłoś Share Napisano Sierpień 2, 2006 ciekawy bajer ale w TListView nie mam takiej wlasciwosci jak BeginUpdate i EndUpdate ... a w TIdFTP mam BeginWork i EndWork ale nie wiem za bardzo co wpisac w parametrach, ale to chyba nie chodzi o TIDFTP bo i tak by wyswietlalo na liscie proces pobieraniai tak btw. to chyba nie przyspieszy pobierania listy a nawet jakby tych opcji nie bylo to mozna taka sama liste na tej wyswietlic zeby zaslonic stara, tyle ze to nie jest zbyt dobre rozwiazanie :]. Kurcze ciekawe czemu tak szybko total commander albo Internet Explorer pobieraja liste plikow Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 CYTAT(Max1414)ciekawy bajer ale w TListView nie mam takiej wlasciwosci jak BeginUpdate i EndUpdate ... a w TIdFTP mam BeginWork i EndWork ale nie wiem za bardzo co wpisac w parametrach, ale to chyba nie chodzi o TIDFTP bo i tak by wyswietlalo na liscie proces pobieraniai tak btw. to chyba nie przyspieszy pobierania listy :) a nawet jakby tych opcji nie bylo to mozna taka sama liste na tej wyswietlic zeby zaslonic stara, tyle ze to nie jest zbyt dobre rozwiazanie :]. Kurcze ciekawe czemu tak szybko total commander albo Internet Explorer pobieraja liste plikowJest ListView1.Items.BeginUpdate, ListView1.Items.EndUpdate. Wątpię żeby to Ci całkowicie przyspieszyło kod (z 10sek do 2sek), ale na pewno trochę będzie się szybciej wykonywało. Może później jeszcze spróbuję przejrzeć i zobaczę u siebie co możnaby przyspieszyć. [quote] a nawet jakby tych opcji nie bylo to mozna taka sama liste na tej wyswietlic zeby zaslonic stara, tyle ze to nie jest zbyt dobre rozwiazanie [/quote]Chodzi o to żeby komponent nie wyświetlał tych elementów niepotrzebnie za każdym razem, a nie żeby tego nie było widać. Bo każde wyświetlenie to jest sporo kodu (no i czasu). ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 2, 2006 Autor Zgłoś Share Napisano Sierpień 2, 2006 Ok, dzieki łap "pomogl" Btw. stoperem mierzylem i identyczny efekt pomiedzy z "Update" a bez :] Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 [quote] Ok, dzieki łap \"pomogl\" :) Btw. stoperem mierzylem i identyczny efekt :P pomiedzy z \"Update\" a bez :] [/quote]To za co po "pomógł" jak nie pomogło ? I po co stoperem mierzyłeś ? :D Nie lepiej: [code=Delphi] var t: Cardinal; begin t := GetTickCount; { ... koCBÓYYJ Z[XN [ ]X6VBBFbr6VrŚVćC [/code]? ;) ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 2, 2006 Autor Zgłoś Share Napisano Sierpień 2, 2006 no tez fakt ale nie pomyslalem zeby to programowo mierzyc a pomogl, no bo fajna wlasciwosc listview , na przyszlosc sie przyda, a poza tym nie myslalem ze nic sie nie zmieni bo najpierw dalem a potem sprawdzilem:D Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 Ok, jak już dałeś "pomógł", to Ci pomogę ;)Całe pobieranie zwalnia Ci: [code=Delphi] Size:=(Sender2 as TIdFTP).Size(FileName); [/code]Bo dla każdego pliku wysyła żądanie do serwera o pobranie rozmiaru pliku. Rozmiar dostajesz już w swojej tablicy, masz np linijkę: [quote] '-rw-r--r-- 1 KKKas users 173979 Aug 2 09:32 nazwapliku.blabla.zip' [/quote]To 173979 to jest rozmiar pliku. Z tego pobieraj rozmiar...UPDATE: A, i czy to jest katalog czy nie, to możesz sprawdzać po tym czy pierwsza litera jest 'd' (directory) czy nie.Jak tu np: "drwxr-xr-x" ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 2, 2006 Autor Zgłoś Share Napisano Sierpień 2, 2006 hehehe no teraz to smiga jak samolot DZIEKI WIELKIE!!! Na poczatku wlasnie rozmiar bralem z tej listy :] ale potem jakies problemy mialem i sprawdzalem w ten sposob i juz nie zmienilem z powrotem a i przydatny ten sposob z folderami, tego nie wiedzialem jeszcze raz dzieki wielkie!A jeszcze takie mniej wazne pytanie mam: wie ktos moze jak pobrac date w standardzie dd-mm-yyyy probowalem to przekonwertowac za pomoca FormatDateTime ale to nie dziala bo nazwa miesiaca ta trzy literowa jest niezgodna... wiem ze mozna by zrobic tablice zamienic nazwe trzy literowa na taka jaka jest w standardzie opisowego formatu miesiaca w funkcji formatDateTime, a potem to sobie przekonwerowac na dd-mm-yyyy ale to by spowolnilo troche funkcje, tak mi sie zdaje Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 przezyj help tam jest kilkanascie funkcji do obslugi daty, poszukaj "date time routines" lbo jakos tak. W tym rowniez do kodowania i dekodowania dat Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Sierpień 2, 2006 Zgłoś Share Napisano Sierpień 2, 2006 Weź sobie po prostu Copy(3 pierwsze litery z daty), zamien sobie to na numer miesiaca, dzien to bedzie 5 (i 6) znak i masz ;) Najprościej...A co do tego spowalniania jeszcze... To jak masz taki problem, to sobie powsadzaj w niektóre fragmenty kodu takie coś: [code=Delphi] Log('Czas wykonania: ' + IntToStr(GetTickCount - t) + ' miliZĘN [/code]I póxniej patrzysz co najdłużej się wykonuje i spróbujesz dojść dlaczego, lub jak to inaczej zrobić... ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Max1414 Napisano Sierpień 3, 2006 Autor Zgłoś Share Napisano Sierpień 3, 2006 A tak z ciekwosci to nie ma gotowej procki dla pobrania folderu cos jak FTP.Get dla plikow??Bo ja już sobie taką napisałem ale pytam z ciekawości... Moje projekty: http://wojciechkulik.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.