Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Visual Basic - Bestimmte Teile Einer Textdatei als Variable speichern

Mitglied: Bjoern909

Bjoern909 (Level 1) - Jetzt verbinden

27.02.2008, aktualisiert 21:13 Uhr, 11562 Aufrufe, 13 Kommentare

Hallo VB-Profis,
Meine VB-Datei soll aus einer Textdatei (C:\Registrierung.txt) einen Namen raussuchen der Vorher in einer MaskedTextBox1 eingegeben wurde. Dann soll die Datei das Passwort suchen was in der Textdatei so vermerkt ist:"Name Passwort" dann soll die Datei die Eingabe in MaskedTextbox2 mit dem Passwort vergleichen und wenn sie gleich sind soll die VB Datei weiterarbeiten. Wenn nicht soll die MsgBox "falsches Passwort" ausgeben (wie ... ist ja klar: MsgBox("Falsches Passwort")).
Wenn jedoch der Name NICHT in der Datei gefunden wurde soll auch eine MsgBox-Nachricht erscheinen: "Unbekanter Name. Schon registriert?" (MsgBox("Unbekannter Name. Schon registriert?"))

Ich hoffe ich habe mich verständlich ausgedrückt (Wenn nicht dann einfach sagen xD)

MfG Bjoern
Mitglied: bastla
27.02.2008 um 16:03 Uhr
Hallo Bjoern909!

Welche VB-Version verwendest Du?

Wie sieht die Struktur der "Registrierung.txt" genau aus - je Zeile ein Name und ein Passwort, durch ein Leerzeichen getrennt?

Grüße
bastla
Bitte warten ..
Mitglied: vip3234
27.02.2008 um 16:35 Uhr
Hallo,

in diesem Fall würde ich dir raten die Textdatei folgender maßen aufzubauen:

Name1
Passwort1
Name2
Passwort2
[...]

dann liest du einfach die erste Zeile aus der Textdatei ein und vergleichst den Namen1 mit dem Wert in deinem Programm. Wenn das übereinstimmt ließt du noch das Passwort1 ein und prüfst es. andernfalls überspringst du eine Zeile und liest gleich Name2 ein. usw.

in jedem fall solltest du das Passwort aber nicht im Klartext sondern verschlüsselt speichern. (siehe dazu mal MD5 Verschlüsselung)

Vip
Bitte warten ..
Mitglied: Bjoern909
27.02.2008 um 19:21 Uhr
schon mal danke für das schnelle antworten. Das mit dem MD5-Verschlüsselung werde ich mal anschauen. Die iodee von vip3234 ist gut aber mein problem ist wie mache ich das? Ich habe ein Fenster mit der Tab auswähl möglichkeit. 2 Tabs ... einer ist zum einloggen, der andere ist zum registrieren (falls man noch nicht angemeldet ist).
Bei der Registrierung müsste der dann also checken wie die Zahl des Letzten Namens ist und dann die nächste Zahl da reinschreiben. Doch leider mache ich das alles hier mit VB noch nicht solange.
Und jetzt muss der dann auch noch bei Login diese Textdatei aufrufen und dann das Passwort checken
Ich benutze die Microsoft Visual Basic Express Edittion. könnt ihr mir was besseres empfehlen ohne diese Testzeit? ich kann dieses Visual Basic nur noch 27 Tage nutzen. (-.-)

MfG Bjoern
PS: Ich finds gut das man auf diesem Forum nicht immer so lange warten muss bis einer antwortet. Weiter so!
Bitte warten ..
Mitglied: vip3234
27.02.2008 um 19:57 Uhr
also:

Für einen Dateizugriff unter .NET musst die zunächst den Namespace "Systems.IO" einbinden.

LESEN AUS DATEI:

Dann erstellst du ein neues "StreamReader" (Datenstrom-) Objekt, das deinen Dateizugriff darstellt. Über die Eigenschaft "ReadLine()" lässt sich eine Zeile auslesen. Beim ersten mal steht der Dateizeiger im Anfang der Datei und wird mit jedem Aufruf um eine Zeile weitergeschoben. D.h. einfach mehrmals die ReadLine() Funktion aufrufen. Dabei lässt man am besten in einer Schleife eine Zählvariable mitlaufen, damit man auch weiß in welcher Zeile man steht. Schließlich kann man den Wert aus der aktuellen Zeile direkt einer String Variable im Programm zuweisen und fertig.

VB-Code Beispiel:

Function ReadFile()
Dim cntr As Integer = 0
Dim line As String

Try
Using sr As StreamReader = New StreamReader("BELIEBIGER_DATEINAME")
Do
cntr = cntr + 1

line = sr.ReadLine()

Loop Until line Is Nothing 'Loop bis Dateienden
sr.Close() 'Datenstrom schließen
End Using

Catch E As Exception
Return -1
End Try

Return 0
End Function

"sr" ist das Streamreaderobjekt. Der "try" Block wird benötigt, damit das Programm nicht abstürzt, wenn ein Fehler beim Dateizugriff erfolgt. In diesem Fall liefert die Funktion -1 zurück, was du dann gesondert abfangen kannst. Die Loop Schleife läuft solange, bis die Datei zuenden ist, also in line "nichts" steht.

SCHREIBEN IN DATEI:

Wenn es ein Streamreader Objekt gibt, dann gibt es logischerweise auch eines das "Streamwriter" heißt. Das ganze funktioniert genauso wie oben:

VB-Code Beispiel:

Function WriteFile(Byval Text as String)

Try
Using sw As StreamWriter = New StreamWriter("BELIEBIGER_DATEINAME")

sw.WriteLine("Dies ist ein Testeintrag")
sw.WriteLine(Text)
sw.Close()
End Using

Catch E As Exception
Return -1
End Try

Return 0
End Function


Zu beachten ist, dass Falls die Datei schon existiert diese einfach überschrieben wird. Falls sie noch nicht vorhanden ist wird diese automatisch erstellt.


Alternative zu VB Express ist das Visual Studio, also die Vollversion. Ansonsten weiß ich jetzt auch nix.

Gruß
Vip
Bitte warten ..
Mitglied: Bjoern909
27.02.2008 um 20:24 Uhr
Bei mir kommt da immer der Fehler:
"Eine Anweisung kann nicht innerhalb eines Methodentexts vewendet werden."
Dieses "Funktion" kann anscheinden nicht in Private Sub Button3_Click() geschrieben werden.
Wie kann man das umgehen?
Außerdem habe ich den Text ein kleine bisschen geändert so dass er jetzt so aussieht:

Writer:
01.
   Function WriteFile(ByVal Text As String) 
02.
 
03.
        Try 
04.
            Using sw As IO.StreamWriter = New IO.StreamWriter("C:\Registrieren.txt") 
05.
 
06.
                sw.WriteLine("Dies ist ein Testeintrag") 
07.
                sw.WriteLine(Text) 
08.
                sw.Close() 
09.
            End Using 
10.
 
11.
        Catch E As Exception 
12.
            Return -1 
13.
        End Try 
14.
 
15.
        Return 0 
16.
    End Function
Reader:
01.
   Function ReadFile() 
02.
        Dim cntr As Integer = 0 
03.
        Dim line As String 
04.
 
05.
        Try 
06.
            Using sr As IO.StreamReader = New IO.StreamReader("C:\Registrieren.txt") 
07.
                Do 
08.
                    cntr = cntr + 1 
09.
 
10.
                    line = sr.ReadLine() 
11.
 
12.
                Loop Until line Is Nothing 'Loop bis Dateienden 
13.
                sr.Close() 'Datenstrom schließen 
14.
            End Using 
15.
 
16.
        Catch E As Exception 
17.
            Return -1 
18.
        End Try 
19.
 
20.
        Return 0 
21.
    End Function
Und zu dem Writer habe ich noch eine Frage:
Du hast einmal "Dies ist ein Testeintrag" und einmal (Text). kommt bei "Dies ist ein Testeintrag" der Name und bei (Text) das Passwort? Wie gesagt ich konnte es nicht Testen weil man "Funktion" nicht in ein "Sub" reinschreiben kann ....
Trotzdem danke schonmal
Bitte warten ..
Mitglied: vip3234
27.02.2008 um 20:31 Uhr
Ist auch klar. Es handelt sich bei meinem Beispiel Code um eine Funktion ! Im Sub des Buttons kann lediglich der Funktionsaufruf stehen. Diese Funktion selber musst du in eine extra .vb Datei schreiben. In ein sog. Modul.

Bsp:

Module IRGEND_EIN_NAME

Function WriteFile [...]
Funtcion ReadFile[...]

end Module


Im Sub des Buttons steht dann nur:


WriteFile(IrgendeineStringVariable)

ReadFile()


also nur der Aufruf
Bitte warten ..
Mitglied: Bjoern909
27.02.2008 um 20:45 Uhr
also neues Modul wo drin steht:
01.
Module File 
02.
    Function WriteFile(ByVal Text As String) 
03.
 
04.
        Try 
05.
            Using sw As IO.StreamWriter = New IO.StreamWriter("C:\Registrieren.txt") 
06.
 
07.
                sw.WriteLine("Dies ist ein Testeintrag") 
08.
                sw.WriteLine(Text) 
09.
                sw.Close() 
10.
            End Using 
11.
 
12.
        Catch E As Exception 
13.
            Return -1 
14.
        End Try 
15.
 
16.
        Return 0 
17.
    End Function 
18.
    Function ReadFile() 
19.
        Dim cntr As Integer = 0 
20.
        Dim line As String 
21.
 
22.
        Try 
23.
            Using sr As IO.StreamReader = New IO.StreamReader("C:\Registrieren.txt") 
