Logo Foltyn Presentation
Table of Contents Previous Page Next Page
Content-Symbol-Img

Ein Programm in der Programmiersprache A program in the programming language
vbScript
zur Enfernung von Leerzeilen in Arrays to remove empty lines in arrays

     Die Methode ist ein schnelles Verfahren, weil es mit einem einzigen Durchlauf alle Leerzeilen entfernt. Es arbeitet mit 2 Zeigern. Bei jedem Schritt werden beide Zeiger um 1 Position hinauf versetzt. Der Zeiger1 sucht die erste leere Zeile. Sobald eine leere Zeile gefunden ist, bleibt Zeiger1 stehen und Zeiger2 sucht die nächste nicht-leere Zeile. Sobald sie gefunden ist, werden die Zeilen ausgetauscht. Danach werden beide Zeiger um 1 hinauf gesetzt, aber sobald Zeiger1 einmal eine leere Zeile gefunden hat, sind für ihn alle darauf folgenden Zeilen leer. Sobald Zeiger2 außerhalb des Bereichs des Arrays kommt, ist die Prozedur beendet.

     The method is a quick procedure, because it removes all empty lines with a single run-through. It works with 2 pointers. By every step both pointers are replaced for 1 position upwards. Pointer1 seeks the first empty line. As soon as an empty line is found, Pointer1 stops and Pointer2 seeks the next non-empty line. As soon as it is found, the lines are exchanged. Thereafter both pointers are set up for one position, but as soon as Pointer1 has found an empty line, all subsequent lines are empty for it. As soon as Pointer2 comes out of range of the array, the procedure is finished.

Das Programm ist getestet vor der Publikation, aber es kann keine Garantie gegeben werden, dass es fehlerfrei ist

The program ist tested before publication, but there can be given no guarantee, that it is free of errors
19. März 2012 March 19th 2012
' Remove empty lines from an array (a quick method)
Option Explicit
Dim AnyArray, Pointer1, Pointer2
AnyArray = Split("Text1,  Text2,  Text3  ,   Text4  Text5  " & _
",,,  ,  Text6  ,  Text7  ,",",")

If UBound(AnyArray) > -1 Then
    MsgBox ">" & vbCrLf & Join(AnyArray,vbCrLf) & vbCrLf & "<"
    Pointer1 = - 1: Pointer2 = 0
    Do
        Pointer1 = Pointer1 + 1: Pointer2 = Pointer2 + 1
        AnyArray(Pointer1) = Trim(AnyArray(Pointer1))
        If Pointer2 > UBound(AnyArray) Then Exit Do
        If AnyArray(Pointer1) = "" Then
            Do While Trim(AnyArray(Pointer2)) = ""
                Pointer2 = Pointer2 + 1
                If Pointer2 > UBound(AnyArray) Then Exit Do
            Loop
            If Pointer2 > UBound(AnyArray) Then Exit Do
            AnyArray(Pointer1) = Trim(AnyArray(Pointer2))
            AnyArray(Pointer2) = ""
        End If
    Loop
    If AnyArray(Pointer1) = "" Then Pointer1 = Pointer1 - 1
    ReDim Preserve AnyArray(Pointer1)
    MsgBox ">" & vbCrLf & Join(AnyArray,vbCrLf) & vbCrLf & "<"
Else
    MsgBox "no array defined"
End If