Относительный путь

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Относительный путь

Сообщение -=TsA=- » 12.10.2004 (Вт) 6:21

Здрасте.
Собственно вопрос вот в чем
Имеется путь "C:\Program Files\My App" и "C:\Program Files\My App\Data\Frd", как можно получить относительный путь "Data\Frd"?
Спасибо.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 12.10.2004 (Вт) 7:24

Вообщем первое что пришло в голову:
Код: Выделить всё
Dim sPath1 As String
Dim sPath2 As String
sPath1 = "C:\Program Files\My App"
sPath2 = "C:\Program Files\My App\Data\Frd"
Dim Result As String

Result = Mid$(sPath2, Len(sPath1) + 1)
'или

Result = Replace(sPath2, sPath1, "")
الفيجوال بيسك الرابح

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 7:36

Попробуй это:

Код: Выделить всё
'*************************************************************
' Функция возвращает относительный путь, сформированный из
'           базового пути и абсолютного
'*************************************************************
Public Function GetRelPath(ByVal sSrcPath As String, ByVal sAbsPath As String) As String
    Dim sAddPath As String, i As Integer
    If Len(sSrcPath) < 2 Then GetRelPath = sAbsPath: Exit Function
    If Right$(sSrcPath, 1) <> "\" Then sSrcPath = sSrcPath & "\"
   
    If Left$(sSrcPath, 2) = "\\" Then
         i = InStr(3, sSrcPath, "\")
    Else
        i = InStr(sSrcPath, ":\")
        If i > 0 Then i = i + 1
    End If
    If i = 0 Then GetRelPath = sAbsPath: Exit Function
    If 0 <> StrComp(Left$(sSrcPath, i), Left$(sAbsPath, i)) Then GetRelPath = sAbsPath: Exit Function
   
    Do
        If 0 = StrComp(sSrcPath, Left$(sAbsPath, Len(sSrcPath)), vbTextCompare) Then Exit Do
        sAddPath = sAddPath & "..\"
        i = InStrRev(sSrcPath, "\", Len(sSrcPath) - 1)
        sSrcPath = Left$(sSrcPath, i)
        If i = 1 Then Exit Do
    Loop
    If Len(sAddPath) Then
        GetRelPath = sAddPath & Mid$(sAbsPath, Len(sSrcPath) + 1)
    Else
        GetRelPath = Mid$(sAbsPath, Len(sSrcPath) + 1)
    End If
End Function
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 8:46

Вот, нашел таки нормальный вариант - см Help по функции PathRelativePathTo.

И вообще Shlwapi.dll содержит много чего связанного с обработкой Path-ей - сделай поиск по Shlwapi...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 9:53

А если так:
Код: Выделить всё
'//------------------------------------------------------------------------------------
  Dim vArray As Variant, sPathString As String
  Dim sRelativePath As String
'//------------------------------------------------------------------------------------

sPathString = "C:\Program Files\My App\Data\Frd"
vArray = Split(sPathString, "My App", , vbTextCompare)
sRelativePath = vArray(UBound(vArray))

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 9:56

А если так:


Нет. Правильный ответ - пользовать PathRelativePathTo.
Ибо эта функция и даст нужный результат.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Сообщение -=TsA=- » 12.10.2004 (Вт) 10:14

Ну вы даете! Ну навалили, ща бум разбираться. :P

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 10:19

Andrey Fedorov писал(а):
А если так:


Нет. Правильный ответ - пользовать PathRelativePathTo.
Ибо эта функция и даст нужный результат.

Не умножай сущности без необходимости (с)
Нет правильных и неправильных решений.
Есть решения, которые работают и решения, которые не работают.

Еще вариант:
Код: Выделить всё
'//------------------------------------------------------------------------------------
  Dim sPathString As String
  Dim sRelativePath As String, sAppPath as String
'//------------------------------------------------------------------------------------

sPathString = "C:\Program Files\My App\Data\Frd"
sAppPath = "C:\Program Files\My App"
sRelativePath = Replace(sPathString, sAppPath, "")

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 11:30

Тем не менее есть решения неправильные. И заменять системные процедуры своими неправильно. Правильно -- использовать API.
Lasciate ogni speranza, voi ch'entrate.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 11:57

alibek писал(а):Тем не менее есть решения неправильные. И заменять системные процедуры своими неправильно. Правильно -- использовать API.

Щас пойдет флейм :)
ИМХО, неправильно - это использовать API-функции в случае когда приемлемое по точности и быстродействию решение может быть реализовано стандартными средствами VB. Так скоро до поиска максимума из трех чисел через API можно докатиться ;)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 12:15

Возьмем твой пример.
Как он сработает, если исходный путь C:\Dir1\Dir2, а путь, относительно которого надо построить ссылку будет C:\Dir1\Dir2\Dir3\C:\Dir1\Dir2\Dir4\Dir5? (оставим то, что он задан некорректно). Или, например, том C: является специальным устройством и в нем нельзя использовать относительную адресацию?
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 12:20

А насчет максимума из трех чисел -- есть была бы такая API, то да, этот максимум надо искать именно с помощью API. Исключения будут составлять только специальные приложения, в которых (скажем, в целях быстродействия) реализованы свои варианты поиска максимума.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 12:31

To:Sedge
Есть решения, которые работают и решения, которые не работают.


Золотые слова - попробуй свою вариант, к примеру, со следующими параметрами:

The relative path is relative from: c:\a\b\path
The relative path is relative to: c:\a\x\y\file

Подсказка - должно получиться:

The relative path is: ..\..\x\y\file

Да, это из примера к описанию PathRelativePathTo...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 12:40

alibek писал(а):Возьмем твой пример.
Как он сработает, если исходный путь C:\Dir1\Dir2, а путь, относительно которого надо построить ссылку будет C:\Dir1\Dir2\Dir3\C:\Dir1\Dir2\Dir4\Dir5? (оставим то, что он задан некорректно).

А API функция отработает корректно? В любом случае здесь имеем дело с элементарным контролем корректности входной информации, который должен присутствовать в любом грамотно написаном приложении.
Или, например, том C: является специальным устройством и в нем нельзя использовать относительную адресацию?

Пример в студию. Задача была поставлена предельно четко. Сводя к общему знаменателю, получаем - есть _определенная_ строка в которой содержится опять же _определенная подстрока_. Необходимо получить подстроку-отличие. Как на решении этой проблемы может сказаться отсутствие относительной адресации?

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 12:47

Andrey Fedorov писал(а):To:Sedge
Есть решения, которые работают и решения, которые не работают.


Золотые слова - попробуй свою вариант, к примеру, со следующими параметрами:

The relative path is relative from: c:\a\b\path
The relative path is relative to: c:\a\x\y\file

Прочти постановку задачи. Где сказано что относительный путь необходимо получать из вложенного фолдера?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 13:10

То, чтобы PathRelativePathTo всегда отрабатывал правильно -- это забота разработчиков ОС. И Andrey Fedorov показал, что не надо изобретать велосипед.
Можно самому выделять буферы, рисовать в видеопамяти, реализовать свою систему фонтов и не использовать возможности GDI. Только смысл этого?
Corel содержит свои методы обращения с фонтами (Type1, TrueType, OpenType), но в его случае это оправдано. А вот реализовать подобное в прикладной задаче -- неправильно.
Lasciate ogni speranza, voi ch'entrate.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 13:42

alibek писал(а):То, чтобы PathRelativePathTo всегда отрабатывал правильно -- это забота разработчиков ОС.

Это все очень хорошо, но кто объяснит данную проблему заказчику?

Можно самому выделять буферы, рисовать в видеопамяти, реализовать свою систему фонтов и не использовать возможности GDI. Только смысл этого?

Использование любой технологии должно быть оправдано поставленой задачей. Если мне надо будет реализовать графический интерфейс в, допустим, DOS'е, то я буду "выделять буферы, рисовать в видеопамяти, реализовать свою систему фонтов и не использовать возможности GDI" в связи с явным отсутствием последней. Делать то же самое под Windows - лишний геморрой и неоправданное использование рабочего времени. Это называется не стрелять из пушки по воробьям :) Если мне надо найти максимум из трех двухзначных чисел, я найду максимум из трех двухзначных чисел, а не буду вызывать API-функцию, которая сделает то же самое, но в добавок еще понимает шестнадцатиричное представление числа, использует нелинейную оптимизацию, вышивает крестиком и поддерживается всеми версиями Windows, начиная с Longhorn'а SP1.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 13:48

Прочти постановку задачи. Где сказано что относительный путь необходимо получать из вложенного фолдера?


Как правило его надо получать из каталога где находится программа. В общем, нужно делать так как делает сам VB в своем файле проекта.
А он может быть каким угодно (в том числе и вложенным).

Это все очень хорошо, но кто объяснит данную проблему заказчику?


А ему не надо объяснять - у него должно просто работать. В случае с API-функцией за нас эту проблему уже решили. А в случае с твоим решением - идут твои отговорки (см начало этого письма!).
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 13:59

Andrey Fedorov писал(а):
Прочти постановку задачи. Где сказано что относительный путь необходимо получать из вложенного фолдера?


Как правило его надо получать из каталога где находится программа. В общем, нужно делать так как делает сам VB в своем файле проекта.
А он может быть каким угодно (в том числе и вложенным).

Это все очень хорошо, но кто объяснит данную проблему заказчику?


А ему не надо объяснять - у него должно просто работать. В случае с API-функцией за нас эту проблему уже решили. А в случае с твоим решением - идут твои отговорки (см начало этого письма!).

Хм. Думаем внимательно. Если относительный путь надо получить из того каталога, где находится программа, то мой способ работает. Не спорю, твой работает тоже, но, имхо, он избыточен. Про вложенные фолдеры в вопросе не было ни слова. Конечно, я понимаю, что на декларациях внешних библиотек, растянувшихся на два экрана, проще раскинуть пальцы, чем на двух строчках vb-кода (сам люблю этим иногда заняться :)), но зачем придумавать задачи, которые перед тобой никто не ставит?
И, кстати, не надо вырывать цитаты из контекста. С заказчиком речь шла про контроль входной информации. При неправильных параметрах сдохнет любая апишная функция.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 14:15

Sedge писал(а):Если относительный путь надо получить из того каталога, где находится программа, то мой способ работает. Не спорю, твой работает тоже, но, имхо, он избыточен. Про вложенные фолдеры в вопросе не было ни слова.

Допустим, написал ты свою процедуру получения относительного пути. И она работает быстрее системной на порядок. Более того, она работает правильнее, т.к. в каких-либо редких случаях системная процедура добавляет лишний ".." или неправильно определяет общую точку.
Только это в любом случае не будет достоинством твоей процедуры. Потому что этот путь (заданный в относительном виде) будет потом использован для доступа к каким-либо файлам. И при этом будут использованы именно системные (пусть и неправильные) процедуры. И в результате из-за того, что ты выбрал неверный подход (хотя сам алгоритм правильный) твоя программа будет работать неверно. Так понятно?
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 14:16

Думаем внимательно, да? Если относительный путь надо получить из того каталога, где находится программа, то мой способ работает.


Думай внима-а-а-ательно еще раз:

Текущий путь: C:\Work\MyProg\Prj
Надо найти относитальный путь к C:\Work\Lib\VB\Modules

То есть нужно получить ..\..\Lib\VB\Modules

У тебя сработает? Еще раз подумай куда тебя потом пошлет заказчик.
Ты должен предусмотреть все возможные ситуации, а не говорить потом что тебе так не говорили...

