vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Array auslesen 
Autor: Samuel
Datum: 08.11.12 14:03

Hallo zusammen,

ich lesen aus einer IniDatei Werte aus. Manchmal stehen aber hinter dem = Zeichen mehr als ich brauche
Also z.B. eine Längenangabe. In etwa so 884848 <M>

Auslesen usw funktioniert gut.
Nun versuche ich mich einer Splitfunktion diese 2 Einträge zu trennen und lege sie in ein Array. Jetzt will ich den ersten Eintrag im Array auslesen und es klappt nicht

Hier der Code:
 
        TextBox1.Text = INI_ReadValueFromFile("Start", "OFFSET", "", _
          "C:\Test.ini")
        Dim SplitArray() As String = Split(txtTextbox1.Text)
        Textbox2.Text = SplitArray(1)
Hier der Code für das Splitten
    Public Function Split(ByVal Expression As String,Optional ByVal Delimiter _
      As String = " ",Optional ByVal Limit As Integer = -1,Optional ByVal _
      Compare As CompareMethod = CompareMethod.Text) As String()
 
    End Function
Vielen Dank für euer Hilfe und ich hoffe ich habe es verständlich ausgeführt

Grüße
Samuel
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Manfred X
Datum: 08.11.12 14:46

Hallo!

Arrays sind in VB.Net gewöhnlich null-basiert.
Was bedeutet: Es klappt nicht? Schmiert der Rechner ab?

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Samuel
Datum: 08.11.12 14:52

Hallo,

er bricht das Programm quasi ab und meldet mir:
NullReferenceExpection wurde nicht behandelt
Der Objektverweis wurde nicht auf eine Objektinstanz gelegt


Er meldet mir auch, das in der Split-Funktion nicht allen Codepfaden ein Wert zurückgegeben wurde

Grüße
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Manfred X
Datum: 08.11.12 14:58

Hallo!


Wie sieht der Code Deiner Funktion aus?

Dort gibt es offenbar verschiedene Bedingungen und bei
mindestens einer Bedingung wird Nothing (also nichts) zurückgegeben.

Das erklärt auch die Ausnahme, die Du erhälst.

Es gibt übrigens in Net eingebaute Split-Funktionen z.B. als String-Methode.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Samuel
Datum: 08.11.12 15:04

Danke für deine Hilfe.
Hab mal die selbstgeschriebene Splitfunktion weggenommen und Tada, funktioniert super

Grüße
Samuel
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: ModeratorDaveS (Moderator)
Datum: 08.11.12 15:04

        Dim val1 As String = "1234 <XX>"
        Dim val2 As String = val1.Split(" ")(0)

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Samuel
Datum: 08.11.12 15:15

Dankeschön,

ich hab da eine eigen SplitFunktion darüber zusammengeschustert und das war nicht gut.
Diese einfach weggemacht und es läuft.
Sieht so aus wie bei dir jetzt. Also so ungefähr


Grüße und Danke
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Manfred X
Datum: 08.11.12 15:29

Aufpassen!
String-Variable = Referenztyp!
Steht die Variable auf Nothing, kommt es beim Splitversuch zur Ausnahme.

Übrigens Dave: Diese Überladung der Split-Methode gibt es wohl nicht.
Entweder als Parameter Char oder ein Stringarray mit Zusatzparameter nutzen.

Dim str As String = tbx.Text.Split(New String() {" "}, StringSplitOptions.RemoveEmptyEntries)(0)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: ModeratorDaveS (Moderator)
Datum: 08.11.12 16:27

Anhang:  AnhangstringSplit.png (91k)  

Naja, vielleicht auch ausprobieren...?

(Ich hätte natürlich val1.Split(" "c) schreiben können, aber für einen Anfänger wäre das eher verwirrend. Und wer benuzt schon Option Strict?)

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: Manfred X
Datum: 08.11.12 16:46

Ein schmaler Grat!
Gibt man eine Zeichenfolge, die aus mehr als einem Zeichen besteht,
auf diese unstrikte Weise als Parameter an, wird nur das erste
Zeichen verwendet.

Vielleicht doch besser so ...

Module modStringExtensions
 
    ''' <summary>Splitten des Inhalts einer Stringvariable</summary>
    ''' <param name="arg">zu splittende Variable</param>
    ''' <param name="separator">Splitt-Zeichenfolge</param>
    <System.Runtime.CompilerServices.Extension()> _
    Public Function Split(ByVal arg As String, ByVal separator As String, _
        Optional ByVal splitoptions As StringSplitOptions = _
        StringSplitOptions.None) As String()
 
        If arg Is Nothing Then Return Nothing
        If String.IsNullOrEmpty(separator) Then Return New String() {arg}
        Return arg.Split(New String() {separator}, splitoptions)
 
    End Function
End Module


Beitrag wurde zuletzt am 08.11.12 um 16:46:56 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array auslesen 
Autor: ModeratorDaveS (Moderator)
Datum: 08.11.12 18:03

Es gibt unterschiedliche Überladungen für unterschiedliche Fälle. In diesem Fall geht es wie ich geschrieben habe (anscheinend). Ich sehe keinen Grund eine lange komplizierte Version zu verwenden. Und lediglich kann man auch einfach Split(theString, "...") schreiben wenn man einen String als Trenner braucht.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel