At 4:30 PM -0800 3/17/06, Jeffrey Ellis wrote:
The above is functioning as expected when the Target list is missing a file
which exists in the Source list. But it breaks when a file is in the Target
which doesn't exist in the Source. Then, all the files after that don't
match, and it adds all files it finds until the end of the list.
But I'm not sure how I can test for that instance?
What you're attempting to do is a very complicated thing. If there
could be files missing in Target, or in Source, then when you find a
mismatch, how do you know which one is missing something?
Though come to think of it, maybe it's not that hard, since you have
a unique identifier for each thing (the shell path, which is fine for
a purpose like this). So here's a general approach to the problem:
1. Make a function that recurses over a folder, and for every file it
finds, appends to two arrays: one gets the ShellPath and one gets the
Name (or DisplayName if you prefer).
2. Call this for your source and target volumes. So now you have
four arrays, srcPaths, srcNames, targPaths, and targNames.
3. Now iterate over these arrays, with a srcIndex and a targIndex.
Hmm, I tried to describe the next step in words, but pseudocode is
clearer:
srcPath = srcPaths( srcIndex )
targPath = targPaths( destIndex )
if srcPath = targPath then
// they match -- add them to the listboxes as a match, then:
srcIndex = srcIndex + 1
destIndex = destIndex + 1
else
if targPaths.IndexOf( srcPath ) < 0 then
// we have a file in source that's not in the target;
// add this to listboxes as a file added in the source, then:
srcIndex = srcIndex + 1
end if
if srcPaths.IndexOf( targPath ) < 0 thne
// we have a file in the target that's not in the source;
// add this to listboxes as a file added in the target, then:
targPath = targPath + 1
end if
end if
// now, repeat until done!
I think that should pretty much do it.
Good luck,
- Joe
--
Joseph J. Strout
[EMAIL PROTECTED]
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>