Hi everybody. I know how retrieve a list of files with the help of FindFirstFile and FindNextFile. (theoreticaly) But I don't know how to sort them alphabeticaly by there filename. Does one of you have got an idea how this can be done? I hope you can halp me :) sign CyBerian
Yes, there is a way,I have not wrote one yet, but I can if it is needed, I was going to write one later on next month, anyway what you need is a simple bubble sort algo. or you can cheat, if your program is using a listbox anyway you can make sure it has the SBS_SORT when you create the list box, then as you send each file to the list box, the list box will sort them, you can then get them out in the order that they have been sorted. But that is cheating. So just let me know if you would like a bubble sort type Algo. and I will write it and e-mail it to you. otherwise I was going to do this next month, as I need it in my ZIP program also.
If you could send me such an algorithm it would be very nice, because i am some kind of new to asm. I learn more each new day, but I am not sure how to create a sort algorithm. thx. sign CyBerian
Here is a bubble sort:
It's not a big ordeal to change this a string comparison. Instead of comparing the DWORDS in the inner loop, compare the strings pointed to by those DWORDS. This way you don't have to move the string data around - just the pointers to the strings. Hope this helps, bitRAKE
; by Andrew Howe ; edi = pointer to some DWORDS ; ecx = Count of DWORDS outerloop: lea ebx, mov eax, cmploop: sub ebx,4 cmp eax, jle notyet xchg eax, notyet: cmp ebx,edi jnz cmploop stosd loop outerloop
CyBerian, I need to know a few things about how you have your file names arranged, like are they all in a block of memory, are they all NULL terminated? do they contain the paths also? or are they just the file names? all this is important to the algo. another is is there a little more room in the memory area you have them stored. All of this is important cuz the bubble sort Algo. swaps the filename positions and with the way windows has long file names, each file could be longer the the other, This means you will have to have more room in the memory block to be able to adjust them around. or another way which is not a good way cuz it wastes memory while your sorting. is to Allocate another block and after the sorting is done you can delete the other block, I just need a little more into, cuz if I write one one way, it might not fit your app. the way you are handleing the files now.
Zcoder, I would be interested in looking at your bubble sort code when you get it done, I wrote one, but I'm not satisfied with it. Ewayne
k At the moment I read all the files(only the filenames,no directory) into a memory block. EveryFile String is NullTerminated HTH. sign CyBerian
Buble sorting algorythm is pretty slow even using assembly ... I know some sorting algorythmn which are much more powerful .... such as the Fast Sorting one's ... it's in C++ but I'll try to translate it ... and I'll repost it !
The "classic" bubble sort compares and exchanges adjacent entries. The above sort is more of a classic "select and exchange" sort, where you're looking for a maxima (or minima) for a sublist on each pass.