Prüfen, ob in der Datei was vorhanden ist... Verfasst am: 15.07.2007, 01:02
Hallo, ich habe ein Problem
[code]
Private Sub cmdDelete_Click()
txtPasswort.Text = ""
txtPasswortB.Text = ""
End Sub
Private Sub cmdEnd_Click()
End
End Sub
Private Sub cmdOk_Click()
If txtPasswort.Text = "" Or txtPasswortB.Text = "" Then
MsgBox "Bitte Füllen sie beide Felder aus!", vbInformation
ElseIf txtPasswort.Text = txtPasswortB.Text Then
Open "Npw4882499.txt" For Output As #1
Print #1, txtPasswort.Text
Close #1
MsgBox "Das Passwort ist nun gesetzt, Vielen Dank!", vbInformation
Me.Hide
frmNachricht.Show
ElseIf Not txtPasswort.Text = txtPasswortB.Text Then
MsgBox "Die beiden Passwörter sind nicht Identisch!", vbInformation
txtPasswort.Text = ""
txtPasswortB.Text = ""
End If
End Sub
Private Sub Form_Load()
If Not #1 = "" Then
Me.Hide
frmLoginP.Show
Else:
End If
End Sub
[/code]
Ich muss bei dem Fett gedruckten herausfinden ob was in der Datei vorhanden ist. Wenn ja, dann muss er auf eine andere Form, wenn nein, muss er auf der Form bleiben.
lg Lu _________________
Marduk_ « Moderator »
Anmeldedatum: 17.06.2007 Beiträge: 389
Verfasst am: 15.07.2007, 03:52
[code]
dim F as Integer
Dim sInhalt as String
F = FreeFile
Open sFilename For Binary As #F
sInhalt = Space$(LOF(F))
Get #F, , sInhalt
Close #F[/code]
Damit hast du die Textdatei in einer Variable drin. Wenn du nur das Passwort in der .txt drin hast, kannst du jetzt einfach vergleichen ob
[code]If txtPasswort.Text = sInhalt Then
MsgBox...
ElseIf ...
EndIf[/code]
Falls du einen ganzen Text in der Textdatei drin hast, dann splittest du einfach den String nach jedem Wort und vergleichst dann einfach.
Ich hoffe das hilft dir
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 09:48
Hmm...
Gut aussehen tut es, aber so wirklick funktionieren will es nicht...
für was steht den F? und sInhalt?
Und, er muss nur vergleichen ob etwas da ist, oder nicht, nicht ob es stimmt!
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 15.07.2007, 10:16
Wenn ich dich richtig verstehe, dann willst du nur überprüfen ob die Datei leer ist oder nicht.
[code]
if Filelen("DeinPfad") = 0 then
'Code wenn die Datei leer ist
else
'Code wenn sie nicht leer ist
end if
[/code]
Edit//
Noch eine Erklärung von mir zu Marduks Code.
In sInhalt liest er die komplette Datei ein und #F steht für die Dateinummer.
Mit "F = Freefile" holt er sich die nächste freie Dateinummer.
Das ganze ist aber nicht unbedingt notwendig und du kannst auch selbst eine Nummer zuweisen. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 10:28
Sehr gut, funktioniert fast, er sagt mir nur noch "Datei nicht gefunden"
Sprich: Ich muss die Datei Npw4882499.txt Noch Einmalig beim 1 Start des Programmes erstellen.
Wie schafft man sowas?
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 15.07.2007, 10:39
Überprüfe am besten vorher ob die Datei überhaupt existiert.
Den code füge einfach in ein Modul ein.
[code]
Public Function FileExists(ByVal Filename As String) As Boolean
On Local Error Resume Next
FileExists = (Dir$(Filename) <> "")
End Function
[/code]
Und jetzt kombinieren wir das einfach mit dem code, der testet ob die Datei leer ist.
[code]
Filepath = "DeinPfad"
if FileExists(Filepath) = True then
If Filelen(Filepath) = 0 Then
'Code wenn die Datei leer ist
else
'Code wenn sie nicht leer ist
end If
end if
[/code]
So überprüft er ob die Datei überhaupt vorhanden ist und führt dann erst den restlichen code aus. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 11:17
Endlich, jaaaaaaaa....
Danke schön (l) xD
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 11:31
Andere Frage:
Was gibt es sonst noch ausser FileLen oder FileExists?
Ich suche einen der überprüft ob Die File = txtPasswort.text ist?
Ich suche einen der überprüft ob Die File = txtPasswort.text ist?
Das hat TheCoder doch schon gepostet:
[code]Dim F As Integer
Dim sInhalt As String
F = FreeFile ' freier DateiZeiger
Open sFilename For Binary As #F ' die Datei zum lesen öffnen
sInhalt = Space$(LOF(F)) ' ein String von der Größe der Datei wird mit Leerzeichen gefüllt
Get #F, , sInhalt ' der inhalt der Datei wird eingelesen
Close #F
If txtPasswort.Text = sInhalt Then
MsgBox...
ElseIf ...
EndIf[/code]
oder was? _________________ Wie findet ihr meine Sig?
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 12:37
Wenn ich diesen Code genau so übernehme Meldet er mir:
"Fehler beim Zugriff auf Pfad/Datei"
Wenn ich aber dan sFilename durch "Npw4882499.txt" ersetze dann funktioniert gar kein Passwort...
Du musst natürlich den ganzen Pfad(C:\dasd\dsa\dsa.txt) als sFileName nehmen..
Also wenn es im Projektverzeichnis ist, dann [code]sFileName = App.Path & "\Npw4882499.txt"[/code] _________________ Wie findet ihr meine Sig?
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 13:41
Aha, das erklärt einiges...
Aber trodzdem ist das Passwort immer noch falsch???
[code]Private Sub cmdLogin_Click()
Dim F As Integer
Dim sInhalt As String
F = FreeFile ' freier DateiZeiger
sFileName = App.Path & "\Npw4882499.txt"
Open sFileName For Binary As #F ' die Datei zum lesen öffnen
sInhalt = Space$(LOF(F)) ' ein String von der Größe der Datei wird mit Leerzeichen gefüllt
Get #F, , sInhalt ' der inhalt der Datei wird eingelesen
Close #F
If txtLogin.Text = sInhalt Then
Me.Hide
frmNachricht.Show
Else: MsgBox "Das Passwort ist falsch!", vbInformation
End If
End Sub[/code]
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 15.07.2007, 19:32
Ich schätze mal er liest aus der Datei zu viele Zeichen aus. Also irgendwelche unnötigen Zeichen wie Leerzeichen, Zeilenumbruch etc.
Vielleicht überprüfst du mal, was genau er eigentlich einliest.
mfg, ZiG _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 19:53
er liest nur 1 Wort, oder eine Zahl, mehr nicht...
Tja, dann machst du irgendwas anderes falsch.
Ich habs mal mit deinem code ausprobiert und es geht ohne Probleme. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Lad es mal runter, villeicht findest du hier irgendwo sonst den Fehler...
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 15.07.2007, 20:40
Ganz einfach. Es ist wie ich gesagt habe dass er noch einen Zeilenumbruch einliest und deswegen der Vergleich der beiden strings nicht funktioniert.
Wenn man die Datei mit dem Passwort selber erstellt dann funktioniert es einwandfrei.
Das Problem liegt beim speichern des pw's.
Diese Zeile:
[code]
Print #1, txtPasswort.Text
[/code]
Mach einfach hinten ein Semikolon dran. Dann macht er keinen Zeilenumbruch.
So:
[code]
Print #1, txtPasswort.Text;
[/code]
mfg _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
Luu_ Tutorial Leser
Anmeldedatum: 30.06.2007 Beiträge: 56
Verfasst am: 15.07.2007, 21:04
Ok klappt wunderbar, dankeschön! _________________