Skocz do zawartości

Ghost


Gering

Recommended Posts

Mam pewien problem związany z algorytmem przeszukiwania dysku . Sciągam sobie przykład i kompiluje nic nie zmieniając . Powstaje exe i program chodzi po nacisnieciu przycisku program rozpoczyna szukanie i sie zawiesz ( nie odpowiada ) a HDD ciągle pracuje . Przestaje odpowiadac tez system . Dzieje sie tak po kompilacji w Visual C++ i DevC++ a mój system to WinXp . Myslałem ze powdem jest to ze nie pokazuje rozszezen plików , bo przeciesz program z przykładu zapisuje do listy piki Exe wiec zrobiłem by były widoczne i nic nadal jest tak samo . Pomocy .

Link do komentarza
Udostępnij na innych stronach

Najprostrzy algorytm przeszukujacy cala zawartosc dysku wyglada tak (w delphi):

Procedure szuk(Path:String);
Var F:TWIN32FindData;
      H:THandle;
Begin
 H:=FindFirstFile(PChar(Path+'*.*'),F);
 If H=INVALID_HANDLE_VALUE then exit;
 Repeat
  If (F.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY<>0) and (F.cFilename[0]<>'.') then szuk(Path+F.cFilename+'\');
  If (F.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY)=0 then ;//i tutaj mozna obsluzyc sciezki znalezionych plikow
 until not FindNext(H,F);
 FindClose(H);
end;

funkcje wywoluje sie ze scezka, w ktorej chcemy przeszukac podkatalogi. Trzeba zapamietac, ze w tym algorytmie dodatkowo do konca podanej sciezki trzeba dodac backslash ("\").

Link do komentarza
Udostępnij na innych stronach

Ghost bez obrazy ale żeby napisać antyvira to trzeba posiadać ogromną wiedzę, a tobie nawet nie wychodzi napisanie takiego algorytmu. Pomyśl w jaki sposób działa taki algorytm i napisz go sobie sam lub popatrz na gotowy działający kod który już masz, bo się wysiliłem i sprawdziłem :)

Link do komentarza
Udostępnij na innych stronach

Algorytm działa poprawnie, a nie odpowiada dlatego że jest na głównym wątku programu. Ale po sprawdzeniu zacznie znów odpowiadać. Zobacz wtedy czy będą dodane te elementy do ListBoxa, a jak nie to spróbój zmniejszyć rozmiar elementu który dodajesz (długość łańcucha). Napisz co tam Ci wyszło.

Link do komentarza
Udostępnij na innych stronach

Moge tylko stwierdzic, ze probujesz skakac na zbyt gleboka wode jak dla ciebie. Musisz wiedziec, ze nikt za ciebie programu nie napisze; znudzi sie wrescie kazdemu dopowiadac ciagle cos na jeden temat bo ty sobie rady nie dajesz.
Radzil bym ci zaopatrzec sie w jakas ksiazke o programowaniu dla windows i zaczac od podstaw. Co z tego, ze nauczysz sie tworzyc nowe watki jak w pewnym momencie nie bedziesz wiedzial jak wybrnac z pewnej sytuacji gdy np. program ci sie zawiesi. Musisz mimo wszystko poznac troche teorii dotyczacych problematyki api.
Piszesz program antywirusowy. Czy masz definicje wzorow wirusow, ktore chcesz zwalczyc? W jaki sposob chcesz (jak juz poznasz przeszukiwanie wszystkich katalogow) otwierac dany plik, aby go sprawdzic tak, zeby to trwalo szybko. Chyba nie sadzisz, ze zwykle ReadFile ci wystarczy. Czy znasz takie funkcje jak CreateFileMapping czy MapViewOfFile? Czy masz juz w glowie szybki, zmyslny algorytm przeszukiwania zadanego ciagu? Czy znasz budowe plikow exe PE - 32 bitowych? Czy...Itd, itd.
Nie twierdze, ze nic z tych rzeczy nie umiesz, ale powinienes po tym tekscie sie sam zorientowac czy podolasz tak trudnym zadaniom.

Link do komentarza
Udostępnij na innych stronach

Twardy dobrze mówi. Nikt nie twierdzi że nie napiszesz tego antyvira, ale raczej nie teraz, to ze Ci to bardzo ciezko idzie tylko moze cie zniechecic. Odsylam Cie do literatury, polecam: https://stud.wsi.edu.pl/~webber/czarny/?link=ebooks, jeśli znasz anglika to poszukaj sobie bo jest dostępny w necie "Programowanie windows" Charlesa Petzolda. Miłej lektury

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  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.

×
×
  • Utwórz nowe...