Не спорю, твой работает тоже, но, имхо, он избыточен.


Вызов одной API-шной функции вместо нескольких строк явно неработающего кода избыточен?

Конечно, я понимаю, что на декларациях внешних библиотек, растянувшихся на два экрана,


Не нравится не ешь... то есть не декларируй. Подключи tlb-шку в которой они уже продекларированы - в интернете они есть, найти можно.

но зачем придумавать задачи, которые перед тобой никто не ставит?


Да я-то как раз и не придумываю - есть функция в Windows именно для этой цели предназначенная, я ее и пользую, а не пытаюсь изобрести велосипед с квадратными колесами и доказать что это круто.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 14:21

Sedge писал(а):Если мне надо найти максимум из трех двухзначных чисел, я найду максимум из трех двухзначных чисел, а не буду вызывать API-функцию, которая сделает то же самое, но в добавок еще понимает шестнадцатиричное представление числа, использует нелинейную оптимизацию, вышивает крестиком и поддерживается всеми версиями Windows, начиная с Longhorn'а SP1.

И неправильно сделаешь. Потому что API это "Application Programming Interface". И если в этом программном интерфейсе есть функция определения максимума из трех чисел, надо использовать не самописную функцию, а именно ее, пусть даже для этого и требуется инициализировать 200-байтную структуру, расставить идентификаторы безопасности и получить привилегии для указанной работы.
Lasciate ogni speranza, voi ch'entrate.

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 15:10

Andrey Fedorov писал(а):Думай внима-а-а-ательно еще раз:
Текущий путь: C:\Work\MyProg\Prj
Надо найти относитальный путь к C:\Work\Lib\VB\Modules
То есть нужно получить ..\..\Lib\VB\Modules

