VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
В начале недели на сайте были некоторые неполадки, которые во вторник были устранены. Сейчас сайт полностью работоспособен.
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх VBNet CD '06 2003 VBNet.Ru представляет новый компакт диск "VBNet CD '06 2003"! CD содержит только новые материалы, почти всё, содержавшееся на предыдущих CD было удалено! Что же нового на CD? Добавлено 19 программ в раздел "Софт". Главная программа на этом CD - DirectX 9 SDK. Это пакет для разработки мультимедийных приложений (графика, 3D, звук и т.д.). Имеются примеры, в том числе и на VB .NET. Другие программы:
Добавлено 11 интересных книг о Visual Basic и .NET на английском языке. В разделе "Примеры" несколько новых примеров на Visual Basic .NET по работе с Direct3D 9 и .NET Framework. 10 примеров по программированию под новую версию Office - Office 2003. А также движок форума на ASP .NET с исходниками! В разделе "Эксклюзив" моя новая статья о криптографии в .NET и несколько примеров на Visual Basic .NET о симметричном шифровании и использовании WMI. А также коллекция музыки в формате MIDI и болшая коллекция иконок! Ну и конечно свежая версия сайта VBNet.Ru. С момента выхода предыдущего выпуска "VBNet CD" на VBNet.Ru появилось 7 статей, 8 ActiveX-контролов, 44 примера и около 5000 сообщений в форуме! Полное содержание диска можно скачать здесь: http://vbnet.ru/vbshop/vbnetcd062003.zip. Цена диска, включая почтовые расходы: 100 рублей. Диск распространяется по почте наложенным платежом. Магазин компакт-дисков был немного улучшен. Теперь он больше похож на солидные интернет-магазины. Вы можете заказать сразу несколько дисков (сейчас в нашем магазине продаётся 4 диска). Действует система скидок постоянным покупателям. Наш магазин расположен по адресу http://vbnet.ru/vbshop/cdshop.asp Мы всегда рады Вас видеть! наверх Удаление HTML-тегов из строки Небольшая функция, предназначенная для вырезания HTML-тегов из строки. Я её писал для чата (http://vbnet.ru/chat). Предназначена для использования в ASP. Если Вы хотите использовать её в VB, то нужно добавить объявления переменных. Function DeleteTags(Source) pos1 = InStr(Source, "<") pos2 = 1 Do While (pos1 > 0) And (pos2 > 0) If pos1 > 0 Then pos2 = InStr(pos1, Source, ">") End If If pos2 = 0 Then Source = Left(Source, pos1 - 1) Else Source = Left(Source, pos1 - 1) & Right(Source, Len(Source) - pos2) End If pos1 = InStr(Source, "<") Loop DeleteTags = Source End Function наверх Получение путей к системным папкам в .NET .NET С помощью класса Environment можно узнать путь к различным системным папкам. Найти список системных папок и их описания можно в Object Browser (смотрите перечисление System.Environment.SpecialFolder). Dim p As System.Environment.SpecialFolder Dim s As String 'Получаем путь к папке SendTo. p=Environment.SpecialFolder.SendTo; s=Environment.GetFolderPath(p) Console.WriteLine("Папка SendTo: {0}.", s) 'Получаем путь к папке Startup. p=Environment.SpecialFolder.Startup s=Environment.GetFolderPath(p) Console.WriteLine("Папка Startup: {0}.", s) наверх Симметричное шифрование в .NET .NET Пример симметричного шифрования данных в .NET. На форму установить TextBox (name="txtText"), две кнопки (btnEncrypt и btnDecrypt). И вот такой код: '---Симметричное шифрование--- 'Ключ и вектор инициализации для симметричного шифрования Dim Key As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Ключ Dim IV As Byte() = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} 'Вектор инициализации Private Sub btnEncrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEncrypt.Click 'Создаём экземпляр класса RijndaelManaged Dim RMCrypto As New Security.Cryptography.RijndaelManaged 'Создаём FileStream, туда будет записана зашифрованная информация Dim fs As New IO.FileStream("C:\crypted.dat", IO.FileMode.Create) 'Создаём CryptoStream Dim CryptStream As New Security.Cryptography.CryptoStream(fs, RMCrypto.CreateEncryptor(Key, IV), Security.Cryptography.CryptoStreamMode.Write) 'Создаём StreamWriter для записи данных в CryptoStream Dim SWriter As New IO.StreamWriter(CryptStream) 'Пишем что-нибудь в CryptoStream SWriter.WriteLine(txtText.Text) 'Закрываем все объекты SWriter.Close() fs.Close() CryptStream.Close() End Sub Private Sub btnDecrypt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDecrypt.Click 'Создаём экземпляр класса RijndaelManaged Dim RMCrypto As New Security.Cryptography.RijndaelManaged 'Создаём FileStream, оттуда будем читать зашифрованную информацию Dim fs As New IO.FileStream("C:\crypted.dat", IO.FileMode.Open) 'Создаём CryptoStream Dim CryptStream As New Security.Cryptography.CryptoStream(fs, RMCrypto.CreateDecryptor(Key, IV), Security.Cryptography.CryptoStreamMode.Read) 'Создаём StreamReader для чтения данных из CryptoStream Dim SReader As New IO.StreamReader(CryptStream) 'Читаем расшифрованную информацию из CryptoStream и пишем её в консоль txtText.Text = SReader.ReadToEnd() 'Закрываем все объекты SReader.Close() fs.Close() CryptStream.Close() End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автора: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Илья Ответ ожидается по этому адресу Как проверить запущена ли в системе данная программа? (Например Word) Я пользуюсь VB 6.0 и Windows 98. Автор вопроса: Bilenko Ответ ожидается по этому адресу Подскажите пожалуйста как работать с обьектом MS WORD - MS EQUATION??? Автор вопроса: OldKrot Ответ ожидается по этому адресу Hi, if anybody has write on vb.net or know where can get source Visual Movement Detection com[nents? Автор вопроса: Дмитрий Ответ ожидается по этому адресу Есть японский шрифт. Есть текстовый файл на японском в unicod'e. Как его можно в свою прогу яагруяить и в ней редактировать, если ияменение .Font.Charset на японский для японского шрифта MS Mincho не помогает, также как и API-функция SetConsoleOutputCP. Может кто-нибудь янает как в веб-брауяерах типа explorer'а программно реализуется ияменение кодировки (меню вид-вид кодировки) Автор вопроса: Maxim Ответ ожидается по этому адресу Как в vb6 быстрее копировать и перемещать файлы: CopyFile и MoveFileEx, или с помощью FSO? И как переименовать файл? Можно переместить его в ту же папку с новым именем, но это не разумно... И то же самое для vb.net. Автор вопроса: ]CBK[C...R...a...S...H Ответ ожидается по этому адресу Я себе Visual Studio 7 .NET установил Ну вообще неРеал И возникли у меня такие вопросы 1) Как мне старые проекты открыть(я понял что не как) 2) Какие библиотеки нужны для переноса приложений на VB.net 3) Как мне сделать SDI интерфейс(в VB6 в опциях это было, а в .NET я этого не нашол) Автор вопроса: Erik Ответ ожидается по этому адресу Подскажите , пожалуйста : Есть файл .dbf , который содержит текстовое поле , в котором кодировка досовская.Как сделать читабельно с помощью ВБ ? Автор вопроса: Vir Ответ ожидается по этому адресу Как узнать hDC в такой ситуации: Dim h as Picture Dim k as long h=LoadPicture("c:\1.jpg") BitBlt k,0,0,100,100, ... ,0,0,vbSrcCopy Место ... нужно вставить hDС загруженной картинки. h.Handle неподходит. Автор вопроса: frosya Ответ ожидается по этому адресу Кто знает, какой API вызов возвращает полный путь к файлу (директории), разумеется любой, не текущей Автор вопроса: Володя Ответ ожидается по этому адресу У меня два вопросика. 1. Как программно можно переместить мышку? 2. Как спрятать программу от Ctrl+Alt+Del? Автор вопроса: Славик Ответ ожидается по этому адресу Что-то натворил с VB, а что не знаю, причем случалось такое уже несколько раз за год. После установки и удаления всяких левых программ VB стал прозрачным. Есть меню, панель управления, окно свойств, в общем все что нужно для работы (и все прекрасно работает), только все эти окна висят прямо на рабочем столе как самостоятельные приложения. Что нужно сделать, чтобы вернуть все взад??? Конечно можно работать и так, только как-то дико, как будто висишь на высоте пятиэтажки, где тут сосредоточишься. Переустановку системы чур не предлагать, это я и сам знаю. Автор вопроса: Vor Ответ ожидается по этому адресу Народ кто может помогите! Я написал прогу и в нее добавил компонент. Вопрос: Как мне засунуть компонент в корень проги, ведь не у всех есть этот компонент! Если можно то поподробней! Автор вопроса: Тим Ответ ожидается по этому адресу Хочу чтобы в строке состояния формы был прогрессбар, как в эксплорере, для отображения процесса загрузки "листвью". Возможно ли это сделать в обычном контроле "прогрессбар", или же надо рисовать самому? Ответы: Вопрос: Как можно прикрепить звук (wav,mp3) к программе, чтобы потом его воспроизвести (через Mci)? Ответ: Автор ответа: ]CBK[C...R...a...S...H Засовываеш нужный mp3,4,5 в ресурсы программы (RES), а в соде пишеш Dim bFile() as Byte Dim fHande as byte bFile()=loadresdata(101,10) '101-ID твоего ресурса fHande=freefile open app.path & "\music.mp3" for binary as fHande put fHende,1,bFile close fHande mci.play app.path & "\music.mp3" Вопрос: Как поместить в панель задач иконку, клик по которой позволит открыть программу, контекстное меню. Ответ: Автор ответа: Данила Разбирайся Private Type NOTIFYICONDATA cbSize As Long hWnd As Long uId As Long uFlags As Long ucallbackMessage As Long hIcon As Long szTip As String * 64 End Type 'разные константы Private Const NIM_ADD = &H0 Private Const NIM_MODIFY = &H1 Private Const NIM_DELETE = &H2 Private Const NIF_MESSAGE = &H1 Private Const NIF_ICON = &H2 Private Const NIF_TIP = &H4 Private Const WM_LBUTTONDBLCLK = &H203 Private Const WM_LBUTTONDOWN = &H201 Private Const WM_RBUTTONUP = &H205 'декларируем функцию Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Dim TrayI As NOTIFYICONDATA Private Sub Form_Load() TrayI.cbSize = Len(TrayI) 'Set the window's handle (this will be used to hook the specified window) TrayI.hWnd = pichook.hWnd 'какой-то индентификатор (видимо, фича для работы с иконкой) TrayI.uId = 1& 'Set the flags TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE 'Set the callback message TrayI.ucallbackMessage = WM_LBUTTONDOWN TrayI.hIcon = imgIcon(2).Picture 'устанавливает картинку, которая будет показываться TrayI.szTip = "Recent" & Chr$(0) 'устанавливает текст Shell_NotifyIcon NIM_ADD, TrayI 'создает иконку Me.Hide End Sub Private Sub Form_Unload(Cancel As Integer) 'remove the icon TrayI.cbSize = Len(TrayI) TrayI.hWnd = pichook.hWnd TrayI.uId = 1& Shell_NotifyIcon NIM_DELETE, TrayI End End Sub Private Sub mnuPop_Click(Index As Integer) Select Case Index Case 0 MsgBox "KPD-Team 1998" + Chr$(13) + "URL: http://www.allapi.net/" + Chr$(13) + "E-Mail: KPDTeam@Allapi.net", vbInformation + vbOKOnly Case 2 Unload Me End Select End Sub Private Sub form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Msg = X / Screen.TwipsPerPixelX If Msg = WM_LBUTTONDBLCLK Then 'Left button double click mnuPop_Click 0 ElseIf Msg = WM_RBUTTONUP Then 'Right button click Me.PopupMenu mnuPopUp End If End Sub Private Sub Timer1_Timer() Static Tek As Integer 'Animate the icon Me.Icon = imgIcon(Tek).Picture TrayI.hIcon = imgIcon(Tek).Picture Tek = Tek + 1 If Tek = 3 Then Tek = 0 Shell_NotifyIcon NIM_MODIFY, TrayI End Sub Private Sub выход_Click() Form_Unload 0 End End Sub Вопрос: Есть такая проблема при посимвольной обработке строки... Dim TMP As String Dim TMP2 As String Dim X As Integer For X = 1 to Len(TMP) Step 0 TMP2 = TMP2 & Mid(TMP, X, 1) X = X + 1 Next X Проблема в том, что перебор строки состоящий всего из 10 тыс. символов занимает самое малое минуту, а если требуется перебрать 5 000 000 символов, например файл обработать... как можно повысить скорость работы? Повышал приоритет программы до RealTime, но это почти не заметно... Буду благодарен любому совету, или примеру намыленному на SoundMuzic@narod.ru; Ответ: Автор ответа: Никитин Андрей Используй для этого байтовый массив. Например так: Dim TMP as String Dim TMP2 as String Dim b() as Byte Dim i as Integer b() = TMP$ For i = 0 to UBound(b) Step LenB("A") TMP2 = TMP2 & Chr$(b(i)) Next Будет существенно быстрее за счет исключения из цикла "медленной" функции Mid. Примечание. LenB("A") нужна для определения корректного смещения в разных версиях VB. Ответ: Автор ответа: Шарутин Федор Валентинович Попрубуйте при чтении строки сопосотавить ей структуру-пользовательский тип данных, как набор единичных данных требуемого типа. Например Type recTI 'глобальный тип данных skeep As Integer value As Single End Type Dim struct(1000) As recTI 'В процедуре чтения ............................ Open F_Name For Random Access Read As #F_Number Len = 6000 Get #F_Number, 1, struct() ............................ 'далее работа с элементами структуры, а не фрагментом строки через функции извлечения For Nomer_TI = 1 To Число_адресов a1(Nomer_TI) = struct(Nomer_TI).value !!! Код VBA приведен отвлеченно от Ваших типов данных, следует под них подработять. Такой подход в моих задачах дает выигрыш по времени. Вопрос: Как отсортировать двумерный массив раямерностью 10Х3 по первому столбцу, но при этом сохранить первоначальную свяяь между строками массива, если можно пришлите кусок кода? Ответ: Автор ответа: ]CBK[C...R...a...S...H Кода я тебе не пришлю мне в лом думать над ним НО Это делается легко!!! Создается другой массив размерностью 10х3 и в цикле пересчета ты присваеваеш данные из перваго массива во второй Вот короче кусок кода(незнаю работает или нет) dim Mass1(10,3) as integer dim Mass2(10,3) as integer dim ii as integer,jj as integer Dim max as integer,m as integer Dim maxIndex as integer 'сортировка по max 'Найдем max элимент for ii=0 to 10 max=mass1(0,0) for i=1 to 10 if max maxIndex=i end if next i for jj=0 to 3 mass2(m,jj)=mass1(maxIndex,jj) next jj mass1(maxIndex,0)=-10000 'Минимальное число, чтобы оно не было max m=m+1 next ii Если чесно я этот код написал не в IDE так что за его работоспособность не отвечаю Вопрос: Как вызвать хранимую процедуру c SQL Server'a в коде программы на VB6 ? Ответ: Автор ответа: Yura Melnik Необходимо сформировать следующую строку: Public cn As New ADODB.Connection cn.Open "dsn=<имя_источника_данных>" Dim str as String Str = “Exec <имя хранимой процедуры> |<параметр1>|, |<параметр2>|,….|<параметрN>|” ' Даты заключаются в '2003-03-01' Form1.cn.Execute str 'Собственно сам вызов вызов процедуры Ответ: Автор ответа: Евген Примерно так: Dim rs As ADODB.Recordset Dim cn As ADODB.Connection cn.Open "FILE NAME=A.DSN" rs.Open "StoredProcedureName", cn, adOpenKeyset, adLockOptimistic, adCmdStoredProc Ответ: Автор ответа: Gregory here example of code Public Function GetMovementInformation(ByVal btIsCurrMonth As Byte, _ Optional ByVal dtDateFrom As Date = 0, _ Optional ByVal dtDateTo As Date = 0, _ Optional ByVal lintPayBy As Long = 0, _ Optional ByVal lintDebitCreditArt As Long = 0, _ Optional ByVal lintMovesID As Long = 0) As ADODB.Recordset On Error GoTo ErrHang Dim DBRS As ADODB.Recordset Dim dbCon As ADODB.Connection Dim strSQL As String Set dbCon = CreateObject("ADODB.Connection") dbCon.Open strCon dbCon.CursorLocation = adUseClient strSQL = "exec sp_Movement_Information " & btIsCurrMonth & ",'" & CDate(dtDateFrom) & "','" & _ CDate(dtDateTo) & "'," & lintPayBy & "," & lintDebitCreditArt & "," & lintMovesID Set GetMovementInformation = dbCon.Execute(strSQL) GetMovementInformation.ActiveConnection = Nothing dbCon.Close Set dbCon = Nothing Exit Function ErrHang: Call Log(strErrorSource & " Function GetMovementInformation" & " " & Err.Number & " " & Err.Description) Set dbCon = Nothing Err.Raise Err.Number End Function Вопрос: Как на VB6 заполнить форму на web-странице и сделать клик на submit. При таких вариантах пишет ошибка метод не поддерживается Private Sub Command1_Click() Dim Vladimir As String Explorer.Visible = True Explorer.Navigate "C:\WINDOWS\Рабочий стол\RoboForm1.htm" Delay 2 'задержа необходима для загрузки страницы 'Explorer.Document.Forms(0).Ваше_имя.Value = Vladimir Explorer.Document.Forms(0).Ваше_имя.Write "Vladimir" 'Explorer.Document.InputBox.Ваше_имя.Put "Vladimir" 'Explorer.Document.Forms(0).Добавить_новое.Click End Sub Где можно об этом узнать,или что нужно сделать. В интернете ничего не нашел. Ответ: Автор ответа: Евген Видимо, плохо искал. ;) Зайди на www.citforum.ru - там этой информации море с описаниями, примерами и ссылками. Вопрос: Привет люди помогите решить проблему есть класс, а в нем процерура: Dim ws As Object Sub wsInit() Set ws = CreateObject("MSWinsock.Winsock") End Sub которая создает обьект Winsock. Как известно, у него есть событие DataArrival. Так вот мне необходимо его перехватить. Есть мой вариант того, как это зделать: Private Sub ws_DataArrival(ByVal bytesTotal As Long) Dim tmp as String ws.GetData tmp MsgBox tmp End Sub Но он не работает (по крайней мере у меня). Ответ: Автор ответа: Шкуренко Александр Волшебное слово WithEvents! Private WithEvents ws As Winsock Private Sub Class1_Terminate() Set ws = Nothing End Sub ' Если OCX выбран в References Public Sub Init() Set ws = New MSWinsockLib.Winsock End Sub ' А если в Components тогда бросаешь его на форму и передааешь по ссылке Public Sub Init(ByRef ctl as Winsock) Set ws = ctl End Sub Private Sub ws_DataArrival(ByVal bytesTotal As Long) MsgBox "Yes! This is event 'DataArrival'" End Sub Ответ: Автор ответа: Old Krot you must define not as object private withevents ws as WinSock so you can handle all events Ответ: Автор ответа: Артем Кривокрисенко Нелохо бы вверху (где Declaration) дописать Dim WithEvents ws As MSWinsock.Winsock А из процедуры удалить эту гадость: Dim ws As Object. Усе. Ответ: Автор ответа: P@Ssword Подключи к проекту WinSock и пиши: Dim WithEvents ws As winsock А потом сверху выбираешь объект и т.д., и т.п., и ДТП. Вопрос: Люди в Visual Studio есть очень реальная утилита Depends она служит для получения API функций из библиотек, программ и т.д. Но в ней есть баг она не пишет какие данные необходимо передавать в ту или иную функцию, кто знает что с этим делать Ответ: Автор ответа: USA Эта утилита выдает лишь имена, ординалы и точки входа секций импорта/экспорта но ни как ни декларации функций. Ответ: Автор ответа: RaZoom Это не баг. Дизасемблер тебе поможет! Ответ: Автор ответа: AndroiD А ничего. Она смотрит заголовки импорта/экспорта и вываливает их на юзер в удобной для него форме. Вот и все ее назначение. И, соответственно, все возможности... Ответ: Автор ответа: P@Ssword Боюсь, что это не баг и так просто параметры не узнаешь... Вопрос: Есть ли какая-нибудь прога, которая показывает к какому классу относится окно? Например,манипулятор панели яадач- "Shell_TrayWnd"... Ответ: Автор ответа: .::neo::. Сам спрашиваю-сам отвечаю! В Visual C++ есть прога под названием spy++... Ответ: Автор ответа: Роман У меня есть программа ЕХЕ и исходники на VB. Определяет хэндл, класс, имя родителя и т.д. Весит - 125кб. Кому надо: svs@kes.veco.ru Мыльте - пришлю. Ответ: Автор ответа: Артем Кривокрисенко В поставку Студии входит программуля Spy++ (spyxx.exe). Она-то и покажет всю нужную тебе информацию (там, кстати, усть ну Очень удобный поиск:)) Ответ: Автор ответа: USA В VS5 и выше есть утилита Spy++, в VB.NET она кажется так же входит. Ответ: Автор ответа: RaZoom Навалом. Лично мне нравиться Sign 0f Misery. Можно, так же, воспользоваться Spy++ из VS Ответ: Автор ответа: Eugen Spy++ Входит в состав MsVS. Вопрос: Такой вопрос: Я создаю панель инструментов типа MS Office. Пишу код: Private Sub Form_Load() 'Раямеры и положение формы formMain.Height = Screen.Height formMain.Left = Screen.Width - formMain.Width End Sub т.е. форма раямещается в правом углу экрана. Как сделать, чтобы другие окна в развёрнутом виде располагались слева от этой формы и не закрывали её (как с панелью инструментов)? Ответ: Автор ответа: Роман newForm.Height=Screen.Height newForm.Width=Screen.Width-formMain.Width Вопрос: Как можно послать сообщение на email? Ответ: Автор ответа: .::neo::. Сколько было уже разговору по-этому поводу(методов даже несколько), мне нравится вот этот: Подключаешь контрол Microsoft MAPI Controls. Кладёшь на форму MAPISession и MAPIMessage и пишешь: MAPISession1.SignOn MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.Compose MAPIMessages1.RecipAddress = younick@yandex.ru MAPIMessages1.MsgSubject = "Заголовок" MAPIMessages1.MsgNoteText = "Тело письма" MAPIMessages1.Send False MAPISession1.SignOff ...вот и все дела! Можно ещё написать через shell {shell "srart mailto:younick@yandex.ru"}, но мне так почему-то не нравится... Вопрос: Раярабатывал я тут приложение - редактор тестов с выборочными ответами, работающее с БД Access. Краткое описание: прога соядает, ияменяет, удаляет таблицы в которых хранятся данные тестовых яаданий. Заметил, что раямер файлов БД постоянно увеличивается, даже если не добавляются новые таблицы. Почему это происходит? Ответ: Автор ответа: Mind Engine Сжатие базы сделай, все вернется на круги своя! %) Ответ: Автор ответа: Роман Лучше пользоваться базами ISAM(базы данных индексно-последовательного метода доступа). Например: dBase, а лучше - FoxPro (*.dbf) Ответ: Автор ответа: CRAZYDIMA Дело в том, что Access, по мнению некоторых не удаляет записи как таковые, а помечает их только на удаление, при сжатии же он удаляет их. Сам я не нашёл более правдоподобного объяснения проблемы, но факт фактом-база увеличивается. Если тебя такой вариант не устраивает - используй функцию сжатия БД - метод DAO.CompactDatabase (ScrName as String ,DstName as String, DstLocale,Options,SrcLocale) Я использую только ScrName as String ,DstName as String - база которую необходимо сжать, база которая будет получена в результе. Потом удаляй стандартными средсвами старый файл?! Ясно? Вопрос: Подскажите plz, как можно в текстовый файл (*.txt) вставить стрку в произвольную позицию (имеется ввиду между некоторыми другими строками), не загужая, при этом, содержимое файла в TextBox? Ответ: Автор ответа: Vir В TextBox загружать текст совершенно и ненадо. Можно сделать это несколькими способами. Покрайней мере я других незнаю. 1) прочитать и запомнить в массиве строки файла, вставить нужную и сохранить. Dim A() As String Dim S As String Dim Q As String n = 0 Open "c:\1.txt" For Input As #1 While Not EOF(1) n = n + 1 ReDim Preserve A(1 To n) Line Input #1, Q A(n) = Q Wend Close n = 2 ' Встовляет во вторую строку S = "abcdefdVIR" 'Текст Open "c:\2.txt" For Output As #1 For i = 1 To UBound(A) If n = i Then Print #1, S Q = A(i) Print #1, Q Next Close 2) Можно и подругому: Читать и записывать в бинарном виде и обрабатывать массив как массив символов Ответ: Автор ответа: ]CBK[C...R...a...S...H Точно сказать не могу но вроде это делается так open "my.txt" for binary as #1 put #1, место_куда_вставлять, что_вставлять место_куда_вставлять - позицая напимер 14 Ответ: Автор ответа: AndroiD А зачем здесь текстбокс? Грузи в переменную string. По другому никак. Хотя, конечно, если очень захотеть, можно извратиться и отобразить файл в память... И тогда его уже через память ковырять. Но это технически. А на практике обычных методов вроде всегджа хватало. Ответ: Автор ответа: P@Ssword Загрузи куда-нибудь ещё (aka в память %-) Вопрос: Нужно в VB6 построить амплитудно-частотную хар-ку звукового .wav - файла. Ответ: Автор ответа: P@Ssword Читай про быстрые преобразования Фурье. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |