Как установить рабочий каталог при отладке приложения VB6? - PullRequest
13 голосов
/ 30 сентября 2008

Я отлаживаю исполняемый файл VB6. При запуске исполняемый файл загружает библиотеки и файлы из своего текущего каталога. При запуске в отладчике текущий каталог выглядит как каталог VB6.

Как мне установить рабочий каталог для VB6?

Ответы [ 5 ]

11 голосов
/ 30 сентября 2008

Похоже, это не готовое решение для этой вещи.

Взято с Старый Джоэл на форумах по программному обеспечению

В любом случае .. чтобы положить эту тему на отдых .. мое решение VB6 было следующим: определить 2 символа в моем проекте VB «MPDEBUG» и «MPRELEASE» и вызвать следующая функция как первая операция в моей точке входа приложений функция.

Public Sub ChangeDirToApp()
#If MPDEBUG = 0 And MPRELEASE = 1 Then
  ' assume that in final release builds the current dir will be the location
  ' of where the .exe was installed; paths are relative to the install dir
  ChDrive App.path
  ChDir App.path
#Else
  ' in all debug/IDE related builds, we need to switch to the "bin" dir
  ChDrive App.path
  ChDir App.path & BackSlash(App.path) & "..\bin"
#End If
End Sub
8 голосов
/ 30 сентября 2008

«Текущий каталог, по-видимому, является директорией VB6», только когда вы открываете проект с помощью File-Open.

Откройте его, дважды щелкнув файл .vbp, когда IDE закрыта.

6 голосов
/ 30 сентября 2008

Решение, которое я нашел, работает, использует Sub Main и проверяет, работает ли программа в IDE.

Dim gISIDE as Boolean

Sub Main()
    If IsIDE Then
        ChDrive App.Path
        ChDir   App.Path
    End If

    ' The rest of the code goes here...

End Sub

Public Function IsIDE() As Boolean '
        IsIDE = False
        'This line is only executed if running in the IDE and then returns True
        Debug.Assert CheckIDE 
        If gISIDE Then 
            IsIDE = True
        End If
End Function

Private Function CheckIDE() As Boolean ' this is a helper function for Public Function IsIDE() 
        gISIDE = True 'set global flag 
        CheckIDE = True 
End Function
2 голосов
/ 30 сентября 2008

Будет ли это работать?

'Declaration
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

'syntax to set current dir
SetCurrentDirectory App.Path
1 голос
/ 02 октября 2008

Текущий каталог для любой программы, включая vb6, можно изменить в свойствах ярлыка. Я изменил его на корень моего исходного кода, это ускоряет использование File-Open.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...