Benutzer mit den meisten Antworten
Ungültige Konvertierung von der Zeichenfolge~ Dringende hilfe!

Frage
-
Moin also ich verzweifel derzeitig hier an meinem eigenen gefussel~ Also der Fehler der ständig und immer wieder auftritt ist das hier...
Vielleicht kann mir ja einer weiterhelfen.
Programm erklärung:
Im Prinzip soll es die Datei(in diesem Falle eine .rar) Herunterladen und in einem Ordner entpacken. (Versions abfrage etc funktioniert... nur das entpacken einfach nicht...)
[quote]Ungültige Konvertierung von der Zeichenfolge D:\Program Files (x86)\Steam\Ste in Typ Integer.[/quote]
Imports System Imports System.IO Imports System.ComponentModel Imports Microsoft.Win32 Imports System.Diagnostics Imports System.Int64 Imports System.IO.PathTooLongException Public Class Form1 Dim tRestant As Int64 Dim tEcoule As Int64 Dim TailleFichier As Int64 = 0 Dim TailleFichier2 As Int64 = 0 Dim seconde As Boolean = True Dim min As Int64 = 0 Dim max As Int64 = 1 Dim pbarvalue As Int64 = 0 Dim directory As String = "nochange" Dim file As String Private Sub UnRar(ByVal filepath As String, ByVal WorkingDirectory As String) Dim objRegKey As RegistryKey objRegKey = Registry.ClassesRoot.OpenSubKey("WinRAR\Shell\Open\Command") Dim obj As Object = objRegKey.GetValue("") Dim objRarPath As String = obj.ToString() objRarPath = objRarPath.Substring(1, objRarPath.Length - 7) objRegKey.Close() Dim objArguments As String objArguments = " X " & " " & filepath & " " + " " + WorkingDirectory Dim objStartInfo As New ProcessStartInfo() objStartInfo.UseShellExecute = True objStartInfo.FileName = objRarPath objStartInfo.Arguments = objArguments objStartInfo.WindowStyle = ProcessWindowStyle.Hidden objStartInfo.WorkingDirectory = WorkingDirectory & "" Dim objProcess As New Process() objProcess.StartInfo = objStartInfo objProcess.Start() End Sub Private Sub FlatButton1_Click(sender As Object, e As EventArgs) Handles FlatButton1.Click FolderBrowserDialog1.ShowDialog() directory = FolderBrowserDialog1.SelectedPath My.Computer.FileSystem.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma") My.Computer.FileSystem.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3", directory, False) End Sub Private Sub FlatButton5_Click(sender As Object, e As EventArgs) Handles FlatButton5.Click If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") Then file = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\arma3.exe" Process.Start(file, (" -mod=\LauncherArma\@ProjectLife;\LauncherArma\@CBA_A3; -connect=5.231.193.132:2302")) Else MsgBox("Please specify the path to your ArmA III folder.", MsgBoxStyle.Critical, "Error") End If End Sub Private Sub FlatButton2_Click(sender As Object, e As EventArgs) Handles FlatButton2.Click If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt") Or My.Computer.FileSystem.FileExists(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar") Then MsgBox("You have already downloaded the mod! Check if an update is available.", MsgBoxStyle.Exclamation, "Error") Else If directory = "nochange" Then MsgBox("Please select the Arma 3 directory!", MsgBoxStyle.Critical, "Error") Else tEcoule = 0 PictureBox1.Visible = False FlatProgressBar1.Visible = True FlatLabel1.Visible = True FlatLabel2.Visible = True FlatLabel3.Visible = True Timer2.Start() BackgroundWorker1.RunWorkerAsync() End If End If End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") Then directory = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") Else MsgBox("Please select your Arma III directory first!", MsgBoxStyle.Information, "Important") End If End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick Dim FichierInfo As System.IO.FileInfo = New System.IO.FileInfo(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar") Dim TailleFichier As Int64 = FichierInfo.Length Dim size As Int64 = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt") pbarvalue = TailleFichier / size * 100 FlatProgressBar1.Value = pbarvalue If pbarvalue = 100 Then FlatButton6.Visible = True Timer3.Stop() Timer1.Stop() MsgBox("Please Install the Files now.", MsgBoxStyle.Information, "Ready to Install") End If End Sub Private Sub FlatButton4_Click(sender As Object, e As EventArgs) Handles FlatButton4.Click If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") Then My.Computer.Network.DownloadFile("ftp://altis:life@5.231.193.132:22/version.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version.txt") If My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version.txt") = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") Then My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version.txt") MsgBox("No updates are available", MsgBoxStyle.Information, "Addons Update") ElseIf My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version.txt") <> My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") Then My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") My.Computer.FileSystem.RenameFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version.txt", "version-OLD.txt") My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt") My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar") tEcoule = 0 PictureBox1.Visible = False FlatProgressBar1.Visible = True FlatLabel1.Visible = True FlatLabel2.Visible = True FlatLabel3.Visible = True Timer2.Start() BackgroundWorker1.RunWorkerAsync() End If Else MsgBox("Please download the newest Version of the Mod.", MsgBoxStyle.Exclamation, "Error") End If End Sub Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick Timer1.Start() Timer3.Start() Timer2.Stop() End Sub Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork My.Computer.Network.DownloadFile("ftp://altis:life@5.231.193.132:22/size.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt") My.Computer.Network.DownloadFile("ftp://altis:life@5.231.193.132:22/Addon.rar", My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar") If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version.txt") Then ElseIf My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") Then My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") End If My.Computer.Network.DownloadFile("ftp://altis:life@5.231.193.132:22/version.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\version-OLD.txt") End Sub Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick Dim size As Int64 = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt") tEcoule += 1 FlatLabel1.Text = "Time Passed : " & tEcoule & " sec" If seconde = True Then Dim FichierInfo As System.IO.FileInfo = New System.IO.FileInfo(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar") TailleFichier = FichierInfo.Length FlatLabel3.Text = "Download Speed :" & (TailleFichier - TailleFichier2) / 1000 & " (MB/s)" tRestant = (size - TailleFichier) / (TailleFichier - TailleFichier2) seconde = False ElseIf seconde = False Then Dim FichierInfo As System.IO.FileInfo = New System.IO.FileInfo((My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar")) TailleFichier2 = FichierInfo.Length FlatLabel3.Text = "Download Speed : " & (TailleFichier2 - TailleFichier) / 1000 & " (MB/s)" seconde = True tRestant = (size - TailleFichier) / (TailleFichier2 - TailleFichier) End If FlatLabel2.Text = "Time Remaining : " & tRestant & " sec" End Sub Private Sub FlatButton3_Click(sender As Object, e As EventArgs) MsgBox("Credits :" & vbNewLine & vbNewLine & "Project:Life Arma 3 Launcher" & vbNewLine & vbNewLine & "" & vbNewLine & vbNewLine & "--", MsgBoxStyle.Information, "Crédits") End Sub Private Sub FlatButton6_Click(sender As object, e As EventArgs) Handles FlatButton6.Click If My.Computer.FileSystem.DirectoryExists(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\LauncherArma") Then My.Computer.FileSystem.DeleteDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\LauncherArma", FileIO.DeleteDirectoryOption.DeleteAllContents) End If If My.Computer.FileSystem.FileExists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\modsname.txt") Then ' My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\modsname.txt") End If My.Computer.FileSystem.CreateDirectory(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\LauncherArma") UnRar(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar", Environment.GetFolderPath(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\LauncherArma")) Dim ligne As String My.Computer.Network.DownloadFile("ftp://altis:life@5.231.193.132:22/modsname.txt", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\modsname.txt") Dim sr As New StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\modsname.txt") While sr.Peek <> -1 ligne = sr.ReadLine() ' My.Computer.FileSystem.CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) & "\LauncherArma\" & ligne, directory & "\" & ligne, True) End While PictureBox1.Visible = True FlatButton6.Visible = False FlatProgressBar1.Visible = False FlatLabel1.Visible = False FlatLabel2.Visible = False FlatLabel3.Visible = False End Sub Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click End Sub Private Sub FlatLabel2_Click(sender As Object, e As EventArgs) Handles FlatLabel2.Click End Sub Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click Process.Start("http://altis.paradox-network.de") End Sub Private Sub FlatLabel1_Click(sender As Object, e As EventArgs) Handles FlatLabel1.Click End Sub Private Sub FlatLabel3_Click(sender As Object, e As EventArgs) Handles FlatLabel3.Click End Sub Private Sub FlatProgressBar1_Click(sender As Object, e As EventArgs) Handles FlatProgressBar1.Click End Sub Private Sub FormSkin1_Click(sender As Object, e As EventArgs) Handles FormSkin1.Click FlatButton6.Visible = True End Sub Private Sub FlatButton3_Click_1(sender As Object, e As EventArgs) Handles FlatButton3.Click My.Computer.FileSystem.DeleteFile(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt", Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing) My.Computer.FileSystem.DeleteFile(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar", Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.DeletePermanently, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing) End Sub End Class
Antworten
-
Hallo,
Dein Kern-Problem ist Deine Copy'n Paste Programmierung, die Dich den Überblick gekostet haben dürfte.
Die Methode ReadAllText (ohne My.BlaBla) liest eine Textdatei ein und hat hier (und anderen Stellen) nichts zu suchen. Im Falle einer binären RAR Datei führt sie zu unerwünschten Verhalten, sobald ein ungültiges Zeichen vorkommt.
Richtig wäre Path.Combine, um einen Pfad aus mehreren Bestandteilen zusammenzusetzen.
Zudem würde ich Dir vorschlagen, einmal einige Eigenschaften einzufügen, um den Überblick wieder zu gewinnen, z. B.:
Public ReadOnly Property A3Directory As String Get Return Path.Combine(ApplicationPath, "directory.a3") End Get End Property Public ReadOnly Property ApplicationPath As String Get Return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "LauncherArma") End Get End Property Public ReadOnly Property DocumentPath As String Get Return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "LauncherArma") End Get End Property
(Wobei es nur eine Auswahl der auf den ersten Blick häufiger vorkommenden Varianten ist.)
Damit könnte das UnRar(....) Monster verkürzt werden zu:
UnRar(Path.Combine(A3Directory, "Addon.rar", Path.Combine(A3Directory , "LauncherArma"))
was die Zeile nicht nur richtiger, sondern deutlich freundlicher lesen lässt.
Das Gleiche wirst Du bei weiteren Stellen machen müssen, mindestens bei AddOn.Rar, denn dort kann es ebenso "scheppern" - die mit DownloadFile, Delete...
Aber wenn Du etwas Suchen und Ersetzen spielst, so kannst Du mit den drei Eigenschaften (und vielleicht noch einigen weiteren) den Code auf einen Bruchteil des jetzigen kürzen.
Womit sich andere Fehler in Zukunft leichter finden oder gar vermeiden lassen sollten.
Wenn Du das Ganze fortführst lassen sich weitere Stellen finden, wo die eine oder andere Hilfsmethode bzw. Eigenschaft den Code verkürzen und einfacher beherrschbar machen kann - wie die Dateivergleiche, Löschen, wenn... usw.
Gruß Elmar
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 16. März 2015 13:49
- Als Antwort markiert Aleksander Chalabashiev Montag, 23. März 2015 10:41
Alle Antworten
-
Hi,
setze zuerstOption Strict On
und korrigiere alle impliziten Typkonvertierungen und die Zeile in Deinem Code
Dim size As Int64 = My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\size.txt")
Einer Ganzzahlvariablen kann man keine Zeichenkette zuweisen. Vermutlich willst Du die Länge der Zeichenkette ermitteln. Dazu gibt es die Len-Funktion für kleinere Dateien (int32) oder Du nutzt FileInfo.Length (int64).
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks -
Erstmal danke für die Information.
Das oben genante funktioniert bereits, mein Problem ist das die "UnRar" Funktion die
My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3")
nicht erkennt und den Fehler der oben bereits beschrieben ist ausspuckt. (in der
directory.a3
wird der vom User angegebene Pfad festgelegt.- Bearbeitet xKazuto Montag, 9. März 2015 11:15
-
Hallo,
ich verstehe nicht so wirklich, wo das Problem liegt. Wenn der von dir oben genannte Fehler auftritt, markiert die Visual Studio die Zeile und du weißt das du dort versuchst hast die Pfadangabe in eine Zahl zu konvertieren. Behebe den Fehler entsprechend.Und auch wenn dein Code funktioniert solltest du Option Strict On machen - so lassen sich nämlich solche Fehler sehr viel besser vermeiden.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Und genau das zeigt dir Visual Studio (mit den Standardeinstellung) an, wenn du die Anwendung debuggst.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Additional information: Ungültige Konvertierung von der Zeichenfolge D:\Program Files (x86)\Steam\Ste in Typ Integer.
Das sollte heißen ich habe die Zeile hier:
UnRar(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar", Environment.GetFolderPath(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\LauncherArma"))
als Zahl definiert? nur wo...?
-
Du hast nicht die Zeile als Zahl definiert, sondern konvertierst ausersehen etwas in eine Zahl, was aber keine Zahl ist.
Environment.GetFolderPath macht nämlich etwas anderes, als du wahrscheinlich erwartest. Du suchst wahrscheinlich die Path.GetDirectoryName-Methode.Und der Fehler wäre mit dem Option Strict On mit einer ganz detaillierten Compiler-Fehlermeldung und einem kurzen Blick in die MSDN erledigt gewesen...
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
Wenn ich dich jetzt richtig verstehe, dann steht in dieser directory.a3-Datei ein Pfad. Diesen willst du an die UnRar-Methode übergeben, dann mach das doch? Ich verstehe einfach nicht wo das Problem liegt, wenn man sich mal die Dokumentation der Methoden durchgelesen hat.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets -
"Diesen willst du an die UnRar-Methode übergeben, dann mach das doch"
Genau das versuche ich jetzt seit ca. 48 stunden raus zu finden wie ich dies mache.
Habe mir bereits zich Videos, Dokumentation und Tutorials angeschaut, jedoch will keiner dieser mir irgendwie weiterhelfen egal wie oft ich diese frage...
- Bearbeitet xKazuto Montag, 9. März 2015 16:53
-
Zeile 177
UnRar(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\Addon.rar", Environment.GetFolderPath(My.Computer.FileSystem.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\LauncherArma\directory.a3") & "\LauncherArma"))
Eigendlich soll er das so machen:
UnRar ist oben definiert als Funktion, er soll die Funktion benutzen und den Pfad aus datei "directory.a3" (die sich im ordner "/launcherarma/directory.a3" befindet) und dort die addon.rar entpacken in den gleichen ordner wo auch die .rar bereits IST.
- Bearbeitet xKazuto Montag, 9. März 2015 18:58 mehr Information hinzugefügt
-
Hallo,
Dein Kern-Problem ist Deine Copy'n Paste Programmierung, die Dich den Überblick gekostet haben dürfte.
Die Methode ReadAllText (ohne My.BlaBla) liest eine Textdatei ein und hat hier (und anderen Stellen) nichts zu suchen. Im Falle einer binären RAR Datei führt sie zu unerwünschten Verhalten, sobald ein ungültiges Zeichen vorkommt.
Richtig wäre Path.Combine, um einen Pfad aus mehreren Bestandteilen zusammenzusetzen.
Zudem würde ich Dir vorschlagen, einmal einige Eigenschaften einzufügen, um den Überblick wieder zu gewinnen, z. B.:
Public ReadOnly Property A3Directory As String Get Return Path.Combine(ApplicationPath, "directory.a3") End Get End Property Public ReadOnly Property ApplicationPath As String Get Return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "LauncherArma") End Get End Property Public ReadOnly Property DocumentPath As String Get Return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "LauncherArma") End Get End Property
(Wobei es nur eine Auswahl der auf den ersten Blick häufiger vorkommenden Varianten ist.)
Damit könnte das UnRar(....) Monster verkürzt werden zu:
UnRar(Path.Combine(A3Directory, "Addon.rar", Path.Combine(A3Directory , "LauncherArma"))
was die Zeile nicht nur richtiger, sondern deutlich freundlicher lesen lässt.
Das Gleiche wirst Du bei weiteren Stellen machen müssen, mindestens bei AddOn.Rar, denn dort kann es ebenso "scheppern" - die mit DownloadFile, Delete...
Aber wenn Du etwas Suchen und Ersetzen spielst, so kannst Du mit den drei Eigenschaften (und vielleicht noch einigen weiteren) den Code auf einen Bruchteil des jetzigen kürzen.
Womit sich andere Fehler in Zukunft leichter finden oder gar vermeiden lassen sollten.
Wenn Du das Ganze fortführst lassen sich weitere Stellen finden, wo die eine oder andere Hilfsmethode bzw. Eigenschaft den Code verkürzen und einfacher beherrschbar machen kann - wie die Dateivergleiche, Löschen, wenn... usw.
Gruß Elmar
- Als Antwort vorgeschlagen Aleksander Chalabashiev Montag, 16. März 2015 13:49
- Als Antwort markiert Aleksander Chalabashiev Montag, 23. März 2015 10:41