Да не надо тебе это получить. Прочитай самый первый постинг, чего -=TsA=- хотел-то. Там все черным по синему написано.
alibek писал(а):И неправильно сделаешь. Потому что API это "Application Programming Interface". И если в этом программном интерфейсе есть функция определения максимума из трех чисел, надо использовать не самописную функцию, а именно ее, пусть даже для этого и требуется инициализировать 200-байтную структуру, расставить идентификаторы безопасности и получить привилегии для указанной работы.

На самом деле тут вся проблема в том, что у нас с тобой разный подход к программированию. Я всегда исхожу из принципа "минимального геморроя". Это означает, к примеру, что если я на 99% уверен, что моя программа будет получать относительный путь из своего рабочего каталога (допустим, структура вложенных каталогов жестко задана и генерируется из кода), то я воспользуюсь самой простой возможностью для получения этого самого пути. Ты же стараешься перекрыть все возможные варианты, достигнув 100% гарантии нормальной работы программы. Отсюда следует, что мой подход менее затратный, а а твой - более надежный. Заметь, я не делю подходы на "правильные" и "неправильные". И там и там есть свои плюсы и минусы и каким из них пользоваться каждый пускай решает сам. За все мою практику принцип "минимального геморроя" не оправдывался всего один раз, после выхода XP, когда недокумментированные функции, которыми я пользовался, сказали "мяу". Огреб я тогда проблем по полной форме. Но это было один раз, давно и неправда 8)

И вообще, мы ничего не знаем о том, как работает программа у уважаемого -=TsA=-. Предлагаю дождаться, пока он здесь снова появится и выслушать его мнение, все-таки для него старались ;), а то кричать мне уже надоело как-то.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 15:20

Ты же стараешься перекрыть все возможные варианты, достигнув 100% гарантии нормальной работы программы.


Угу - я люблю когда надежно. Самому приятно что потом трогать ничего не нужно ;)

когда недокумментированные функции, которыми я пользовался, сказали "мяу".


Надо сказать - недокументированных функций я не пользовал никогда. Хотя и знал об них.

Кстати, вот оберточка для удобного пользования функцией:

Код: Выделить всё
Private Declare Function PathRelativePathTo Lib "shlwapi.dll" Alias "PathRelativePathToA" _
        (ByVal pszPath As String, ByVal pszFrom As String, ByVal dwAttrFrom As Long, _
         ByVal pszTo As String, ByVal dwAttrTo As Long) As Long

Private Const MAX_PATH As Long = 260

Private Function GetRelPath(sFrom As String, sTo As String) As String
    Dim s As String * MAX_PATH
    If PathRelativePathTo(s, sFrom, 16, sTo, 128) Then
        GetRelPath = Left$(s, InStr(s, vbNullChar) - 1)
    Else
        GetRelPath = sTo
    End If
End Function
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.10.2004 (Вт) 16:22

Andrey Fedorov, ты никогда не использовал VarPtr/StrPtr/ObjPtr? :)
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.10.2004 (Вт) 16:23

Не пили сук, ... :)

Я вот только их и... Но при этом решений на 99% не приемлю :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 16:26

ты никогда не использовал VarPtr/StrPtr/ObjPtr?


Самое интересное что нет.

Возможно они использовались в классах/UserControl-ах которые я пользовал не особо просматривая. Но сам я без них свободно обхожусь. :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.10.2004 (Вт) 16:39

Кстати, VarPtr/StrPtr/ObjPtr это недокументированные функции VB - их использование все-же вполне допустимо, так как дальнейшей версии VB не предвидится (VB.NET это все-же нечто другое, связанное с полным переписыванием кода) и соответственно проблем не будет, так что...

Речь шла, как мне кажется о недокументированных функциях Windows API.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 12.10.2004 (Вт) 17:00

GSerg писал(а):Я вот только их и... Но при этом решений на 99% не приемлю :)

100% надежность недостижима.
Так что есть ли разница между 99% и 99,99%? ;)
Глюки все равно вылезут в самых неожиданных местах.

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Сообщение -=TsA=- » 13.10.2004 (Ср) 10:23

А описание PathRelativePathTo можно?
А то как-то в слепую пользоваться оберточкой...
Чего-то я не нашел его в API-Guide.

И еще, относительно вашего спора нужен относительный путь из любого каталога, а не только из вложенного. :roll:
Последний раз редактировалось -=TsA=- 13.10.2004 (Ср) 10:28, всего редактировалось 1 раз.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 21

    TopList  
cron