App.Path, файл не найден

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
NightStorm
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 09.06.2008 (Пн) 18:30

App.Path, файл не найден

Сообщение NightStorm » 22.03.2009 (Вс) 13:05

Вот такой вопрос:
использую к примеру код:
Код: Выделить всё
Public Sub Form_Load()
Data1.DatabaseName = App.Path & "\database.mdb"
End Sub

На моём компе работает нормально (стоит Win2000), а на компе с XP говорит, что "Couldn't find file database.mdb".
Прога установлена НЕ в корень диска, поэтому на "\" думаю ругаться не стоит.

Помогите плиз?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: App.Path, файл не найден

Сообщение Хакер » 22.03.2009 (Вс) 13:16

Ну посмотрел бы, чему равно выражение по правую сторону от =. Может и правда Not found.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

NightStorm
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 09.06.2008 (Пн) 18:30

Re: App.Path, файл не найден

Сообщение NightStorm » 22.03.2009 (Вс) 13:20

Дык оно равно тому, чему надо. Ну т.е. "C:\Program files\ProgName". Прога просто тупо не видит файл, а он там есть.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: App.Path, файл не найден

Сообщение Хакер » 22.03.2009 (Вс) 13:23

NightStorm писал(а):Дык оно равно тому, чему надо. Ну т.е. "C:\Program files\ProgName".

:?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

NightStorm
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 09.06.2008 (Пн) 18:30

Re: App.Path, файл не найден

Сообщение NightStorm » 22.03.2009 (Вс) 13:28

Хакер писал(а):
NightStorm писал(а):Дык оно равно тому, чему надо. Ну т.е. "C:\Program files\ProgName".

:?

:?:
Не понял смысл ответа...

Вроде ж всё правильно получается. если app.path возвращает "C:\Program files\ProgName", то если туда приписать "\database.mdb", то как раз получается то, что надо. "C:\Program files\ProgName" & "\database.mdb" = "C:\Program files\ProgName\database.mdb"

*EDIT*
А, теперь понял смысл ответа. Сорри, не совсем прально сам ответил. "C:\Program files\ProgName" - это то, что app.path возвращает

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: App.Path, файл не найден

Сообщение SLIM » 22.03.2009 (Вс) 21:38

Тебя просили всего лишь узнать что стоит справа от знака "="
Также, удостоверся что "C:\Program files\ProgName\database.mdb" действительно существует
Багов в ф-ии не замечал
Пишите жизнь на чистовик.....переписать не удастся.....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: App.Path, файл не найден

Сообщение Хакер » 22.03.2009 (Вс) 22:09

Значит надо рядом попробывать открыть этот файл обычными VB-средствами. Значит можно попробовать передать short-путь.
Потом отписаться сюда о результатах.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: App.Path, файл не найден

Сообщение SSecurity » 26.03.2009 (Чт) 20:49

кстати у тебя возникнет проблема если твою прогу положить на диск С :))))))))))))))))))
поскольку путь "C:\\database.mdb" точно не найден.
Я обычно связку Instr с Replace чтобы "\\" на "\" заменить :)

посему заюзай простую конструкцию

