Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Eine funktionierende Private Sub Formel als Public Function

Frage Entwicklung VB for Applications

Mitglied: iVirusYx

iVirusYx (Level 2) - Jetzt verbinden

25.05.2011 um 12:32 Uhr, 3604 Aufrufe, 6 Kommentare

Ich habe eine funktionierende Formel auf mehrere Elemente verteilt und möchte diese nun als Public Function definieren,
jedoch kriege ich es einfach nicht gebacken diesesmal..

Hallo an alle
Ich bin relativ neu in der Programmation und bastele seit 3 Tagen an einem Password Generator.
Der funktioniert relativ gut und nun moechte ich noch einiges aufraeumen und all die Formeln die des oefteren benutzt werden als Function zusammenfassen

Ich habe zBsp hier eine TextBox in der ich mit der Formel unten nur die Eingabe von "0123456789" erlaube.
So als Private Sub funktioniert das auch relativ gut aber ich kriege die Formel unten einfach nicht in eine Public Function

Private Sub TxBxRndNum_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxBxRndNum.TextChanged
Dim charactersAllowedNUM As String = "0123456789"
Dim theText As String = TxBxRndNum.Text
Dim Letter As String
Dim SelectionIndex As Integer = TxBxRndNum.SelectionStart
Dim Change As Integer

For x As Integer = 0 To TxBxRndNum.Text.Length - 1
Letter = TxBxRndNum.Text.Substring(x, 1)
If charactersAllowedNUM.Contains(Letter) = False Then
theText = theText.Replace(Letter, String.Empty)
Change = 1
End If
Next

TxBxRndNum.Text = theText
TxBxRndNum.Select(SelectionIndex - Change, 0)
End Sub

Die Public Funtion würde dann so aussehen mit der Ausfuehrung (nun werded ihr aber etwas feststellen... dazu untendrunter):

Public Function blockCharNotNum(Input)

Dim charactersAllowedNUM As String = "0123456789"
Dim theText As String = Input
Dim Letter As String
Dim SelectionIndex As Integer = Input.SelectionStart
Dim Change As Integer

For x As Integer = 0 To Input.Length - 1
Letter = Input.Substring(x, 1)
If charactersAllowedNUM.Contains(Letter) = False Then
theText = theText.Replace(Letter, String.Empty)
Change = 1
End If
Next

Input = theText
Input.Select(SelectionIndex - Change, 0)

End Function

Private Sub TxBxPswdLgth1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxBxPswdLgth1.TextChanged

TxBxPswdLgth1.Text = blockCharNotNumerical(TxBxPswdLgth1.Text)

End Sub


Ja... zuerst weiß ich nicht richtig wie ich den Output definiere, ich habe es schon mit "Return Input = theText" probiert aber was ist dann mit " Input.Select(SelectionIndex - Change, 0)"?

Ich hoffe ihr koennt mir helfen!
MFG Michel

P.S.: Bitte überseht die vielen Programmierfehler fürs erste, ich bin Anfänger
Mitglied: SlainteMhath
25.05.2011 um 12:56 Uhr
Moin,

Vorab: Benutze doch bitte code-tags, wenn Du code postest, das macht das lesen leicher

Bitte überseht die vielen Programmierfehler fürs erste, ich bin Anfänger
Ok

Public Function blockCharNotNum(Input)
Gewöhn dir am besten gleich an, immer den Variablen Typ mit anzugeben

Etwas so:
01.
Public Function blockCharNotNum(theText as string) as string 
02.
 
03.
Dim Letter As String 
04.
Dim SelectionIndex As Integer = Input.SelectionStart 
05.
Dim Change As Integer 
06.
 
07.
For x As Integer = 0 To theText .Length - 1 
08.
  Letter = theText .Substring(x, 1) 
09.
  If charactersAllowedNUM.Contains(Letter) = False Then 
10.
    theText = theText.Replace(Letter, String.Empty) 
11.
    Change = 1 
12.
  End If 
13.
Next 
14.
 
15.
return theText  
16.
end function
Bitte warten ..
Mitglied: iVirusYx
25.05.2011 um 13:50 Uhr
Danke vielmals
Aber ich kriege noch immer den gleichen Fehler wie vorher:

"An error occurred creating the form. See Exception.InnerException for details. The error is: Public member 'SelectionStart' on type 'String' not found."

Und das nur bei dieser Formel wenn ich eine Public Function draus mache

EDIT:
Also hab ich jetzt einen Fehler bei dir raus gemacht und was versucht, jetzt weiß ich welcher SelectionStart geimeint ist:

01.
    Public Function blockCharNotNum(ByVal theText As String) 
02.
        Dim charactersAllowedNUM As String = AllNumChar 
03.
        Dim Letter As String 
04.
        ' Dim theText As String = Input 
05.
        Dim SelectionIndex As Integer = theText.SelectionStart 
06.
        Dim Change As Integer 
07.
        For x As Integer = 0 To theText.Length - 1 
08.
            Letter = theText.Substring(x, 1) 
09.
            If charactersAllowedNUM.Contains(Letter) = False Then 
10.
                theText = theText.Replace(Letter, String.Empty) 
11.
                Change = 1 
12.
            End If 
13.
        Next 
14.
        Return theText 
15.
    End Function
Dabei sagt er dass in Linie 05 der theText.SelectionStart : "SelectionStart ist kein Member von "String"

EDIT2:
Das liegt wahrscheinlich daran dass "theText = Textbox.Text" ist und "SelectionStart" müsste "Textbox.SelectionStart" sein, wie kann ich das jetzt machen?


MFG
Michel
Bitte warten ..
Mitglied: SlainteMhath
25.05.2011 um 14:02 Uhr
was genau ist denn "Input"? Textbox? String? Array? TreeView? erschliest sich aus deinem Codeschnipsel nicht ganz
Bitte warten ..
Mitglied: iVirusYx
25.05.2011 um 14:04 Uhr
Ich habe meine Antwort noch bearbeitet :

"theText = Textbox.Text" ist und "SelectionStart" müsste "Textbox.SelectionStart"
Also ja... der input "theText" ist ein String aus "Textbox.Text"

Und das ist auch der ganze Fehler Ich weiss jetzt nur nicht weiter...
Bitte warten ..
Mitglied: SlainteMhath
25.05.2011 um 14:14 Uhr
Is schon reichlich verworren dein Code

Versuchs doch mal so:

01.
public function blockCharNotNum(theText as string) as string 
02.
 
03.
Dim charactersAllowedNUM As String = "0123456789" 
04.
Dim Result as string="" 
05.
 
06.
for each c as char in theText.ToCharArray 
07.
  if charactersAllowedNUM.Contains(c) then 
08.
    Result += c 
09.
  end if 
10.
next 
11.
 
12.
return Result 
13.
end function 
14.
 
15.
Private Sub TxBxPswdLgth1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TxBxPswdLgth1.TextChanged 
16.
 
17.
  TxBxPswdLgth1.Text = blockCharNotNum(TxBxPswdLgth1.Text) 
18.
 
19.
End Sub
Bitte warten ..
Mitglied: iVirusYx
25.05.2011 um 14:26 Uhr
Ein ganz anderer Ansatz als der Meine, an dem ich mühselige 8 Stunden verbracht habe, aber es funktioniert einwandfrei und ist zudem auch noch viel leichter! :D
Ich danke dir... mein Ansatz war halt nur gut wenn man ihr direkt auf die Textbox anwendet

MFG
Michel

P.S.: Wenn der Generator fertig ist werde ich wahrscheinlich das ganze Projekt zur Benotung und Verbesserungsvorschlägen hier beitrage.
Man sei gewarnt dass es das reinste Anfängerchaos ist aber ich gebe mir Mühe (Mühe, Mühe wir spielen blinde Kühe ;)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

LAN, WAN, Wireless
Zwei private Netzwerke (LAN und WLAN) mit SXT Lite5 verbinden (9)

Frage von MWelslau zum Thema LAN, WAN, Wireless ...

Microsoft Office
Rechnungen in Word - zu lange Formel (2)

Frage von traller zum Thema Microsoft Office ...

Router & Routing
Zugriff auf Netzwerk ohne public-IP (14)

Frage von tr1plx zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...