| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > Как в ListBox запоминать данные, |
| Автор: *^angel^* 4.5.2003, 20:22 |
| день добрый! Подскажите как средствами VBA можно сделать следующее: есть ListBox надо хапоминать туда данные, которые не должны исчезать после выхода из программы. Может нужно в файл запоминать? |
| Автор: valex13 5.5.2003, 09:03 |
| Да. Лучше всего в ini. Вот пример работы: 'Записать информацию в ini Public Declare Function WritePrivateProfileString Lib "KERNEL32" _ Alias "WritePrivateProfileStringA" (ByVal AppName As String, _ ByVal KeyName As String, ByVal keydefault As String, _ ByVal FileName As String) As Long 'Получить информацию из совственного ini Public Declare Function GetPrivateProfileString Lib "KERNEL32" _ Alias "GetPrivateProfileStringA" (ByVal AppName As String, _ ByVal KeyName As String, ByVal keydefault As String, _ ByVal ReturnString As String, ByVal NumBytes As Long, _ ByVal FileName As String) As Long 'Считываем iRez = GetPrivateProfileString("options", "DBPath", _ "", sTemp, iSize, Application.Path & "\MyFile.ini") 'Записываем iRez = WritePrivateProfileString("options", "DBPath", sPath, _ Application.Path & "\MyFile.ini") Записываешь сначало количество элементов, а потом в цикле и элементы. Считываешь так же. |
| Автор: Unregistered 5.5.2003, 22:01 |
| спасибо, я конечно умная, но к сожалению, в VBA не разбираюсь......... можно это как-то легче написать? я в этом коде ничего не поняла......... |
| Автор: valex13 13.5.2003, 03:09 | ||
Именно. Средствами Visual Basic for Application. Однако. Этот способ наиболее легкий, а главное - классический. Можете хранить информацию в реестре, но способ все равно тот же. Вам нужно вызывать функции WINAPI для работы с реестром. Это придется делять в любом языке. Стоит ли овчинка выделки? Решать вам. |
| Автор: vickr 15.5.2003, 08:40 |
| Выше приведенные советы вполне разумны, но есть альтернатива - функции VB для чтения/записи файлов. Не буду вдаваться в теорию, приведу пример кода сброса данных из ListBox в файл. Проверил в VB6 - все работает. В VBA тоже должно, по идее. Dim i As Integer Open "listdata.txt" For Output As #1 For i = 0 To List1.ListCount - 1 List1.ListIndex = i Print #1, List1.Text Next i Print #1, List1.List(i) Close #1 Или так, на строчку короче (и, по идее чуть быстрее): Dim i As Integer Open "listdata.txt" For Output As #1 For i = 0 To List1.ListCount - 1 Print #1, List1.List(i) Next i Print #1, List1.List(i) Close #1 Ну а потом, когда нужно, считываешь эти данные обратно в ListBox. Удачных экспериментов. |
| Автор: *^angel^* 20.5.2003, 09:11 | ||||
| vickr спасибо большое. Я почти так и сделала сохраняет в файл:
Считавает из файла в ListBox:
valex13 овчинка выделки не стоит. |
| Автор: *^angel^* 20.5.2003, 09:14 |
| т.е. наоборот, сначало код для считывания, а потом для записи.... |
| Автор: cardinal 21.5.2003, 17:53 | ||
| Соблюдайте синтаксис! Пишите исходники так, чтобы их было легче читать. Делайте сноски в if ... else, for ... next, do while ... loop и т.д. Пишите комментарии если вы написали то, что может быть не понятно другим участникам и посетителям форума. Пишите когда указанный исходник может не работать! Просьба также помещать цитаты и куски кода в спец. рамки. Это не наезд, а попытка сделать форум лучше
|
| Автор: vickr 22.5.2003, 13:56 | ||
Ну ты суров, братишка |
| Автор: Mephisto 28.8.2003, 16:06 | ||
Аминь. |