Запоминание программы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ZipFeR
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 18.10.2004 (Пн) 23:14

Запоминание программы

Сообщение ZipFeR » 24.02.2005 (Чт) 20:56

Првиет всем !

Мне нужно сделать так чтобы допустим запустил прогу нажал на кнопку, и она стала Enabed=false, А ПОТОМ ЧТОБЫ ЗАНОВО ЗАПУСТИТЬ И ЧТОБЫ ОНА ТАК И ОСТАЛАСЬ FALSE ?? Как осуществить дайте пожалуйста кодик :?

Ship
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 15.01.2005 (Сб) 0:53

Сообщение Ship » 24.02.2005 (Чт) 21:09

запоминай состояние кнопки в реестре или в .ini-файле

ZipFeR
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 18.10.2004 (Пн) 23:14

Сообщение ZipFeR » 24.02.2005 (Чт) 22:54

КАК ? пример есть ?

Ship
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 15.01.2005 (Сб) 0:53

Сообщение Ship » 24.02.2005 (Чт) 23:42

Сохранение состояния кнопки в реестре:
Запусти, нажми кнопку, закрой, опять запусти.
Код: Выделить всё
Option Explicit

Dim check As Boolean

Private Sub Command1_Click()

SaveSetting App.EXEName, "check", "check", 1
Command1.enabled = False

End Sub

Private Sub Form_Load()

check = GetSetting(App.EXEName, "check", "check", 0)

If check Then Command1.enabled = False

End Sub

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 25.02.2005 (Пт) 14:34

Юзаем PropertyBag и храним все настройки в exe файле. И настройки изменить никто не может :)

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 25.02.2005 (Пт) 17:22

Ну-ка, ну-ка, поподробнее, por favor :)
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

Андрей Васюта
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 20.07.2004 (Вт) 19:40

Сообщение Андрей Васюта » 25.02.2005 (Пт) 17:43

Я бы тоже рад был посмотреть примерчик ini и PropertyBag.
Большой программе - большие глюки.

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 26.02.2005 (Сб) 20:23

INI.bas:
:)
Код: Выделить всё
Option Explicit



Public Declare Function GetPrivateProfileStringByKeyName& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName$, ByVal lpszKey$, ByVal lpszDefault$, ByVal lpszReturnBuffer$, ByVal cchReturnBuffer&, ByVal lpszFile$)
Public Declare Function GetPrivateProfileStringKeys& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName$, ByVal lpszKey&, ByVal lpszDefault$, ByVal lpszReturnBuffer$, ByVal cchReturnBuffer&, ByVal lpszFile$)
Public Declare Function GetPrivateProfileStringSections& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName&, ByVal lpszKey&, ByVal lpszDefault$, ByVal lpszReturnBuffer$, ByVal cchReturnBuffer&, ByVal lpszFile$)
' This first line is the declaration from win32api.txt

Public Declare Function WritePrivateProfileStringByKeyName& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lplFileName As String)
Public Declare Function WritePrivateProfileStringToDeleteKey& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Long, ByVal lplFileName As String)
Public Declare Function WritePrivateProfileStringToDeleteSection& Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Long, ByVal lpString As Long, ByVal lplFileName As String)
Public Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpfilename As String) As Long

Function VBGetPrivateProfileString(section$, key$, File$) As String
    Dim KeyValue$
    Dim characters As Long
   
   
    KeyValue$ = String$(128, 0)
    characters = GetPrivateProfileStringByKeyName(section$, key$, "", KeyValue$, 127, File$)

    If characters > 1 Then
        KeyValue$ = Left$(KeyValue$, characters)
    End If
   
    VBGetPrivateProfileString = KeyValue$

End Function


Public Function GetSectionNames(FileName As String, SectionNames As Variant) As Integer
    'GetSectionNames Return Number of Section in file
    'SectionNames return all section names
   
    Dim characters As Long
    Dim SectionList As String
    Dim ArrSection() As String
    Dim i As Integer
    Dim NullOffset%
   
    SectionList = String$(128, 0)

    ' Retrieve the list of keys in the section
    characters = GetPrivateProfileStringSections(0, 0, "", SectionList, 127, FileName)
   
    ' Load sections into Arrey
    i = 0
    Do
        NullOffset% = InStr(SectionList, Chr$(0))
        If NullOffset% > 1 Then
            ReDim Preserve ArrSection(i)
            ArrSection(i) = Mid$(SectionList, 1, NullOffset% - 1)
            SectionList$ = Mid$(SectionList, NullOffset% + 1)
            i = i + 1
        End If
    Loop While NullOffset% > 1
    GetSectionNames = i - 1
    SectionNames = ArrSection
   

End Function

Public Function GetKeyNames(SectionName As String, FileName As String, KeyNames As Variant) As Integer
    'GetKeyNames Return Number of key in section
    'KeyNames Return list of keyNames in section
   
    Dim characters As Long
    Dim KeyList As String
    Dim ArrKey() As String
    Dim i As Integer
   
    KeyList = String$(128, 0)
    ' Retrieve the list of keys in the section
   
    characters = GetPrivateProfileStringKeys(SectionName, 0, "", KeyList, 127, FileName)
   
    ' Load Keys into Arrey
    Dim NullOffset%
    i = 0
    Do
        NullOffset% = InStr(KeyList, Chr$(0))
        If NullOffset% > 1 Then
            ReDim Preserve ArrKey(i)
            ArrKey(i) = Mid$(KeyList, 1, NullOffset% - 1)
            KeyList$ = Mid$(KeyList, NullOffset% + 1)
            i = i + 1
        End If
    Loop While NullOffset% > 1
    GetKeyNames = i - 1
    KeyNames = ArrKey