Код: Выделить всё
Dim Path as string
Path = App.Path & "\database.mdb"
While Instr(1,Path,"\\")<>0
  Path = Replace(Path,"\\","\")
Wend
if Dir(Path) <> "" then
  Data1.DatabaseName = Path
else
  msgbox "не нашлось файлика по пути" & vbCrLf & Path
End if
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: App.Path, файл не найден

Сообщение iGrok » 26.03.2009 (Чт) 21:07

SSecurity писал(а):Я обычно связку Instr с Replace чтобы "\\" на "\" заменить :)

Спёрто из стандартного VB-инсталлера (Setup1). Только имя другое.
Код: Выделить всё
Function AddTailSlash(strPath As String) As String
    AddTailSlash = strPath & IIf(Right$(strPath, 1) = "\", "", "\")
End Function

dbPath = AddTailSlash(App.Path) & "database.mdb"
label:
cli
jmp label

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: App.Path, файл не найден

Сообщение SSecurity » 26.03.2009 (Чт) 21:14

iGrok писал(а):
SSecurity писал(а):Я обычно связку Instr с Replace чтобы "\\" на "\" заменить :)

Спёрто из стандартного VB-инсталлера (Setup1). Только имя другое.
Код: Выделить всё
Function AddTailSlash(strPath As String) As String
    AddTailSlash = strPath & IIf(Right$(strPath, 1) = "\", "", "\")
End Function

dbPath = AddTailSlash(App.Path) & "database.mdb"


дело в том, что у меня обычно пути бывают составные пути, и "z:\temp\box1\\serv1\jpgs\\resized\" - нередкость
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: App.Path, файл не найден

Сообщение iGrok » 26.03.2009 (Чт) 21:40

SSecurity писал(а):...дело в том, что у меня обычно пути бывают составные пути, и "z:\temp\box1\\serv1\jpgs\\resized\" - нередкость

Ну так кто мешает вызывать AddTailSlash в момент присоединения следующей части пути? =)
label:
cli
jmp label

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: App.Path, файл не найден

Сообщение arthur2 » 26.03.2009 (Чт) 21:58

На моём компе работает нормально (стоит Win2000), а на компе с XP говорит, что "Couldn't find file database.mdb".

Может, в пути есть уникодные знаки? Попробуй msgbox App.Path - есть вопросики в строке?
Артур
 
   

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: App.Path, файл не найден

Сообщение SSecurity » 26.03.2009 (Чт) 23:46

iGrok писал(а):
SSecurity писал(а):...дело в том, что у меня обычно пути бывают составные пути, и "z:\temp\box1\\serv1\jpgs\\resized\" - нередкость

Ну так кто мешает вызывать AddTailSlash в момент присоединения следующей части пути? =)


если только ты уверен в чистоте ввода это части ... если ты на 100% знаешь что там не будет "\" присоединяй сколько хочешь ... а юзеров заставлять воодить множество путей по определенным правилам куда менее интереснее чем просто перед использованием путь откорректировать
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: App.Path, файл не найден

Сообщение iGrok » 26.03.2009 (Чт) 23:50

SSecurity писал(а): ... а юзеров заставлять воодить множество путей по определенным правилам куда менее интереснее чем просто перед использованием путь откорректировать

А юзеры не должны вручную путь вводить. Юзерам надо диалоги показывать. =)
А то ошибаться все горазды. Могут и покруче ошибиться, чем просто двойной слеш вляпать. =)

А вообще можно точно так же при присоединении срубать ведущий слеш с присоединяемой части пути..

Хотя в этом случае да, проще уже реально на готовом пути делать Replace..
label:
cli
jmp label

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: App.Path, файл не найден

Сообщение SSecurity » 27.03.2009 (Пт) 0:03

iGrok писал(а):
SSecurity писал(а): ... а юзеров заставлять воодить множество путей по определенным правилам куда менее интереснее чем просто перед использованием путь откорректировать

А юзеры не должны вручную путь вводить. Юзерам надо диалоги показывать. =)
А то ошибаться все горазды. Могут и покруче ошибиться, чем просто двойной слеш вляпать. =)

А вообще можно точно так же при присоединении срубать ведущий слеш с присоединяемой части пути..

Хотя в этом случае да, проще уже реально на готовом пути делать Replace..


дело в том ... что папка может быть как со слешем в конце так и без .... а относительные пути точно также могут иметь слеши в начале ... поэтому проще все собрать и зареплейсить. А вообще если для себя, то всегда пути обычно "павильные" ... :) но функция не плохая в большинстве случаев будет достаточна ;)

Молодец:)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: App.Path, файл не найден

Сообщение iGrok » 27.03.2009 (Пт) 1:04

SSecurity писал(а):Молодец:)

Я ж говорю, авотрство не моё. Она взята из Setup1 от стандартного инсталлятора VB6.
label:
cli
jmp label

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Re: App.Path, файл не найден

Сообщение SSecurity » 27.03.2009 (Пт) 1:11

iGrok писал(а):
SSecurity писал(а):Молодец:)

Я ж говорю, авотрство не моё. Она взята из Setup1 от стандартного инсталлятора VB6.


От того что ты показал чужую функцию из инсталятора ... ты "не молодцом" не стал:)))))))))))))))))))))))))))))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)


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

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

Сейчас этот форум просматривают: SemrushBot и гости: 47

    TopList