API, открытие файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Chuvak
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 102
Зарегистрирован: 11.03.2003 (Вт) 8:39
Откуда: Russia, Ozёrsk

API, открытие файла

Сообщение Chuvak » 22.07.2003 (Вт) 9:01

есть ли какая-нибудь апи для открытия файла.
охото обойтись без mscommondialog

ED HUNTER
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 21.07.2003 (Пн) 18:20
Откуда: HELL

ED HUNTER'S help

Сообщение ED HUNTER » 22.07.2003 (Вт) 9:37

Open filename For mode [Acses acses],[lock]_as [#]filenumber [len=reclenth]

mode- режим открытия файла Binary,Input, Output , Random

acses- доступ Read,Write,ReadWrite

lock- можно ли использовать др. приложениям данный файл пока ты с ним работаешь... Lock write, Lock Read, lock Read Write.

filenumber - дискриптор файла. Получаем с помощью ф-ии FreeFile

reclenth- длинна записи.

УсЁ

vbmaker@mail.ru
Бороться и искать, найти и не здаваться!
ED HUNTER
vbmaker@mail.ru

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 22.07.2003 (Вт) 9:37

Да
GetOpenFileName, которая принимает структуру OpenFileName

Chuvak
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 102
Зарегистрирован: 11.03.2003 (Вт) 8:39
Откуда: Russia, Ozёrsk

Сообщение Chuvak » 22.07.2003 (Вт) 10:04

Код: Выделить всё
Open filename For mode [Acses acses],[lock]_as [#]filenumber [len=reclenth]

я хотел написать окошко для выбора файла

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 22.07.2003 (Вт) 10:20

А что стандартных средств мало? Например dirlistbox+filelistbox+drivelistbox вот и получится у тебя свое окошко :)

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 04.08.2003 (Пн) 17:09

Вообще-то это делается так:


Код: Выделить всё
Private Sub ShowFileDialog(ByVal iAction As Integer)
Dim tOpenFile As OpenFilename
Dim lMaxSize As Long
Dim sFileNameBuff As String
Dim sFileTitleBuff As String

On Error GoTo ShowFileDialogError

'инициализация буфера
iAction = iAction 'Action property
lApiReturn = 0 'APIReturn property
lExtendedError = 0 'ExtendedError property
tOpenFile.lStructSize = Len(tOpenFile)
tOpenFile.hwndOwner = lhdc
'Замена "|" на Chr(0)
tOpenFile.lpstrFilter = sAPIFilter(sFilter)
tOpenFile.iFilterIndex = iFilterIndex
'определение размера буфера от свойства MaxFileSize
If lMaxFileSize > 0 Then
lMaxSize = lMaxFileSize
Else
lMaxSize = 255
End If

sFileNameBuff = sFileName
'заполнение пробелами до 255
While Len(sFileNameBuff) < lMaxSize - 1
sFileNameBuff = sFileNameBuff & " "
Wend
'обрежем до длины lMaxFileSize - 1
If lMaxFileSize = 0 Then
sFileNameBuff = Mid$(sFileNameBuff, 1, lMaxSize - 1)
Else
sFileNameBuff = Mid$(sFileNameBuff, 1, lMaxFileSize    - 1)
End If

'установим в конце нулевой знак
sFileNameBuff = sFileNameBuff & Chr$(0)
tOpenFile.lpstrFile = sFileNameBuff
If lMaxFileSize <> 255 Then
tOpenFile.nMaxFile = 255
End If

  'операции, аналогичные вышеисполненным

sFileTitleBuff = sFileTitle
While Len(sFileTitleBuff) < lMaxSize - 1
sFileTitleBuff = sFileTitleBuff & " "
Wend
If lMaxFileSize = 0 Then
sFileTitleBuff = Mid$(sFileTitleBuff, 1, lMaxSize -1)
Else
sFileTitleBuff = Mid$(sFileTitleBuff, 1, lMaxFileSize- 1)
End If
sFileTitleBuff = sFileTitleBuff & Chr$(0)
tOpenFile.lpstrFileTitle = sFileTitleBuff
tOpenFile.lpstrInitialDir = sInitDir
tOpenFile.lpstrTitle = sDialogTitle
tOpenFile.Flags = lFlags
tOpenFile.lpstrDefExt = sDefaultExt

'выполним GetOpenFileName API-функцию
Select Case iAction
Case 1 'ShowOpen
lApiReturn = GetOpenFileName(tOpenFile)
Case 2 'ShowSave
lApiReturn = GetSaveFileName(tOpenFile)
Case Else
Exit Sub
End Select

m_cancelled = False
'Возвращение дескриптора от API-функции GetOpenFileName     
Select Case lApiReturn
Case 0 'нажата кнопка Cancel
'генерация ошибки
m_cancelled = True
Exit Sub
Case 1 'пользователь выбрал или ввел файл
'Используем внутреннюю процедуру sLeftOfNull
'для получения пути и имени файла
sFileName = sLeftOfNull(tOpenFile.lpstrFile)
sFileTitle = sLeftOfNull(tOpenFile.lpstrFileTitle)
Case Else 'если произошла ошибка вызываем CommDlgExtendedError
lExtendedError = CommDlgExtendedError
End Select

Exit Sub

ShowFileDialogError:
Exit Sub

End Sub



Смотри здесь: http://vbstreets.ru/default.asp?page=li ... d=textfile
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali


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

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

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

    TopList