Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pomocy]Sprawdzanie Wagi i ilości plików (patcher)


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Kto napisze dla mnie funkcję która:

1.sprawdza wagę pliku np. 201415/1505812KB

2.Ile plików na ile pobrano np. 5/20

3.Ile jest % pobierania.

 

Kilka funkcji:

 

Global $metin2 = @ScriptDir
Global $m2ordner = @ScriptDir
Global $ScriptDir = @ScriptDir
Global $TempDir = @TempDir
Global $AppDataDir = @AppDataDir
Global $url = "link do strony"
$file = @TempDir&"\Aktualizacja.txt"
    InetGet( $url&"\Aktualizacja.txt" , $file)
    $lines = _FileCountLines($file)
$datei = FileReadLine($file,$lines)
        GUICtrlSetData($stat,"Sprawdzanie pliku: "& $datei & @CRLF & GUICtrlRead($stat))
            $size_ordner = FileGetSize( $ScriptDir&"\"&$datei)
            If $size_inet <  $size_ordner or $size_inet >  $size_ordner Then
                GUICtrlSetData($stat,"Pobieranie pliku: "& $datei & @CRLF & GUICtrlRead($stat))
                InetGet($url&$datei , $ScriptDir& "\" & $datei , 1 , 1)
                while 1
                    $hFileSize = FileGetSize($ScriptDir & "\" & $datei)
                    $iPercent = round ( @InetGetBytesRead  /  $size_inet   *100)
                    GUICtrlSetData($Progress1, $iPercent)
                If $hFileSize = $size_inet Then
                GUICtrlSetData($Progress1, 100)
                ExitLoop
 
GUICtrlSetData($stat,"Sprawdzono plik: "& $datei & @CRLF & GUICtrlRead($stat))
            EndIf
        Else
            InetGet($url&$datei,$ScriptDir&"\"&$datei,1,1)
            GUICtrlSetData($stat, "Pobieranie pliku: "& $datei& @CRLF & GUICtrlRead($stat))
            while 1
                $hFileSize = FileGetSize($ScriptDir & "\" & $datei)
 
                $iPercent = round ( @InetGetBytesRead  /  $size_inet   *100)
 
                GUICtrlSetData($Progress1, $iPercent)
 
            If $hFileSize = $size_inet Then
                GUICtrlSetData($Progress1, 100)
                ExitLoop

 

Nwm czy te funkcje się przydadzą ale je daję.

 

 

Jeśli można skrypt proszę na PW

Opublikowano

Nie jestem fanem "daj gotowca", dlatego dam trochę porad. Ale nie na PW, bo ktoś potem będzie potrzebować mojego kodu i nie doszuka się.

 

Sprawdzanie wagi pliku:

Sprawdzanie przez InetGetSize nie ma najmniejszego sensu bo zajmuje NAPRAWDĘ dużo czasu. Trzeba zrobić plik z listą plików oraz ich wielkościami który będzie pobierany, "rozkładany" na części pierwsze i z tego pliku wszystko będzie brane. Można też w nim zapisać ścieżki w których będą dane pliki zapisywane oraz nazwy tych plików (o ile nie zdołamy ich wyciągnąć z linku za pomocą paru sztuczek)

przykładowo:

link|wielkość pliku|ścieżka do zapisu pliku relatywna do @scriptdir
ILE PLIKÓW POBRANO:

InetGet i InetGetInfo. Pętla pobierania.

Jeśli już użyjemy powyższej metody z plikiem w którym będą linki do plików, przyjmujemy że w jednej linijce pliku będzie link, wielkość itd. jednego pliku. Możemy więc użyć _FileCountLines żeby stworzyć tablicę w której będą wszystkie dane rozdzielone za pomocą StringSplit na przykład.

I za pomocą tej tablicy oraz pętli For (While też może być, ale po co sobie utrudniać życie) robimy instrukcję podobną do tej:

Dim $linki[_FileCountLines("patch.txt")] ;przyjmujemy że w folderze z skryptem jest plik patch.txt który zawiera wszystkie dane - tworzymy tablicę o wielkości linijek w tym pliku

;gdzieś tutaj wstawiamy kod odczytujący dane z tego pliku

;pętla - UBound zwraca wielkość tablicy
For $i = 0 to UBound($linki) Step +1
  ;InetGet itd. - pętla for robi za nas wszystko, $i+1 to numerek pobranego pliku
Next
ILE % POBRANE

Tutaj liczy się matematyka.

$pos = Ceiling((InetGetInfo($inet, 0)/$ini_size[$i][1])*100)
To działanie zwraca nam ile % pliku się pobrało (w zaokrągleniu). $ini_size to wielkość pliku z patch.txt, InteGetInfo z flagą 0 zwraca nam ilość pobranych bajtów. Prościzna.
846331404756772371599.jpeg

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...