2017-12-29 23 views
0

Ich habe ein Programm, das Daten in eine Textdatei schreibt. Ich habe gefunden, dass, wenn die Daten in die Textdatei geschrieben werden, alle numerischen Daten ein Leerzeichen davor haben, während die Daten vom Typ String vorher keinen Platz haben. Ich würde gerne wissen, wie Sie diesen unerwünschten Speicherplatz entfernen können, wenn möglich. Der vollständige Code und Beispiel eines Ausgangs unten:Entfernen von unerwünschten Leerzeichen, die automatisch eingegeben werden, bevor numerische Daten in eine Textdatei geschrieben werden

Code:

Sub Main() 
    Dim file As String = "c:\users\finne\desktop\datafile.txt" 
    Dim inputCode As Integer 
    Dim inputDescription As String 
    Dim inputPrice As Single 

    FileOpen(1, file, OpenMode.Output) 

    Console.Write("Enter the product code: ") 
    inputCode = Console.ReadLine() 

    Console.Write("Enter the product description: ") 
    inputDescription = Console.ReadLine() 

    Console.Write("Enter the product price: £") 
    inputPrice = Console.ReadLine() 

    PrintLine(1, inputCode) 
    PrintLine(1, inputDescription) 
    PrintLine(1, inputPrice) 
    PrintLine(1, " ") 

    FileClose(1) 
    Console.WriteLine("The data has been entered successfully.") 
    Console.ReadLine() 

End Sub 

Ausgang:

243434 
Toy Car 
10.5 
+1

Versuchen einen negativen Wert für alle Ihre „Zahlen“ – Steve

+2

Put 'Option Strict On' an die eintippen oben in der Codedatei. 'Console.ReadLine()' gibt niemals eine ganze Zahl zurück. Außerdem sollte die IDE (still) Sie warnen, dass diese Legacy-Methoden 'FileOpen' und' PrintLine() 'veraltet sind und viel bessere VB-Ersetzungen haben (mit noch besseren in .NET) – Plutonix

+0

Machen Sie wie @Plutonix schrieb oder trim (inputCode) und trim (inputPrice) vor der Schreibzeile. – statosdotcom

Antwort

3

Die alte Printline-Funktion (noch für VB6-Kompatibilität verfügbar) schreibt alle Zahlen, die einen vorderen Platz für das Zeichen halten. Bei positivem Wert wird der Speicherplatz wie angegeben verlassen, bei negativen Zahlen sehen Sie den - vor Ihrer Nummer. Wenn Sie stattdessen die aktuelle StreamWriter-Klasse verwenden, haben Sie die erwartete Ausgabe. Verwenden Sie die aktuellen Rahmen Methoden und entsorgen Sie die alten VB6 diejenigen

Using sw = System.IO.File.AppendText(file) 
    sw.WriteLine(inputCode) 
    sw.WriteLine(inputDescription) 
    sw.WriteLine(inputPrice) 
End Using 

auch, wie jeder sagt Ihnen, gehen Sie zu Ihrem Projekteigenschaften und schalten Sie die Option Strict auf ON-Einstellung. Dadurch wird Ihr Code zwingen, richtig die Saiten an den entsprechenden Datentyp für Zahlen

Zum Beispiel zu konvertieren

Console.Write("Enter the product code: ") 
Dim userInput as String = Console.ReadLine() 
If Not Int32.TryParse(userInput, inputCode) Then 
    Console.WriteLine("Please type an integer number") 
    Application.Exit() 
End If 
Verwandte Themen