Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с API функцией / 4 сообщений из 4, страница 1 из 1
02.03.2004, 11:33
    #32427471
хелп!!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с API функцией
Помогите разобраться! Есть такой код (в Access'е):

Option Compare Database
Option Explicit

'описание структуры, применяемой для открытия диалога "OpenAs"
Private Type OPENFILENAME

lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex 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

'декларация WinAPI импортируемой функции из comdlg32.dll
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _
"GetSaveFileNameA" (pOpenFileName As OPENFILENAME) As Long
_________________________________________

Private Function myFuction ()
Dim OpenFile As OPENFILENAME
Dim lReturn, lFreeFileNum, lQDCounter, lCounter As Long
Dim sFilter, sSQLRequery, sQDName0, sQDName1, sCurQDName As String
Dim sFileName As String * 256
Dim bEOLFlag As Boolean

'задание параметров для диалога "OpenAs"
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = Screen.Application.hWndAccessApp
OpenFile.hInstance = 0

sFilter = "Text files (*.txt)" & Chr(0) & "*.txt" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1

'sFileName = "obmen_" & Me!month0.Column(1) & Me!day0

OpenFile.lpstrFile = sFileName
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "\\server\obmen"
OpenFile.lpstrTitle = "Save File"
OpenFile.flags = 2050
OpenFile.lpstrDefExt = "txt"

'открываем диалог
lReturn = GetSaveFileName(OpenFile)

... ну и т.д.

Так вот, из-за этой вот строчки: sFileName = "obmen_"... - в Windows 2000 процедура не работает!! А если ее закомментировать, то работает (ну, естественно, тогда имя файла надо вводить вручную, а это в данном случае неприемлемо...) А в 98 всё работает без проблем!

Подозреваю, что дело в API функции, но в чем именно ошибка, разобраться не могу...

Хелп!
...
Рейтинг: 0 / 0
02.03.2004, 11:49
    #32427524
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с API функцией
Код: plaintext
1.
2.
3.
Dim s as string
s = String$( 512 ,  0 )
LSet s = obmen_" & Me!month0.Column( 1 ) & Me!day0  
sFileName = s


т.е. надо дополнить имя файла справа до 512 символов
...
Рейтинг: 0 / 0
02.03.2004, 11:50
    #32427526
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с API функцией
Добавьте символ с кодом 0

sFileName = "obmen_" & Me!month0.Column(1) & Me!day0 & chr(0)
...
Рейтинг: 0 / 0
02.03.2004, 11:58
    #32427559
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с API функцией
да и 512 от балды под буфер. Если он будет мал (например, в случае выделения нескольких файлов) - то будет ошибка, но тебе вроде это не грозит, ты же сохраняешь 1 файл, тогда можешь поставить 257 (255 - макс. длина пути к файлу + 2 байта под служ. инфу)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с API функцией / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]