Thread View: pl.comp.lang.asm
9 messages
9 total messages
Started by Remek
Sun, 25 Sep 2011 23:41
Lista plików w katalogu
Author: Remek
Date: Sun, 25 Sep 2011 23:41
Date: Sun, 25 Sep 2011 23:41
38 lines
2255 bytes
2255 bytes
Witam Walczę z przerwami nad programem listującym pliki w katalogu. Jedna z wersji wykorzystuje DOS-owe polecemie dir. Wykonanie polecenia daje: ----------------------------------------------------------------- Wolumin w stacji E nie ma etykiety. Numer seryjny woluminu: 2B60-0E0C Katalog: E:\ArchRW4\Asembler\Asembler32\Masm32\CwiczMasm\Format\Listing\XP\2 2010-10-28 21:37 <DIR> . 2010-10-28 21:37 <DIR> .. 2011-09-26 01:29 16 lista.bat 2009-12-20 05:58 10˙958 Listing.asm 2008-09-23 12:46 520 Listing.bat 2009-12-20 05:58 5˙632 Listing.exe 2007-12-01 16:38 45 Listing.rc 2009-12-20 05:58 860 Listing.res -------------------------------------------------------------------- Aby otrzymać postać: Listing.asm 10 kB Listing.bat 0,5 kB Listing.exe 5 kB muszę plik dodatkowo obrabiać w napisanym programie. Efekty są różne w zależności od ilości podkatalogów (które usuwam) i od tego czy polecenie jest realizowane w Win 98, czy WIn XP (różna ilość spacji). Druga wersja bazuje na tutorialu Iczeliona strona 31/"Testowanie kontrolki widoku listy". W tej wersji jednak uzyskuję tylko nazwę pliku bez jego rozmiaru. Jeśli ktoś wie jak to zrobić proszę o podpowiedź. Ewentualnie mogę podesłać wspomniana stronę tutoriala. Remek
Re: Lista plików w katalogu
Author: Bogdan (bogdro)
Date: Mon, 26 Sep 2011 16:19
Date: Mon, 26 Sep 2011 16:19
52 lines
3177 bytes
3177 bytes
W dniu 26.09.2011 01:41, Remek pisze: > Witam > > Walczę z przerwami nad programem listującym pliki w katalogu. Jedna z wersji > wykorzystuje DOS-owe polecemie dir. Wykonanie polecenia daje: > > ----------------------------------------------------------------- > Wolumin w stacji E nie ma etykiety. > Numer seryjny woluminu: 2B60-0E0C > > Katalog: > E:\ArchRW4\Asembler\Asembler32\Masm32\CwiczMasm\Format\Listing\XP\2 > > 2010-10-28 21:37 <DIR> . > 2010-10-28 21:37 <DIR> .. > 2011-09-26 01:29 16 lista.bat > 2009-12-20 05:58 10˙958 Listing.asm > 2008-09-23 12:46 520 Listing.bat > 2009-12-20 05:58 5˙632 Listing.exe > 2007-12-01 16:38 45 Listing.rc > 2009-12-20 05:58 860 Listing.res > -------------------------------------------------------------------- > > Aby otrzymać postać: > > Listing.asm 10 kB > Listing.bat 0,5 kB > Listing.exe 5 kB > > muszę plik dodatkowo obrabiać w napisanym programie. Efekty są różne w > zależności od ilości podkatalogów (które usuwam) i od tego czy polecenie > jest realizowane w Win 98, czy WIn XP (różna ilość spacji). Oprócz tego, uruchamianie dodatkowego programu i przeglądanie jego wyników raczej nie będzie zbyt wydajne. > Druga wersja bazuje na tutorialu Iczeliona strona 31/"Testowanie kontrolki > widoku listy". W tej wersji jednak uzyskuję tylko nazwę pliku bez jego > rozmiaru. Jeśli ktoś wie jak to zrobić proszę o podpowiedź. Ewentualnie mogę > podesłać wspomniana stronę tutoriala. Zobacz, jak działa ta lista. Czytaj ręcznie listę plików w katalogu - raz, że to będzie szybsze, to jeszcze zwykle od razu masz więcej informacji niż tylko nazwa pliku. W C są od tego funkcje opendir, readdir i closedir, nie wiem jak w win32 API (ale mogę spróbować znaleźć). Co do strony tutoriala, to lepiej podaj link. -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.Xiph.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: Lista plików w katalogu
Author: Remek
Date: Mon, 26 Sep 2011 16:43
Date: Mon, 26 Sep 2011 16:43
9 lines
1276 bytes
1276 bytes
Użytkownik "Bogdan (bogdro)" napisał: > Co do strony tutoriala, to lepiej podaj link. W tym sęk, że nie mogę jej znaleźć. Googel nie znajduje oryginału i też nie znajduje polskiego tłumaczenia inżyniera Wałaszka. Wygląda na to, że strony zostały usunięte, albo inaczej się nazywają. Popróbuję jeszcze. Remek
Re: Lista plików w katalogu
Author: Michoo
Date: Mon, 26 Sep 2011 17:54
Date: Mon, 26 Sep 2011 17:54
10 lines
1144 bytes
1144 bytes
W dniu 26.09.2011 01:41, Remek pisze: > W tej wersji jednak uzyskuję tylko nazwę pliku bez jego > rozmiaru. Jeśli ktoś wie jak to zrobić proszę o podpowiedź. Ewentualnie mogę > podesłać wspomniana stronę tutoriala. FindFirstFile,FindNextFile,GetFileType,GetFileSize i sprintf do formatowania -- Pozdrawiam Michoo
Re: Lista plików w katalogu
Author: Remek
Date: Tue, 04 Oct 2011 23:32
Date: Tue, 04 Oct 2011 23:32
11 lines
1250 bytes
1250 bytes
Użytkownik "Michoo" napisał: > FindFirstFile,FindNextFile,GetFileType,GetFileSize i sprintf do > formatowania Która z tych funkcji listuje pliki z podaniem rozmiaru? Z tego co czytałem te funkcje Windows nie podają atrybutów. Nie sądzę, aby rozmiar był atrybutem, ale te właśnie fubkcje są w moim programie i rozmiarów nie podają. Remek
Re: Lista plików w katalogu
Author: Michoo
Date: Wed, 05 Oct 2011 08:57
Date: Wed, 05 Oct 2011 08:57
30 lines
1635 bytes
1635 bytes
W dniu 05.10.2011 01:32, Remek pisze:
> Użytkownik "Michoo" napisał:
>
>> FindFirstFile,FindNextFile,GetFileType,GetFileSize i sprintf do
>> formatowania
>
> Która z tych funkcji listuje pliki z podaniem rozmiaru?
Żadna nie listuje. Listować musisz sobie sam.
> Z tego co czytałem
> te funkcje Windows nie podają atrybutów. Nie sądzę, aby rozmiar był
> atrybutem, ale te właśnie fubkcje są w moim programie i rozmiarów nie
> podają.
GetFileSize podałem dla zmyłki.
Algorytm jest mniej więcej taki:
list(ścieżka):
FindFirst(ścieżka)
while next=FindNext()
if(GetType(next)==dir)
list(next)
else
size=GetSize
sprintf(buf,"%s %d",next,size);
MessageBox(buf)
--
Pozdrawiam
Michoo
Re: Lista plików w katalogu
Author: Remek
Date: Wed, 05 Oct 2011 18:52
Date: Wed, 05 Oct 2011 18:52
12 lines
1271 bytes
1271 bytes
Użytkownik "Bogdan (bogdro)" napisał: > Co do strony tutoriala, to lepiej podaj link. Dzięki uprzejmości autora tłumaczenia link się odnalazł: http://edu.i-lo.tarnow.pl/inf/prg/002_winasm/0032.php Z tego co zauważyłem tutorial został rozbudowany. Kontrolka pokazuje rozmiar pliku. Problem w tym jak to co się pokazuje w oknie zapisać do pliku txt. Remek
Re: Lista plików w katalogu
Author: Bogdan (bogdro)
Date: Thu, 06 Oct 2011 15:46
Date: Thu, 06 Oct 2011 15:46
27 lines
2222 bytes
2222 bytes
W dniu 05.10.2011 20:52, Remek pisze: > Użytkownik "Bogdan (bogdro)" napisał: > >> Co do strony tutoriala, to lepiej podaj link. > > Dzięki uprzejmości autora tłumaczenia link się odnalazł: > > http://edu.i-lo.tarnow.pl/inf/prg/002_winasm/0032.php > > Z tego co zauważyłem tutorial został rozbudowany. Kontrolka pokazuje rozmiar > pliku. Problem w tym jak to co się pokazuje w oknie zapisać do pliku txt. Do obsługi plików masz CreateFile i WriteFile lub FileWrite (nie pamiętam dokładnie). Listę plików masz, według kodu na stronie (i podpowiedzi kolegów), dzięki FindFirstFile+FindNextFile. Te funkcje zwracają struktury typu WIN32_FIND_DATA. Ze struktur tych procedura ShowFileInfo w kodzie na stronie wyciąga [edi].cFileName i [edi].nFileSizeLow. Wystarczy więc te pola zapisywać do pliku. Przerabianie DWORDa na napis na pewno już masz (a jeśli nie, to możesz użyć wsprintf, jak na tej stronie), więc wystarczy przerobić i bufor wyjściowy zapisać do pliku. -- Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS) Kurs asemblera x86 (DOS, GNU/Linux):http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 www.Xiph.org www.TorProject.org Soft (EN): miniurl.pl/bogdro-soft
Re: Lista plików w katalogu
Author: Remek
Date: Thu, 06 Oct 2011 22:48
Date: Thu, 06 Oct 2011 22:48
45 lines
2078 bytes
2078 bytes
Użytkownik "Bogdan (bogdro)" napisał:
> procedura ShowFileInfo w kodzie na stronie wyciąga [edi].cFileName i
[edi].nFileSizeLow.
Masz na myśli to?
======================================
ShowFileInfo PROC USES edi row:DWORD, lpFind:DWORD
LOCAL lvi: LV_ITEM
LOCAL buffer[20]: BYTE
mov edi, lpFind
ASSUME edi: PTR WIN32_FIND_DATA
mov lvi.imask, LVIF_TEXT + LVIF_PARAM
push row
pop lvi.iItem
mov lvi.iSubItem, 0
lea eax, [edi].cFileName
mov lvi.pszText, eax
push row
pop lvi.lParam
invoke SendMessage, hList, LVM_INSERTITEM, 0, addr lvi
mov lvi.imask, LVIF_TEXT
inc lvi.iSubItem
invoke wsprintf, addr buffer, addr template, [edi].nFileSizeLow
lea eax, buffer
mov lvi.pszText, eax
invoke SendMessage, hList, LVM_SETITEM, 0, addr lvi
ASSUME edi: NOTHING
ret
ShowFileInfo endp
===========================================================
Dzięki za podpowiedź. Dzięki niej rozgryzłem tę strukture i program działa.
Jeszcze tylko optymalizacja i procedury formatowania tekstu.
Remek
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads