Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

C3lt1c-Code etwas aufgeräumt..

Uploader:Redakteurytwinky
Datum/Zeit:05.02.2012 15:10:46

'C3lt1c-StringSplit, http://forum.qbasic.at/viewtopic.php?t=7771
'ein wenig aufgeräumt und unnötige Mid()-Aufrufe entfernt..
Type toExplode
  Const version = 2.02
  array  As String Ptr
  csv    As String
  length As UShort
  Declare Sub split (ByVal Istring As String, ByVal Isep As String)
End Type

Dim zeilen_data As String
zeilen_data = "6.   Mueller,Daniel      M   1900   1769   8.5   7.56   13   28   /   15   1879      1918   18"

Dim zeilen_data_split As toExplode
Dim As Integer array_size, i, array_pointer

zeilen_data_split.split(zeilen_data," ")

For i = 0 To zeilen_data_split.length -1
  If zeilen_data_split.array[i] <> "" Then array_size += 1
Next

Dim split_array(array_size+1) As String

For i = 0 To zeilen_data_split.length -1
    If zeilen_data_split.array[i] <> "" Then
      split_array(array_pointer) = zeilen_data_split.array[i]
      array_pointer += 1
    EndIf
Next

'Über split_array(index) kannst du auf die daten zugreifen

For i = 0 To array_size - 1
  Print split_array(i)
Next

Sleep
End

Sub toExplode.split (ByVal Istring As String, ByVal Isep As String)
/'
  Ergebnis : Formatiert einen CSV String =>
             Beispiel      
             csv := "ab;abc;abcd" => csv := chr(2)+"ab"+chr(3)+"abc"+chr(4)+"abcd"
               Länge String 1         --------+     |     |     |      |      |
               String 1               --------------+     |     |      |      |
               Länge String 2         --------------------+     |      |      |
               String 2               --------------------------+      |      |
               Länge String 3         ---------------------------------+      |
               String 3               ----------------------------------------+
                                      
  Aufruf   : toExplode.split("ab;abc;abcd",";")
  Variable : a=Laufvar.; str_len=Länge des Strings;ct=Länge Teilstring&akteller Arrayeintrag
             items=Länge des Vektors; dummy=DummyString; Istring=Eingangsstring; Isep=Seperator
'/

  Dim As UShort i, j                 'Laufvariablen
  Dim dummy   As String = Istring    'dummy
  Dim str_len As UShort = Len(dummy) 'Länge des Strings
  Dim ct      As UShort              'Länge Teilstring
  Dim items   As UShort=0            'Anzahl der Arrayeinträge

  For i = 0 To str_len - 1
        j = str_len-i
        If dummy[j-1] = Isep Then 'Mid(dummy, j, 1)=Chr(Isep) ist zu umständlich wg. Mid() zu langsam..
            dummy[j-1]  = ct 'Mid() ist langsam, ich kann den Integer(!!) direkt ändern..
          ct       Xor= ct
          items      += 1
        Else
          ct         += 1
        EndIf
  Next
  dummy       = Chr(ct) + dummy
  This.length = items + 1
  This.csv    = dummy

  This.array  = Callocate(SizeOf(String) * This.length)
  ct       Xor= ct

  For i = 0 To str_len - 1
        This.array[ct] = Mid(dummy, 2+i, dummy[i])
        i  += dummy[i]
        ct += 1
  Next
End Sub