Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Dll и AccessXP, Неправильная работа DLL в AccessXP 
:(
    Опции темы
Serg_vnovg
Дата 9.3.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.3.2003

Репутация: нет
Всего: нет



Программирую в Access97, решил перейти на AccessXP. Столкнулся с проблеммой :-((
Не работает нижеприведенный код вызова DLL
Функция ошибок не дает, возвращает пустую строку.
Бился два дня. Разные машины, разные дистрибутивы.


Код

Option Compare Database
Option Explicit

Private Declare Function GetOpenFileName Lib "Comdlg32.dll" _
  Alias "GetOpenFileNameA" (pOpenFilename As OpenFilename) _
  As Long


'UDT for the GetOpenFileName and GetSaveFileName functions
Private Type OpenFilename
  lStructSize As Long
  hwndOwner As Long
  hInstance As Long
  lpstrFilter As String
  lpstrCustomFilter As String
  nMaxCustFilter As Long
  iFilterIndex As Long
  lpstrFile As String
  nMaxFile As Long
  lpstrFileTitle As String
  nMaxFileTitle As Long
  lpstrInitialDir As String
  lpstrTitle As String
  Flags As Long
  nFileOffset As Integer
  nFileExtension As Integer
  lpstrDefExt As String
  lCustData As Long
  lpfnHook As Long
  lpTemplateName As String
End Type

Public Function FileOpen(initDir As String) As String
Dim Struc As OpenFilename
Dim x As Long
Dim wPos As Integer
      
   Struc.lStructSize = Len(Struc)
   Struc.lpstrFilter = "*.mdb"
   Struc.iFilterIndex = 1
   Struc.lpstrFile = String(256, 0)
   Struc.nMaxFile = Len(Struc.lpstrFile) - 1
   Struc.lpstrFileTitle = Struc.lpstrFile
   Struc.nMaxFileTitle = Struc.nMaxFile
   Struc.lpstrInitialDir = initDir
   Struc.lpstrTitle = "Ïîèñê ôàéëà"
   Struc.Flags = 0
   
   x = GetOpenFileName(Struc)
   If x Then
       wPos = InStr(Struc.lpstrFile, Chr(0))
       FileOpen = Left$(Struc.lpstrFile, wPos - 1)
   Else
       FileOpen = ""
   End If
   
End Function

Public Sub Test()
  MsgBox FileOpen("")
End Sub


Использую вызовы Dll не только для диалоговых окон. Написано много программного под Access97 где вызываю Dll API, а так же DLL разработанные на Builder для ускорения работы приложения и выполнения функций, которые в Access реализовывать не очень удобно. Не хочется при переходе на новую версию Access переписывать все, что наработано ранее.

Использую windowsXP. В системе установлен Aceess97 и AccessXP одновременно. При копировании кода из одного приложения в другое получаем нормальную работу под Aceess97 и отсутствие результатов под AceessХР. В FAQ ничего не нашел. Неужели придется остаться под Aceess97. У клиентов периодически его сносят под новую версию, приходится приходить у устанавливать Aceess97. Очень неудобно!

Это сообщение отредактировал(а) Serg_vnovg - 10.3.2006, 16:41
PM MAIL   Вверх
Akina
Дата 9.3.2006, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(MSDN)

With Windows 2000, the OPENFILENAME structure has increased to include some additional members. However, this causes problems for applications on previous operation systems. To use the current header files for applications on Windows 95/98 and Windows NT 4.0, either use the #define "/D_WIN32_WINNT=0x0400" or use OPENFILENAME_SIZE_VERSION_400 for the lStructSize member of OPENFILENAME.

А вообще - чего тебя понесло в API? используй архистандартный CommonDialog.ShowOpen



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.