powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с API функцией
4 сообщений из 4, страница 1 из 1
Помогите с API функцией
    #32427471
хелп!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите разобраться! Есть такой код (в 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
Помогите с API функцией
    #32427524
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Помогите с API функцией
    #32427526
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте символ с кодом 0

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


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