24.
                Do 
25.
                    cntr = cntr + 1 
26.
 
27.
                    line = sr.ReadLine() 
28.
 
29.
                Loop Until line Is Nothing 'Loop bis Dateienden 
30.
                sr.Close() 'Datenstrom schließen 
31.
            End Using 
32.
 
33.
        Catch E As Exception 
34.
            Return -1 
35.
        End Try 
36.
 
37.
        Return 0 
38.
    End Function 
39.
End Module
und inwas muss ich dann in das Sub schreiben?
Bitte warten ..
Mitglied: vip3234
27.02.2008 um 20:48 Uhr
In der Sub steht nur der Aufruf.

also

ReadFile()

mehr nicht.

oder

WriteFile(Variable)
Bitte warten ..
Mitglied: Bjoern909
27.02.2008 um 20:52 Uhr
Da ist ein kleiner Fehler ... wenn ich schreibe:
01.
Writefile(MaskedTextBox3.Text) 
dann kommt der Fehler MaskedTextBox3 konnte nicht zu String konvertiert werden.
Wo steckt der Fehler?
Bitte warten ..
Mitglied: vip3234
27.02.2008 um 20:56 Uhr
Genau so. Allerdings würde sich es hier anbieten die Funktion um einen weiteren Parameter zu erweitern, so dass du beides auf einmal schreiben kanns. sonst wird es immer überschrieben.

also:

Function WriteFile(ByVal Name As String, ByVal Passwort as String)

Try
Using sw As IO.StreamWriter = New IO.StreamWriter("C:\Registrieren.txt")

sw.WriteLine("Dies ist ein Testeintrag")
sw.WriteLine(Name)
sw.WriteLine(Passwort)
sw.Close()
End Using

Catch E As Exception
Return -1
End Try

Return 0
End Function


und der Aufruf dann mit:

WriteFile(MaskedTextBox3.Text, MaskedTextBox4.Text)
Bitte warten ..
Mitglied: Bjoern909
27.02.2008 um 21:06 Uhr
Das mit dem Reinschreiben funktioniert aber dann steht in der Text:
Name
Passwort

wolltest du das nicht eigentlich machen das hinter dem Namen und dem passwort , dann immer eine Zahl steht?? also der Erste Name und Passwort:
Name1
Passwort1
Name2
Passwort2

Und wie mache ich es dann, dass wenn das Passwort falsch ist dann die MsgBox schreibt "Falsches Passwort"
Und wenn der Name unbekannt ist MsgBox("Unbekannter Name! Schon registriert?")
Bitte warten ..
Mitglied: vip3234
27.02.2008 um 21:10 Uhr
Nein, eine Zahl hinter dem Namen / Passwort ist völlig sinnlos. wozu auch. Die Position legt sich ja dadurch fest in der welcher Zeile der Name etc. steht.
Na jetzt kannst du die werte doch in beliebigen Variablen speichern und mit dem wert in der Textbox vergleichen.

Alles kann ich dir hier nicht vorkauen. der Dateizugriff dürfte jetzt klar sein, alles andere ist basis wissen und steht in beliebigen VB Büchern und Tutorien erklärt
Bitte warten ..
Mitglied: Bjoern909
27.02.2008 um 21:13 Uhr
Tut mir leid, dass ich nochmal nachfrage aber ich bin eben noch ein newbie.
Du hast geschrieben ich müsste doch nur noch die Werte mit den MaskedTextBoxen vergleichen. Aber welche Werte denn?
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Einen bestimmten Teil einer Textdatei auslesen

gelöst Frage von Focus1610Batch & Shell5 Kommentare

Hallo, ich brauche mal einen Denkanstoß. Ich bekomme per FTP von einem Kunden täglich mehrere Textdateien. Diese haben unterschiudlich ...

Visual Studio

Visual Basic Flatfile zum Speichern von Daten?

gelöst Frage von zRobinVisual Studio4 Kommentare

Hey! Ich habe schon einmal eine frage gestellt, indem Ich mein Spiel "Cake Clicker" erwähnt habe, jetzt brauche ich ...

Batch & Shell

Bestimmter Text aus einer Textdatei umgeändert in einer Variable speichern?

gelöst Frage von spookypoofBatch & Shell4 Kommentare

Hallo, Ich wollte den Inhalt aus einer Textdatei umgeändert in einer Variable speichern. Beispiel: Textdatei.txt beinhaltet z.B. "best" (ohne ...

Batch & Shell

Jede Zeile einer Textdatei in eigene Variable speichern

Frage von tomaschkuBatch & Shell4 Kommentare

Hallo erstmal, Da ich keine passende Antwort auf meine Frage gefunden habe, will ich es hier versuchen. Als Beispiel: ...

Neue Wissensbeiträge
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 9 StundenWindows Server1 Kommentar

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 15 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 18 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...