Solved

Compare 2 filepaths (String)

Posted on 1998-10-03
1
270 Views
Last Modified: 2010-04-30

Hi, I have two filepaths and would like to compare in sort
that the following result is produced.

IE.
1 C:\Mary\MyFiles\Data\Graphics\file.tmp
2 C:\Mary\MyFiles\Upload\FTP\file.tmp

Result:
  \Upload\FTP\file.tmp

The idea is to compare number 2 with 1 and remove
folders that are the same.
Note: Without removeing the filename.

0
Comment
Question by:mary_idc
1 Comment
 

Accepted Solution

by:
jfayling earned 20 total points
ID: 1437934
here is an example of how to use this funciton!


MsgBox CompareFilePaths("C\Mary\MyFiles\Data\Graphics\file.tmp",_
"C:\Mary\MyFiles\Upload\FTP\file.tmp")




Function CompareFilePaths(ByVal strPath1 As String, ByVal strPath2 As String) As String

On Error GoTo CompareFilePathsError

Dim strNewPath As String
Dim lTotal1 As Long
Dim lTotal2 As Long
Dim varArray1 As Variant
Dim varArray2 As Variant
Dim i As Long
Dim j As Long

   
    lTotal1 = ParseString(strPath1, "\", varArray1)
    lTotal2 = ParseString(strPath2, "\", varArray2)
   
    i = 0
    j = 0
    strNewPath = ""
   
    Do
        If LCase$(CStr(varArray2(j))) <> LCase$(CStr(varArray1(j))) Then
            For i = j To lTotal2
                strNewPath = strNewPath + "\" + CStr(varArray2(i))
            Next
            Exit Do
        End If
        j = j + 1
    Loop Until j > lTotal2
   
    CompareFilePaths = strNewPath

    Exit Function
   
CompareFilePathsError:
    CompareFilePaths = ""

End Function


Function ParseString(LookIn As String, Search As String, ByRef ReturnArray As Variant) As Long
'
' Function Name:    ParseString
'
' Author:           JF Software (Jason R. Fayling)
'                   jfayling@glasscity.net
' Date:             1/10/97
'
' Inputs:           LookIn  (STRING)        String to use
'                   Search  (STRING)        What to look for in string
'                   ReturnARRAY (VARIANT)   Any found will be stored here
'
' Outputs:          ParseString (INTEGER)   Number of items in ReturnArray
'                                           starting with zero. If no item
'                                           was found, then returns -1
'
'                   ReturnArray (VARIANT)   Found items from string
'
' Purpose:          ParseString will take a string and seperate it into
'                   user-defined parts.
'                   Example:
'
'                       Dim i as Integer
'                       Dim j as integer
'                       dim Temp as variant
'
'                       i=ParseString("10/24/97","/",Temp)
'
'                       for j=0 to i
'                           msgbox Temp(j)
'                       next j
'
'                   This will display 10 then 24 then 97
'
'
' You are granted royalty free use of this code in your projects.   You may
' remove this comment block in your own projects.   If you intend to redistribute
' this function as part of a library or outside of your own VB project then you
' must leave this block in tact.


Dim X As Long
Dim start As Long
Dim pos As Long
Dim track As Long
ReDim TempHolder(Len(LookIn)) As String


    track = 0
    start = 1
   
    ' Start at the beginning of string and move down until it finds
    ' character it is looking for. Once it finds the character, it
    ' places everything before it and after the last found item into
    ' a new element in an array
   
    Do
        pos = InStr(start, LookIn, Search, vbBinaryCompare)
        If pos > 0 Then
            TempHolder(track) = Mid$(LookIn, start, (pos - start))
            track = track + 1
            start = pos + Len(Search)
        End If
    Loop Until pos = 0
   
    ' Make sure everything has been copied into Temp array
    TempHolder(track) = Mid$(LookIn, start, Len(LookIn))
       
    ReDim tempholder2(track)
   
    ' Move only elements with data in them
    For X = 0 To track
        tempholder2(X) = TempHolder(X)
    Next X
   
    Erase TempHolder
   
    ' Return Array is a variant so it can be passed an array
    ReturnArray = tempholder2
   
    If track = 0 Then
        ' Nothing was found
        ParseString = -1
    Else
        ParseString = track
    End If

End Function

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
VBA loop through headers using value 3 56
vba find the last empty column 10 88
How to create a duplicate finder Application 9 115
Adding to a VBA? 6 61
When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

911 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now