Leere Arrayfelder löschen

VB?

Grünschnabel
Hallihallo,

ich habe vor die Datenfelder eines Arrays in eine Datei zuschreiben. Das klappt so weit auch, aber mich stören die leeren Datenfelder... (sind dann bei mir leere Zeilen in der txt-datei)
Diese leeren Datenfelder würde ich gerne erst gar nicht mit in die Datei übertragen!
Ich denke, dass es dafür eigentlich einen recht einfachen Befehl geben müsste, oder ich es mit einer If-Funktion ausschließen könnte, aber ich finde nichts.

Über ein bisschen Hilfe würde ich mich sehr freuen...
 
Hi,

wenn dein Array vom Datentyp String ist, kannst du es so machen:
Code:
For x = 1 To UBound(array)
	If array(x) <> "" Then
		Write dateinummer, array(x)
	End If
Next

wenn der Datentyp eine Zahl ist, mußt du die Null abfragen, da das Array automatisch mit Nullen gefüllt wird:
Code:
For x = 1 To UBound(array)
	If array(x) <> 0 Then
		Write dateinummer, array(x)
	End If
Next
 
Danke für diese (verdammt) schnelle Antwort...

Aber es leider noch nicht, werde mal ein wenig ausprobieren!
Hoffe, dass ich es irgendwie hingebogen krieg!

Er setzt mir jetzt fast alle Werte in Anführungszeichen :confused:
Was macht den UBound genau

gruß VB?

PS: Datentyp ist string!
 
Cool, cool

Jetzt sind schon mal fast alle leer-zeilen weg! Aber die Werte stehen wie gesagt jetzt in anführungszeichen. Kriege ich die auch irgendwie weg
Sonst kann ich die Daten nicht mehr richtig verarbeiten (!)
 
Hi,

ganz einfach. Nimm anstatt der Write-Methode die Print-Methode, dann sind die Anführungszeichen weg.

Über UBound erhältst du im Grund genommen die Arraylänge. Ist sinnvoll, wenn du das Array mal neu dimensionierst.
 
Schade, es funktioniert leider nicht so wie ich es mir gedacht habe. Die leeren Array-Felder werden trotzdem noch in die Text-Datei geschrieben...

Kann man das nicht irgendwie so schreiben, dass wenn ein Array-feld leer ist damit nichts gemacht wird und das nächste abgecheckt wird usw.

Hab im mom echt noch keine Ahnung wie ich das hinkriegen soll, aber trotzdem Danke für die Hilfe
Gruß
VB?
 
Private Sub CmdTeilen_Click()
Dim x As Variant
Dim i As Integer
Dim j As Integer
Dim l As Integer
Dim complete As Variant
Dim nextline As Variant
Dim sarray2() As String

'ließt Daten TeilString in Datei
Open "C:\dats\werte2.txt" For Output As #1

For i = 0 To LstEinlesen.ListCount - 1
LstEinlesen.ListIndex = i

'Ruft Funktion zum Teilen des Strings auf
Call Sub_ExtractLine(LstEinlesen.List(LstEinlesen.ListIndex), vbCrLf, 0, msarray())
Print #1, msarray(i) 'CStr(List1.Text)

For j = 0 To 100
'Ruft Funktion zum Teilen des Strings auf
Call Sub_ExtractLine(msarray(j), ";", 0, sarray2())

Print #1, sarray2(1) 'CStr(List1.Text)

Next j
Next

Close #1

'Schreibt TeilString aus der Datei in Textfeld und ListBox
Open "C:\dats\werte2.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, nextline

complete = complete & vbCrLf & nextline
Loop

Close #1
Text1.Text = complete
LstTeilen.AddItem CStr(complete)
End Sub
___________________________

Also ich habe Werte in einer Datei stehen:
z.B:
10;15;20
20;30;90
usw.

Jetzt will ich die Werte 15 und 30 heraus nehmen und in einer anderen Datei abspeichern. Das funktioniert ja auch so weit, aber die leeren Zeilen stören.
Brauchst du die Funk. zum Teilen der Daten auch?
 
'Funktion um String aufzuteilen
Sub Sub_ExtractLine(ByVal sLine As String, ByVal Delimiter As Variant, _
ByRef lcount As Long, ByRef sArray() As String)

Dim NewPos%, Oldpos%, i%, j%
ReDim sArray(0 To 255)
Oldpos = 1: i = 0

If Val(Delimiter) Then
Do
NewPos = InStr(Oldpos, sLine, Chr(Delimiter), vbBinaryCompare)
If NewPos > 0 Then sArray(i) = Mid$(sLine, Oldpos, (NewPos - Oldpos))
If NewPos = 0 Then
sArray(i) = Mid$(sLine, Oldpos, (Len(sLine) - Oldpos + 1))
End If

i = i + 1
Oldpos = NewPos + 1
Loop Until NewPos = 0

Else
Do
j% = Len(Delimiter)
NewPos = InStr(Oldpos, sLine, Delimiter, vbBinaryCompare)
If NewPos > 0 Then sArray(i) = Mid$(sLine, Oldpos, (NewPos - Oldpos))
If NewPos = 0 Then
sArray(i) = Mid$(sLine, Oldpos, (Len(sLine) - Oldpos + 1))
End If
i = i + 1
Oldpos = NewPos + j
Loop Until NewPos = 0
End If
lcount = i
End Sub
______________________________

Bitte sehr ;o)
Wenn ich jetzt deine Funktion einbinde, gibt es immer irgendwelche Konflikte! z.B: werden mir die Daten aus der ersten Datei mit ausgegeben und darunter erst die Einzelwerte...
Wär schön wenn du eine Idee hättest..
 
Zurück