Страница: 1 |
Страница: 1 |
Вопрос: Про SetFilePointer...
Добавлено: 31.01.05 17:17
Автор вопроса: Александр | ICQ: 204034
Привет всем... Я делаю одну фишку к редактору, но мне надо добавить в
конец файла свой текст. Меня как-то не прикалывает открывать его по
Binary и считывать его текст, потом приплюсовывать к нему свой и
записывать файл снова. Тут я вспомнил про апиху SetFilePointer и хочу
спросить - лучше она пойдет или нет? Вдруг файл большой окажется и там
все равно нужно будет его читать? Или не париться и сделать простой Seek?
Или это вообще все одно и тоже и просто надо выбрать одно из двух?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 31.01.05 18:16
SetFilePointer,hFile,NULL,NULL,FILE_END
WriteFile,hFile.... и т.д.
Только чтобы файл был открыт без overlapped
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 31.01.05 18:22
может просто Open file for append as #fn ... ?
Номер ответа: 3
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #3
Добавлено: 01.02.05 09:43
хм... что-то я забыл про это.
cresta, HACKER, пасиба, щас попробую
Номер ответа: 4
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #4
Добавлено: 02.02.05 19:21
И еще - что это за... Есть менюха с индексом, MRU-List. Там при вызове
процедуры должен добавляться файл в ее новый элемент. Но при
выполнении этого кода ничего не добавляется... Где у меня ошибка,
подскажите, пожалуйста.
Public Sub AddToHistory(ByVal FileName As String)
On Error Resume Next
Dim inCounter As Long
If CheckMenusPaths(FileName) Then Exit Sub
If frmMain.mnuFileOpenLoadList(0).Tag <> vbNullString Then
frmMain.mnuFileOpenLoadList(0).Enabled = True
If frmMain.mnuFileOpenLoadList.UBound < 5 Then
Load frmMain.mnuFileOpenLoadList(frmMain.mnuFileOpenLoadList.UBound + 1)
frmMain.mnuFileOpenLoadList(frmMain.mnuFileOpenLoadList.UBound).Caption = Trim(Mid(FileName, InStrRev(FileName, "\" + 1))
frmMain.mnuFileOpenLoadList(frmMain.mnuFileOpenLoadList.UBound).Tag = FileName
Else
'MsgBox 1
'For inCounter = frmMain.mnuFileOpenLoadList.LBound To frmMain.mnuFileOpenLoadList.UBound
' frmMain.mnuFileOpenLoadList(inCounter + 1).Caption = frmMain.mnuFileOpenLoadList(inCounter).Caption
' frmMain.mnuFileOpenLoadList(inCounter + 1).Tag = frmMain.mnuFileOpenLoadList(inCounter).Tag
'Next inCounter
'MsgBox CStr(inCounter) & " - " & CStr(inCounter + 1)
'frmMain.mnuFileOpenLoadList(0).Caption = Trim(Mid(FileName, InStrRev(FileName, "\" + 1))
'frmMain.mnuFileOpenLoadList(0).Tag = FileName
MsgBox "Больше чем 6 элементов истории файлов", vbInformation Or vbOKOnly, App.Title
End If
Else
frmMain.mnuFileOpenLoadList(0).Enabled = True
frmMain.mnuFileOpenLoadList(0).Caption = Trim(Mid(FileName, InStrRev(FileName, "\" + 1))
frmMain.mnuFileOpenLoadList(0).Tag = FileName
End If
Call FreeMenus
End Sub
Private Sub FreeMenus()
On Error Resume Next
Dim inCounter As Long
For inCounter = frmMain.mnuFileOpenLoadList.LBound To frmMain.mnuFileOpenLoadList.UBound
If (Not (Trim(frmMain.mnuFileOpenLoadList(inCounter).Tag) = vbNullString) And _
 Not (Trim(frmMain.mnuFileOpenLoadList(inCounter).Caption) = vbNullString)) And _
CBool(PathFileExists(Trim(frmMain.mnuFileOpenLoadList(inCounter).Tag)))) Then
Unload frmMain.mnuFileOpenLoadList(inCounter)
End If
Next inCounter
End Sub
Номер ответа: 5
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #5
Добавлено: 03.02.05 10:44
А ты попробуй закоментарить On Error Resume Next. Наверняка узнаешь в чем дело.
Номер ответа: 6
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #6
Добавлено: 03.02.05 18:17
Тьфу, все в порядке. Все сделал.
Номер ответа: 7
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #7
Добавлено: 07.02.05 10:25
И еще - или я глючу или vb. Почему выдается всякая фигня в RichTextBox по
вот этому коду (до msgbox выдается мой текст, а после него, рядом, его
копия):
Private Sub mnuEditPaste_Click()
On Error Resume Next
Dim mText As String, mStart As Long
With cRich
mStart = .SelStart
mText = Clipboard.GetText(vbCFText)
MsgBox Len(mText)
.SelText = vbNullString
.SelText = mText 'Mid(mText, Len(mText) / 2) - 1
End With
End Sub
Мне надо снять форматирование с текста в буффере и вставить его в
текст только в _одном_ экземпляре, а не в двух как он делает. Способ от
sne не подходит (тот что в cRichEdit) - он также выдает.
Понимаю, это очень просто, но что-то в последнее время меня сильно
глючит... Наверное от того, что завтра выхожу с каникул. )