2Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
443
443
EMPFEHLEN
-
Hallo liebe Community,
[1.] Vorwort:
Wie ihr sicherlich sehen könnt, bin ich neu hier im Forum. Dies trifft ebenfalls auf meine Kenntnisse in Visual Basic 2008 zu. Es ist meine erste Programmiersprache, ich bin also völlig neu auf dem Gebiet der Programmierung. Ich habe mich durch die VB 2008 Hilfe gelesen und einige Erfahrungen sammeln können. Einige kennen mich vielleicht aus dem Thread "Hilfe bei meinem ersten Projekt", dort habe ich einfach versucht einige Funktionen zu schreiben, was quasi am Ende ein Programm darstellen sollte, um Erfahrungen auf dem Gebiet zu erhalten.
[2.] "Mein zweites Projekt - Projektname "Call of Duty 4 Profiler"":
Dieses Mal soll mein Programm wirklich Einsatz bei einigen Freunden und mir finden. Wir spielen gerne das Spiel "Call of Duty 4", wer das Spiel kennt, weiß sicherlich, dass man dort Erfahrung sowie neue Gegenstände freispielen kann. Diese Werte werden in einem Ordner gespeichert. Mein Programm, welches ich anstrebe, soll einfach als Backup dienen. Der Benutzer wählt einfach das Installationsverzeichnis von Call of Duty 4 (cod 4) aus und dann den Pfad, wo er den Ordner hinkopieren möchte. Dabei wird nur der Unterordner "players" kopiert, da sich in ihm die Dateien befinden, in denen die Werte des Spielers gespeichert sind (Erfahrung, freigespielte Waffen).
Call of Duty 4 Profiler Layout
[3.] Programmerklärungen:
Im Folgenden möchte ich kurz die einzelen Buttons und deren Funktionen erklären:
Menüleiste:
Datei: Enthält den Punkt "Beenden", schließt also das Programm -->Funktioniert
Automatik: Enthält den Punkt "Log-Dateien erstellen", genauere Erläuterung siehe unten --> Funktioniert
Buttons:
Von: Beim Klicken öffnet sich ein FolderBrowserDialog, wo der Benutzer das Installationsverzeichnis von Call of Duty 4 angibt --> Funktioniert
Nach: Beim Klicken öffnet sich ein FolderBrowserDialog, wo der Benutzer den Speicherort angibt --> Funktioniert
Kopieren: Beim Klicken kopiert das Programm den Ordner zum Zielordner -->Funktioniert
Label: Die beiden Labels geben einfach nur den Pfad an, den der Benutzer angegeben hat --> Funktioniert
[4.] Probleme
Wie man meinem 3. Punkt entnehmen kann, läuft mein Programm eigentlich schon. Ich habe auch Fragen / Probleme bei einigen Feinheiten, der Übersichtshalber liste ich hier meine Fragen und Probleme auf und werde im 5. Gliederungspunkt meinen bisherigen Code veröffentlichen:
Kurze Erklärung zu den "Log-Dateien":
Sobald einmal der Quellpfad sowie der Zielpfad angegeben wurde, kann man diese Pfade in einer *.txt Datei abspeichern. Vorteil besteht darin, dass man sofern der Benutzer jedesmal denselben Pfad haben möchte nur 1.-Klick tätigen muss und es wird kopiert. Leider weiß ich nicht, wie man aus nur 1. *.txt Datei Zeilen ausliest, sonst hätte ich nur 2 "Log"-Dateien erstellt.
*Wenn ich im Menü "Automatik" Log-Dateien erstellen drücke, erstellt mir mein Programm 3 *.txt Dateien mit dem angebenen Namen, doch leider enthält der Name den Präfix Debug, obwohl ich es nicht angegeben habe.
*Wenn ich auf den Button "von" klicke und ein anderes Verzeichnis auswähle, soll eine Fehlermeldung erscheinen. Ich habe schon bei google gesucht, bekomme aber keine vernünftige Funktion hin, die Abfragt, ob im angegebenen Ordner das Unterverzeichnis "players" existiert.
[5.] Code
Damit mir geholfen werden kann, kopiere ich meinen kompletten Code:
Menüleiste:
Datei:
Beenden
Code vb:1 2 3
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub
Automatik:
Log-Dateien erstellen
Code vb:1 2 3 4 5
Private Sub LogDateienErstellenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LogDateienErstellenToolStripMenuItem.Click My.Computer.FileSystem.WriteAllText(Application.StartupPath & "Log.txt", TimeOfDay & " von " & von & " nach " & vbCrLf & nach, True) My.Computer.FileSystem.WriteAllText(Application.StartupPath & "Readin.txt", von & "\players" & vbCrLf, False) My.Computer.FileSystem.WriteAllText(Application.StartupPath & "Readout.txt", nach & vbCrLf, False) End Sub
Automatisches Laden
Code vb:1 2 3 4 5 6 7 8 9
Private Sub AutomatischesLadenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AutomatischesLadenToolStripMenuItem.Click Readin = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "Readin.txt") Readout = My.Computer.FileSystem.ReadAllText(Application.StartupPath & "Readout.txt") von = Readin nach = Readout TextBox1.Text = Readin TextBox2.Text = Readout My.Computer.FileSystem.CopyDirectory(von, nach, FileIO.UIOption.AllDialogs, FileIO.UICancelOption.ThrowException) End Sub
Buttons:
Von
Code vb:1 2 3 4 5 6 7
Private Sub cmdVon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdVon.Click MsgBox("Wählen Sie bitte das Verzeichnis aus, in dem Sie Call of Duty 4 hinein installiert haben", , "Call of Duty 4 Installationsverzeichnis") FolderBrowserDialog1.ShowDialog() von = FolderBrowserDialog1.SelectedPath TextBox1.Text = von & "\players" End Sub
Nach
Code vb:1 2 3 4 5 6
Private Sub cmdNach_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNach.Click MsgBox("Wohin möchten Sie Ihren Profile-Ordner kopieren ?", , "Sicherungspfad") FolderBrowserDialog2.ShowDialog() nach = FolderBrowserDialog2.SelectedPath TextBox2.Text = nach End Sub
Kopieren
Code vb:1 2 3
Private Sub cmdCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCopy.Click My.Computer.FileSystem.CopyDirectory(von & "\players", nach, FileIO.UIOption.AllDialogs, FileIO.UICancelOption.ThrowException) End Sub
Meine Variablen Deklaration
Code vb:1 2 3 4 5
Public Class Form1 Dim Readout As String Dim Readin As String Dim nach As String Dim von As String
[5.] Schlusswort:
Ich weiß, dass der Thread sehr lang ist, aber ich habe versucht alles so genau wie möglich zu beschreiben. Falls irgendwelche Fragen aufkommen, werde ich diese natürlich schnellstmöglich beantworten. Eigentlich ist mein Programm sehr simple gehalten, da es eigentlich nur kopiert, aber für mich als Neuling sind solche Dinge am Anfang noch recht komplex, gerade Abfragen, die überprüfen, ob im angebenen Verzeichnis ein Unterordner Namens "players" existiert usw. Ich weiß, dass es schwer fällt sich einfach auszudrücke, wenn man in der Materie drinsteckt. Doch bitte bedenkt, dass ich noch nicht soviel Ahnung habe und mit Fachwörtern oder sonstigen Abkürzungen Probleme haben werde. Ich möchte mich schon einmal im Voraus bei euch bedanken und schätze eure Mühe.
Mit freundlichen Grüßen
Lesterdor
-
Probiers mal so.*Wenn ich im Menü "Automatik" Log-Dateien erstellen drücke, erstellt mir mein Programm 3 *.txt Dateien mit dem angebenen Namen, doch leider enthält der Name den Präfix Debug, obwohl ich es nicht angegeben habe.
Code vbnet:1 2 3 4 5 6 7 8 9
Private Sub LogDateienErstellenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LogDateienErstellenToolStripMenuItem.Click My.Computer.FileSystem.WriteAllText(Application.StartupPath & "/" & "Log.txt", TimeOfDay & " von " & von & " nach " & vbCrLf & nach, True) My.Computer.FileSystem.WriteAllText(Application.StartupPath & "/" & "Readin.txt", von & "\players" & vbCrLf, False) My.Computer.FileSystem.WriteAllText(Application.StartupPath & "/" & "Readout.txt", nach & vbCrLf, False) End Sub
So hätte ich das gelöst.Kurze Erklärung zu den "Log-Dateien":
Sobald einmal der Quellpfad sowie der Zielpfad angegeben wurde, kann man diese Pfade in einer *.txt Datei abspeichern. Vorteil besteht darin, dass man sofern der Benutzer jedesmal denselben Pfad haben möchte nur 1.-Klick tätigen muss und es wird kopiert. Leider weiß ich nicht, wie man aus nur 1. *.txt Datei Zeilen ausliest, sonst hätte ich nur 2 "Log"-Dateien erstellt.
Code vbnet:1 2 3 4 5 6 7 8 9 10
Dim pfad As String = "pfade.txt" ' name der Textdatei die die pfade enthällt Dim pfadlist As New List(Of String) Dim SReader As New System.IO.StreamReader(pfad) While Not SReader.EndOfStream pfadlist.Add(SReader.ReadLine) End While SReader.Close() For Each pfad In pfadlist MsgBox(pfad) Next
*Wenn ich auf den Button "von" klicke und ein anderes Verzeichnis auswähle, soll eine Fehlermeldung erscheinen. Ich habe schon bei google gesucht, bekomme aber keine vernünftige Funktion hin, die Abfragt, ob im angegebenen Ordner das Unterverzeichnis "players" existiert.Code vbnet:1 2 3 4 5 6 7 8 9 10 11 12 13
Dim FDialog As New FolderBrowserDialog With FDialog .Description = "Bitte wählen Sie ihr CoD4 verzeichnis aus!" If .ShowDialog = Windows.Forms.DialogResult.OK Then von = .SelectedPath If Not System.IO.Directory.Exists(von & "\players") Then MessageBox.Show("Der Ordner players konnte in """ & von & """ nicht gefunden werden!" & vbNewLine & "Bitte überprüfen Sie ihre auswahl.", _ "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Else TextBox1.Text = von & "\players" End If End If End With
Guck dir aber die Codes Snippsel bitte nochmal an, denn von Copy>paste lernt man nichts :P
Peter86Geändert von Peter86 (15.10.08 um 17:18 Uhr)
-
15.10.08 16:11 #3
- Registriert seit
- Jul 2008
- Ort
- Hinter dem Mond gleich links
- Beiträge
- 735
Ich kenn mich zwar in VB.NET nicht aus, aber aus den 3 Logdateien würde ich 1 INI-Datei machen. Such/google mal nach "INI-Dateien unter VB.NET"
In VB6 sind das zwei einfach API-Calls.Zwei Dinge sind unendlich: Die menschliche Dummheit und das Universum, nur bei letzterem bin ich mir noch nicht sicher. - Albert Einstein
Code vb:1
If Beitrag.Hilfreich=True Then Bewertung.Send("Positiv")
-
Hallo Lesterdor.
Bei deinem Problem it der Abfrage ob der Unterordner "\players" in dem gewählten verzeichnis existiert kann ich dir helfen. Das ist ganz einfach.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
[COLOR="DarkGreen"]'Also hier erstal der Teil von deinem Code noch[/COLOR] Private Sub cmdNach_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdNach.Click MsgBox("Wohin möchten Sie Ihren Profile-Ordner kopieren ?", , "Sicherungspfad") FolderBrowserDialog2.ShowDialog() nach = FolderBrowserDialog2.SelectedPath [COLOR="DarkGreen"]'Und hier jetzt die Abfrage [/COLOR] [COLOR="DarkOrange"]If My.Computer.FileSystem.DirectoryExists(nach & "\players") Then TextBox2.Text = nach Else MsgBox("Falsches verzeichnis") nach = Nothing End If[/COLOR] End Sub
Ich hoffe ich konnte dir helfen
-
Du musst nich nach abfragen, sondern von. Ausserdem halte ich deine Lösung nicht gerade sinnvoll, denn wenn ich z.B. auf Abbrechen drücke, werde ich darauf hingewiesen, das es das Falsche verzeichnis ist. Ich empfehle meine lösung

Peter86Geändert von Peter86 (15.10.08 um 17:35 Uhr)
-
Guten Abend liebe Community,
vielen lieben Dank, es funktioniert alles wie gewünscht. Danke für eure Hilfe
Mit freundlichen Grüßen
Lesterdor
-
Als kleiner Hinweis um Pfadangaben zu erstellen benutze am besten die Path.Combine Methode (Namespace System.IO)
Somit brauchst du dich nicht um "/" kümmern und ist einfach die sichere Methode.Code :1
Path.Combine(Application.StartupPath, "Log.txt")
Um aus einer Datei zulesen kannst du dir ja mal StreamReader anschauen oder zum schreiben StreamWriter.
(Müssten beide im Namespace System.IO sein)
Edit:
Sehe grad Peter hat ja schon StreamReader in seinem Quellcode.Geändert von Spyke (15.10.08 um 19:02 Uhr)
Ähnliche Themen
-
[After Effects] Benötige Hilfe bei "Umblättern"-Effekt
Von Webesek im Forum Videoschnitt, Videotechnik & -produktionAntworten: 3Letzter Beitrag: 02.10.11, 16:48 -
Benötige Hilfe zu "include"
Von G4 94 im Forum PHPAntworten: 11Letzter Beitrag: 03.01.09, 16:28 -
Benötige Hilfe bei Bild hochladen mit der Funktion "move_uploaded_file()"...
Von tomate im Forum PHPAntworten: 4Letzter Beitrag: 16.05.07, 13:57 -
Benötige Hilfe bei " if-Funktion "
Von Luckai9842 im Forum Javascript & AjaxAntworten: 7Letzter Beitrag: 16.04.07, 16:27 -
Design-Hilfe bei meinem "Wüsten-Game"
Von Kalma im Forum Creative LoungeAntworten: 0Letzter Beitrag: 22.09.06, 17:01





Zitieren
Login