End Function

Public Function DeleteKey(KeyName As String, SectionName As String, FileName As String) As Long
    'Return 0 if Deletion not sucsesful
       
    ' Delete the selected key
    DeleteKey = WritePrivateProfileStringToDeleteKey(SecName, lstKeys.Text, 0, FileName$)

   
End Function

Public Function WriteKey(SectionName As String, KeyName As String, KeyValue As String, FileName As String) As Long
    If Len(KeyValue) = 0 Then KeyValue = " "
    WriteKey = WritePrivateProfileStringByKeyName(SectionName, KeyName, KeyValue, FileName)
End Function

Public Function WriteSection(SectionName As String, FileName As String) As Long
    WriteSection = WritePrivateProfileSection(SectionName, "", FileName)
End Function
   
   
Public Function DeleteSection(SectionName, FileName) As Long
    DeleteSection = WritePrivateProfileStringToDeleteSection(SectionName, 0&, 0&, FileName)
End Function
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Dex
Постоялец
Постоялец
 
Сообщения: 346
Зарегистрирован: 09.08.2004 (Пн) 16:11

Сообщение Dex » 26.02.2005 (Сб) 20:55

Ща накатаю пример с PropertyBag :)

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 26.02.2005 (Сб) 21:28

Dex писал(а):Ща накатаю пример с PropertyBag :)


Вот и всё разложим...
Кстати, а чё это такое :oops:
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 26.02.2005 (Сб) 21:44

KDima писал(а):
Dex писал(а):Ща накатаю пример с PropertyBag :)


Вот и всё разложим...
Кстати, а чё это такое :oops:


PropertyBag-то :?:
При помощи него ещё сохраняются установки в UserControl-ах :D
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 27.02.2005 (Вс) 3:21

а если просто в отдельный файлик писать
запись - код из своей проги взял

If mnuOptionsShowLogo.Checked = False Then
Open "Logo.dat" For Output As #2
Print #2, "32"
Close #2
mnuOptionsShowLogo.Checked = True
Else
mnuOptionsShowLogo.Checked = False
Open "Logo.dat" For Output As #2
Print #2, "NoLogo"
Close #2
End If

чтетие - код из своей проги взял

Open "Logo.dat" For Input As #1
Input #1, Dblclk
Close #1
If Dblclk = 32 Then
frmLogo.Show
mnuOptionsShowLogo.Checked = True
Else
mnuOptionsShowLogo.Checked = False
End If
Изображение

Ship
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 15.01.2005 (Сб) 0:53

Сообщение Ship » 27.02.2005 (Вс) 8:32

Dex писал(а):Ща накатаю пример с PropertyBag :)

Ну где же пример!?

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 27.02.2005 (Вс) 14:08

HotKitten писал(а):а если просто в отдельный файлик писать
запись - код из своей проги взял

If mnuOptionsShowLogo.Checked = False Then
Open "Logo.dat" For Output As #2
Print #2, "32"
Close #2
mnuOptionsShowLogo.Checked = True
Else
mnuOptionsShowLogo.Checked = False
Open "Logo.dat" For Output As #2
Print #2, "NoLogo"
Close #2
End If

чтетие - код из своей проги взял

Open "Logo.dat" For Input As #1
Input #1, Dblclk
Close #1
If Dblclk = 32 Then
frmLogo.Show
mnuOptionsShowLogo.Checked = True
Else
mnuOptionsShowLogo.Checked = False
End If


Хм... ничего...
Я подозреваю, что такой код может написать каждый... :wink:
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

HotKitten
Дятил
Дятил
Аватара пользователя
 
Сообщения: 400
Зарегистрирован: 24.01.2005 (Пн) 21:48
Откуда: из дома

Сообщение HotKitten » 27.02.2005 (Вс) 15:18

все гениальное просто!
заодно сократим размер проги, если не будем писать ini.bas
Изображение

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 27.02.2005 (Вс) 16:26

HotKitten писал(а):все гениальное просто!
заодно сократим размер проги, если не будем писать ini.bas


Зачем его писать?
Размер проги не слишком раздуется, а юзать INI.bas проще!
+ WinApi работает быстрее!
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.02.2005 (Вс) 16:38

Ага, только ini парсится каждый раз с начала, и его размер не может превышать 32 Кб...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 27.02.2005 (Вс) 17:08

GSerg писал(а):Ага, только ini парсится каждый раз с начала, и его размер не может превышать 32 Кб...


А тебе мало?
У меня есть парсер не на Api!
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 27.02.2005 (Вс) 19:50

Народ, а чё такое INI.BAS :oops: :?:
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.02.2005 (Вс) 20:01

Имя модуля для работы с ini-файлами...

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 27.02.2005 (Вс) 20:03

Тьфу ты, точно, он же выше описан :oops: :P
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда


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

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

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot], Yandex-бот и гости: 155

    TopList