Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: Coś robię nie tak, ale nie wiem co?
gibcio




Typ: neutral
Postów: 39
Zarejestrowany: Oct 2004
Coś robię nie tak, ale nie wiem co?

Mam coś takiego: Po wpisaniu słowa "Budzik" program uruchamia kontrolkę Timer o nazwie "Budzik"
Dim D As Integer
Dim strPlik As String
strPlik = App.Path & "\Ustawienia.ini"

Private Sub Text1_KeyPress(vbKeyReturn As Integer)
If Text1.Text = "Budzik" Then
Text2.Text = "    Podaj godzinę w formacie: " & "010" & " albo 21:30"
Text1.Text = ""
Budzik.Enabled = True
End If


Zawartość kontrolki Budzik_Timer:

Private Sub Budzik_Timer()
D = WritePrivateProfileString("Budzik", "Podana godzina", CStr(Me.Text1.Text), strPlik)
Pomiar
End Sub


Po wpisaniu godziny program zapisuje ją do pliku
i wywoływana jest procedurka Pomiar, oto jej składnia:

Private Sub Pomiar()
Dim Text1 As Integer
Text1 = GetPrivateProfileInt("Budzik", "Podana godzina", 0, strPlik)
If Text1 = Time Then
Text2.Text = ""
Label3.Caption = "BUDZIK ! ! !"
End If
End Sub

I tutaj ma być odczytana godzina i porównana z bierzącą, jeśli jest taka sama to w Label3 ma się pojawić napis "BUDZIK ! ! !", ale tak nie jest nic się nie odczytuje bnajmniej nie pokazuje w Label3 i nigdzie. Proszę pomóżcie!!

01-12-2004 22:57
Pokaż profil gibcio  Wyślij email do gibcio        1654622
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Hmmm a co ma ci pokazać jak przed odpaleniem Timera zerujesz Text1


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-12-2004 00:09
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
gibcio




Typ: neutral
Postów: 39
Zarejestrowany: Oct 2004

W
Private Sub Text1_KeyPress(vbKeyReturn As Integer)
wymazałem
Text1.Text = ""
i po naciśnieciu Eneter pokazyje mi jeden.

02-12-2004 15:29
Pokaż profil gibcio  Wyślij email do gibcio        1654622
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Może zmiana nazwy zmiennej z Text1 na inną by pomogła? Masz już kontrolkę o tej samej nazwie.

Poza tym do pliku zapisujesz TEKST, odczytujesz LICZBĘ i porównujesz z CZASEM... postaraj się zachować jeden format...
Funkcja TIme zwraca ci wartosć Typu Date, porównujesz ją z liczbą, która nie wiadomo właściwie jaka jest, bo pobierasz ją z pliku, gdzie została zapisana w formie tekstu z ":" w środku... tekst z ":" w środku nie będzie traktowany jako liczba.

[Post edytowany dnia 02-12-2004 16:16 przez marcin_an]


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

02-12-2004 16:13
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Może najpiew zobacz czy godzina jest poprawnie zapisana w pliku


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-12-2004 16:37
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

GetPrivateProfileInt - a co to ma być - jak ci ma zwrócić czas jak ta funkcja zwraca INTEGERA tzn gdy masz 16:142 to zwróci ci tylko 16

Zastosuj GetPrivateProfileString


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-12-2004 16:54
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
gibcio




Typ: neutral
Postów: 39
Zarejestrowany: Oct 2004

GetPrivateProfileString
tam trzeba określić bufor gdzie ma być umieszczona wartość klucza jak mam to zrobić. Resztę już wiem.

02-12-2004 18:45
Pokaż profil gibcio  Wyślij email do gibcio        1654622
DJK



Typ: neutral
Postów: 871
Zarejestrowany: Feb 2004

Dim RetVal As String * 255, v As Long

v = GetPrivateProfileString(Section, Key, "", RetVal, 255, Filename)
Godzina = Left(RetVal, v)


Section - "Budzik"
Key - Podana godzina"
FileName - twój plik

Abyś lepiej zrozumiał "Retval As String * 255" określa maksymalny rozmiar zmiennej RetVal

Oczywiście nie musi to być 255 bo jak uzywasz tej funkcji tylko do odczytu godziny, która zawsze będzie miała 8 znaków to mozesz zamiast 255 napisać

Retval As String* 8

i w funckcji też zamiast 255 wpisać 8

Acha - jeszcze jedno

Godzina = Left(Retval,v) możesz pominąć jeżeli zastosujesz liczbę 8 bo "v" zwraca ci liczbę znaków jakie zostały odczytane z pliku Ustawienia czyli w twoim wypadku zawsze będzie 8.

np.

Plik Retval As String * 8:

Znak -> 1 2 3 4 5 6 7 8
Godzina 1 6 : 1 4 : 3 3

odczytujesz godzinę i v = 8 bo odczytano 8 znaków

Moznaby pisać i pisać


Pozdrawiam

[Post edytowany dnia 02-12-2004 19:51 przez DJK]


_____________________________________________
Jeśli można coś zrobić w sposób optymalny to czemu nie

02-12-2004 19:42
Pokaż profil DJK  Wyślij email do DJK   Odwiedź stronę DJK  
gibcio




Typ: neutral
Postów: 39
Zarejestrowany: Oct 2004

Działa wielkie dzięki

03-12-2004 17:34
Pokaż profil gibcio  Wyślij email do gibcio        1654622
Wszystkich odpowiedzi: 8 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1