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
Option Strict 
Autor: Andy_279
Datum: 25.08.17 16:03

Tag Leute,

ich habe ein kleines Problem!

Die Option Strict On markiert die folgende Zeile als falsch(das unterstrichene)!

Es geht um das Speichern einer ListBox als Text Datei.

oStream.Write([u].Item(i) & IIf(i < .Count - 1, vbCr, ""))

Ich könnte zwar Option Strict auf Off stellen, aber irgendwie will ich das nicht.

Weis jemand rat!


Gruß Andy

Gruß Andy

--------------------------------------
Betriebssystem: Windows 10
Entwicklungsumgebung: VB 2017 Com.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Manfred X
Datum: 25.08.17 21:37

Hallo!

Eigentlich sollte angegeben werden, wie Variablen im Code deklariert worden sind !!

Entferne einen Buchstaben und ersetze IIF(... durch If(...

Eventuell noch .Count in CInt(.Count) umwandeln.

Beitrag wurde zuletzt am 25.08.17 um 21:42:45 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Andy_279
Datum: 26.08.17 07:40

Hallo,

Jetzt wird zwar kein Fehler mehr angezeigt aber das vbcrlf wird ignoriert!
Das heißt der Text wird in einer Zeile ausgegeben ohne Zeile Umbrüche.

Ich glaube ich muss mir da was anderes einfallen lassen...

Gruß Andy

Gruß Andy

--------------------------------------
Betriebssystem: Windows 10
Entwicklungsumgebung: VB 2017 Com.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Manfred X
Datum: 26.08.17 08:30

Nutze die Konstante vbcrlf (Carriage Return Line Feed) oder vbNewLine.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Andy_279
Datum: 26.08.17 09:45

Das Problem ist wenn ich das IIF(...) durch IF(...) geht es nicht mehr.

Gruß Andy

Gruß Andy

--------------------------------------
Betriebssystem: Windows 10
Entwicklungsumgebung: VB 2017 Com.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Manfred X
Datum: 26.08.17 13:24

Ich weiß natürlich nicht, mit welchen Klassen Du arbeitest oder
was nicht funktioniert bzw. was Du mit diesem Code zu erreichen hoffst.
Dim xxx As New List(Of String)
 
With xxx
    .Add("a") : .Add("b") : .Add("c")
 
    Using ostream As New IO.StreamWriter("C:\Daten\xyzabc.txt", False)       
       For i As Integer = 0 To .Count - 1
           ostream.Write(.Item(i) & If(i < CInt(.Count) - 1, vbCrLf, ""))
       Next i
    End Using
End With
Es gibt bei der StreamWriter-Klasse auch die WriteLine-Methode.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: effeff
Datum: 27.08.17 11:09

Nun, auf jeden Fall muss es heißen:

oStream.Write(.Items(i) & IIf(i < .Items.Count - 1, vbCr, ""))


Und wenn Du keine Datei für einen Unix-/Linux-Rechner schreibst, dann ersetze, wie von ManfredX schon erwähnt, das VbCr durch ein VbCrLF...

Dieser Test funktioniert bei mir problemlos:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        Dim ausgabe As String = ""
        Dim i As Integer = 0
 
        With ListBox1
            For i = 0 To .Items.Count - 1
                ausgabe = ausgabe & .Items(i) & IIf(i < .Items.Count - 1, _
                  vbCrLf, "")
            Next
        End With
 
        MessageBox.Show(ausgabe)
 
    End Sub
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        With ListBox1
            .Items.Add("a")
            .Items.Add("b")
            .Items.Add("c")
            .Items.Add("d")
            .Items.Add("e")
            .Items.Add("f")
            .Items.Add("g")
            .Items.Add("h")
            .Items.Add("i")
            .Items.Add("j")
        End With
    End Sub
End Class

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Andy_279
Datum: 27.08.17 11:17

Das ist die Funktion um die es geht!

    Public Function ListBoxSave(ByVal ListBox As ListBox, ByVal Filename As _
      String) As Boolean
 
        Dim oStream As IO.StreamWriter = Nothing
        Dim bResult As Boolean = False
        Dim i As Integer
 
        Try
            ' Stream-Objekt zum Speichern erstellen
            oStream = New IO.StreamWriter(Filename, False, _
              System.Text.Encoding.Default)
 
            With ListBox.Items
                ' Liste durchlaufen und zeilenweise speichern
                For i = 0 To .Count - 1
                    oStream.Write(.Item(i) & If(i < .Count - 1, vbCr, "")) ' 
                    ' Fehlerhafte Zeile!
                Next i
            End With
            bResult = True
 
        Catch ex As Exception
 
        Finally
            ' Stream-Objekt schließen
            If Not IsNothing(oStream) Then oStream.Close()
        End Try
        Return (bResult)
 
    End Function
Dieser Code geht wenn Option Strict auf Off steht.
Wenn man Option Stict auf On setzt wird der Code .Item(i) als Fehler markiert. Im der Fehler
Beschreibung steht das Option Strict den & Operator nicht zulässt.
Dieser Code ist von dieser Seite bei Tipps und Tricks Bereich ListBox...

Gruß Andy

--------------------------------------
Betriebssystem: Windows 10
Entwicklungsumgebung: VB 2017 Com.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Andy_279
Datum: 27.08.17 11:35

Hmm,
mit dem vbcr geht es aber, wenn ich vbcrlf nehme, wird immer eine Leer Zeile zwichen dem Text eingefügt!

Gruß Andy

--------------------------------------
Betriebssystem: Windows 10
Entwicklungsumgebung: VB 2017 Com.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict Lösung 
Autor: Andy_279
Datum: 27.08.17 11:44

Habe die Lösung gefunden!

           With ListBox.Items
                ' Liste durchlaufen und zeilenweise speichern
                For i = 0 To .Count - 1
                    oStream.Write(.Item(i).ToString & If(i < CInt(.Count - 1), _
                      vbCr, ""))
                Next i
            End With
So geht es auch wenn Option Strict auf On steht!

Gruß Andy

--------------------------------------
Betriebssystem: Windows 10
Entwicklungsumgebung: VB 2017 Com.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict 
Autor: Manfred X
Datum: 27.08.17 16:54

Sehr geehrter Herr effeff

Nach Prüfung Ihres obigen Forenbeitrags komme ich zu folgendem Ergebnis:
- Die Items-Auflistung der Windows.Forms.Listbox gibt den Typ Object zurück
und die Nutzung des Iteminhalts erfordert deshalb ein Cast, um bei
"Option Strict On" von der IDE akzeptiert zu werden.
- Die Interaction.IIf-Methode gibt eines von zwei Objekten zurück.
Unter "Option Strict On" ist ein Cast erforderlich. Alternativ kann die
If-Methode verwendet werden, die typkonform arbeitet.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Option Strict Lösung 
Autor: Manfred X
Datum: 27.08.17 16:58

Hallo!

Deine Items werden offensichtlich bereits einem vbcrlf abgeschlossen.
Das ganze IF-Konstrukt kannst Du Dir deshalb sparen.
Falls erforderlich, entferne einfach das letzte vbcrlf.
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