fb:porticula NoPaste
C3lt1c-Code etwas aufgeräumt..
Uploader: | ytwinky |
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