Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Θέλω τη γνώμη σας για ένα κομμάτι κώδικα

Îåêßíçóå áðü ôï ìÝëïò AlKiS. Τελευταία δημοσίευση από το μέλος AlKiS στις 10-12-2011, 22:17. Υπάρχουν 0 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  10-12-2011, 22:17 68587

    Θέλω τη γνώμη σας για ένα κομμάτι κώδικα

    Καλησπέρα σε όλους.

    Επειδή τελευταία ασχολούμαι αρκετά με τον προγραμματισμό (όχι, δεν είμαι προγραμματιστής, ηλεκτρολόγος σπουδάζω), βρήκα ότι κάποια πράγματα μου χρειάζονται πάντα, ανεξαρτήτως προγράμματος.

    Οπότε λέω, αντί να τα γράφω όλη την ώρα.. δεν κάνω ένα module που να τα περιέχει, και να τα καλώ?? Κι αυτό έκανα.

    Θέλω έμπειρους όμως να μου πουν την γνώμη τους για το τι έχω κάνει.. σίγουρα θα μπορούν να γίνουν πολλές βελτιώσεις. Παραθέτω λοιπόν τον κώδικα και στο τέλος θα πω 2 λόγια για τη ήθελα να κάνει το καθένα.

    'Version 5.0.1 2011/12/25
    Option Strict On
     
    Imports System
    Imports System.IO
    Imports System.Net
    Imports System.Diagnostics
     
    Module modCommon
        Public WindowsVersion As Integer = 32
        Public CurrentLanguage As String = "English"
        Public strRoot As String = My.Application.Info.DirectoryPath & "\"
        Public strSettingsPath As String = strRoot & "Settings\"
        Public strExtras As String = strRoot & "Extras\"
        Public strLanguageFolders As String = strRoot & "Language\"
        Public strSkin As String = strRoot & "Skins\"
        Public strChangeLog As String = strRoot & "Changelog.txt"
        Public strEULA As String = strRoot & "Eula.rtf"
        Public strUniversal As String = strLanguageFolders & "UniversalStrings.txt"
        Public strSettingsIni As String = strSettingsPath & "Settings.ini"
        Public strSettingsOrig As String = strSettingsPath & "Settings.orig"
        Public strExplorerExe As String = "explorer.exe"
        Public strBrowser As String = Environment.GetEnvironmentVariable("programfiles") & "\Internet Explorer\iexplore.exe"
        Public strUnrar As String = strExtras & "Unrarx86.exe"
        Public strUnlocker As String = strExtras & "Unlockerx86.exe"
     
        Public TextWrite_Persistent As TextWriter
     
        Dim exeProcesses As New Process
        Dim numOfPercents As Integer = 0
     
        Public Sub ReadMainStrings()
            If Directory.Exists(Environment.GetEnvironmentVariable("windir") & "\SysWOW64"Then
                WindowsVersion = 64
                strExplorerExe = Environment.GetEnvironmentVariable("windir") & "\SysWOW64\explorer.exe"
                strUnlocker = strExtras & "Unlockerx64.exe"
     
     
            ElseIf Directory.Exists(Environment.GetEnvironmentVariable("windir") & "\system32"Then
                WindowsVersion = 32
                strExplorerExe = Environment.GetEnvironmentVariable("windir") & "\system32\explorer.exe"
                strUnlocker = strExtras & "Unlockerx86.exe"
            End If
        End Sub
     
        Public Function isInternetAvailable(ByVal TestUrl As StringAs Boolean
            If My.Computer.Network.IsAvailable Then
                ' Returns True if connection is available 
                ' is guaranteed to be online - perhaps your 
                ' corporate site, or microsoft.com
                Dim objUrl As New System.Uri(TestUrl)
                ' Setup WebRequest
                Dim objWebReq As System.Net.WebRequest
                objWebReq = System.Net.WebRequest.Create(objUrl)
                Dim objResp As System.Net.WebResponse
                Try
                    ' Attempt to get response and return True
                    objResp = objWebReq.GetResponse
                    objResp.Close()
                    objWebReq = Nothing
                    Return True
                Catch ex As Exception
                    ' Error, exit and return False
                    objResp = Nothing
                    'objResp.Close()
                    objWebReq = Nothing
                    Return False
                End Try
     
            Else
                Return False
            End If
        End Function
     
        Public Function doProperPathName(ByVal TextToAmend As StringAs String
     
            If TextToAmend.EndsWith("\\"Then
                TextToAmend = TextToAmend.Substring(0, TextToAmend.Length - 2)
            ElseIf Not TextToAmend.EndsWith("\"Then
                TextToAmend = TextToAmend & "\"
            End If
     
            Return TextToAmend
        End Function
     
        Public Function doResolveWildNames(ByVal TextToAmend As StringAs String
     
            If TextToAmend.Contains("%"Then
     
                Dim chrNewPathName() As Char = TextToAmend.ToCharArray
                Dim intStart As Integer = 0
                Dim intEnd As Integer = 0
     
                For i = 0 To chrNewPathName.Length - 1
                    If chrNewPathName(i) = "%" Then
                        numOfPercents += 1
                    End If
                Next
     
                If numOfPercents > 0 Then
                    If (numOfPercents Mod 2) = 0 Then
                        For i = 1 To (numOfPercents / 2)
                            Dim WildWord As String = ""
     
                            If chrNewPathName(intStart) <> "%" Then
                                Do While chrNewPathName(intStart) <> "%" 'Finding the first index of "%"
                                    intStart += 1
                                Loop
                            End If
                            intStart += 2
     
                            intEnd = intStart - 1
                            If chrNewPathName(intEnd) <> "%" Then
                                Do While chrNewPathName(intEnd) <> "%"
                                    intEnd += 1
                                Loop
                            End If
                            intEnd -= 1
     
                            WildWord = Mid(TextToAmend, intStart, intEnd)
     
                            If WildWord.ToUpper = "ROOT" Then
                                TextToAmend = TextToAmend.Replace("%" & WildWord & "%", strRoot)
                            Else
                                TextToAmend = TextToAmend.Replace("%" & WildWord & "%"Environment.GetEnvironmentVariable(WildWord))
                            End If
     
                        Next i
     
                    End If
                End If
     
            End If
            numOfPercents = 0
     
            Return TextToAmend
        End Function
     
        Public Sub RunOpenDir(ByRef PathName As StringOptional ByVal Arguments As String = ""Optional ByVal WaitForExit As Boolean = FalseOptional ByVal ErrorMessage As String = ""Optional ByVal CannotFindFile As String = "Cannot find the specified file: "Optional ByVal WithArguments As String = " with arguments: "Optional ByVal WriteCrushFileAnyway As Boolean = False)
            Dim TextWrite As TextWriter
            PathName = doResolveWildNames(PathName)
            Arguments = doResolveWildNames(Arguments)
     
            If PathName.ToLower = "explorer" Or PathName.ToLower = "explorer.exe" Then
                PathName = strExplorerExe
            End If
     
            If File.Exists(PathName) Then
                exeProcesses.StartInfo.FileName = PathName
                exeProcesses.StartInfo.Arguments = Arguments
                exeProcesses.Start()
     
                If WaitForExit = True Then
                    exeProcesses.WaitForExit()
                End If
     
            Else
                If ErrorMessage <> "" Or WriteCrushFileAnyway = True Then
                    If ErrorMessage <> "" Then
                        MsgBox(ErrorMessage)
                    End If
                    TextWrite = File.CreateText(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Crush " & Today.Day & "-" & Today.Month & "-" & Today.Year & " " & My.Computer.Clock.LocalTime.Minute & " " & My.Computer.Clock.LocalTime.Second & ".txt")
                    TextWrite.WriteLine(My.Application.Info.AssemblyName)
                    TextWrite.WriteLine(CannotFindFile & """" & PathName & """" & WithArguments & """" & Arguments & """")
                    TextWrite.Flush()
                    TextWrite.Close()
                End If
            End If
        End Sub
     
        Public Sub CloseForm(ByVal frm As FormOptional ByVal ClosingPromptText As String = "")
            If ClosingPromptText = "" Then
                frm.Close()
            Else
                Dim UserResponse = MsgBox(ClosingPromptText, MsgBoxStyle.YesNo)
                If UserResponse = vbYes Then
                    frm.Close()
                End If
            End If
        End Sub
     
        Public Function RemBtnHotLetter(ByVal btn As ButtonAs String
            Dim ResultString As String
     
            ResultString = "<" & btn.Text.Replace("&""") & ">"
     
            Return ResultString
        End Function
     
        Public Function RemMniHotLetter(ByVal mni As ToolStripMenuItemAs String
            Dim ResultString As String
     
            ResultString = "<" & mni.Text.Replace("&""") & ">"
     
            Return ResultString
        End Function
     
        Public Sub ReadToString(ByVal FileName As StringByRef StringToFill As StringOptional ByVal ReadMethod As String = "ReadToEnd"Optional isCyphered As Boolean = False)
            Dim TextRead As TextReader
            TextRead = File.OpenText(FileName)
            If ReadMethod.ToLower = "readline" Then
                StringToFill = TextRead.ReadLine
            Else
                StringToFill = TextRead.ReadToEnd
            End If
            TextRead.Close()
     
            If isCyphered Then
                Dim StringArrayToFill(0) As String
                StringArrayToFill(0) = StringToFill
                StringToFill = Decypher(StringArrayToFill, 1)
            End If
        End Sub
     
        Public Sub ReadToTextbox(ByVal FileName As StringByVal TextboxToFill As TextBoxOptional ByVal ReadMethod As String = "ReadToEnd"Optional isCyphered As Boolean = False)
            Dim TextRead As TextReader
            TextRead = File.OpenText(FileName)
            If ReadMethod.ToLower = "readline" Then
                TextboxToFill.Text = TextRead.ReadLine
            Else
                TextboxToFill.Text = TextRead.ReadToEnd
            End If
            TextRead.Close()
     
            If isCyphered Then
                TextboxToFill.Text = Decypher(TextboxToFill.Lines, 1)
            End If
        End Sub
     
        Public Sub WriteText(ByVal FileName As StringByVal TextToWrite As StringOptional ByVal WriteMethod As String = "Write")
            'Methods: Write / WriteLine / Continue / ContEnd / End
            'TODO On WriteLine TextWrite should also be closed on the calling-sub's Catch Exception by WriteText(FileName,"","End")
     
            If WriteMethod.ToLower = "write" Then
                Dim TextWrite As TextWriter
                TextWrite = File.CreateText(FileName)
                TextWrite.Write(TextToWrite)
                TextWrite.Flush()
                TextWrite.Close()
     
            ElseIf WriteMethod.ToLower = "writeline" Then
                TextWrite_Persistent = File.CreateText(FileName)
                TextWrite_Persistent.WriteLine(TextToWrite)
     
            ElseIf WriteMethod.ToLower = "continue" Or WriteMethod.ToLower = "cont" Then
                TextWrite_Persistent.WriteLine(TextToWrite)
     
            ElseIf WriteMethod.ToLower = "contend" Then
                TextWrite_Persistent.WriteLine(TextToWrite)
                TextWrite_Persistent.Flush()
                TextWrite_Persistent.Close()
     
            ElseIf WriteMethod.ToLower = "end" Then
                TextWrite_Persistent.Flush()
                TextWrite_Persistent.Close()
     
            End If
        End Sub
     
        Public Sub CreateCrushFile(ByVal CrushStr As String)
            WriteText(strExtras & "Crush ex " & My.Computer.Clock.GmtTime.Year & My.Computer.Clock.GmtTime.Month & My.Computer.Clock.GmtTime.Day & My.Computer.Clock.GmtTime.Hour & My.Computer.Clock.GmtTime.Minute & ".txt", CrushStr)
        End Sub
     
    End Module
    
    Το ReadMainStrings() το έβαλα για να βλέπω αν ο υπολογιστής που τρέχει το πρόγραμμα είναι 32 ή 64 bit, και να φορτώνει τα paths αναλόγως.
    Το InternetAvailability μιλάει απο μόνο του..
    Το doProperPathName Κοιτάει ένα path και το κάνει να τελειώνει πάντα σε "\". πχ να είναι C:\ όχι "C:" ή "C:\\"
    Το doResolveWildNaes Βρήσκει τα %Something% και τα κάνει resolve
    Το RunOpenDir τρέχει ένα πρόγραμμα ή ανοίγει ένα παράθυρο
    To CloseForm κλείνει μια φόρμα, ή ρωτάει τον χρήστη αν είναι σίγουρος ότι θέλει να κλείσει.
    Το RemBtnHotLetter γυρνάει ένα String με το όνομα ενός κουμπιού χωρίς το hotkey του όμως, επειδή πολλές φορές γράφω μηνύματα του τύπου "πατήστε το τάδε κουμπί"
    Το ReadToString διαβάζει ένα txt αρχείο και ότι περιέχεται σε αυτό, το γυρνάει σε ένα string.
    ------------
    Έκανα ξεχωριστό για textbox γιατί όταν έδινα στο παραπάνω το textbox.text δεν λειτουργούσε - δεν έχω ιδέα γιατί.
    -----------
    To WriteText δημιουργεί ένα αρχείο και γράφει μέσα σε αυτό.


Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems