Hab für mein Programm ne Suchfunktion erstellt die auch prima funktioniert... jedenfalls bis im Suchstring ein Leerzeichen enthalten ist, dann findet er nix mehr.
Er liest den String aus der GUI, zb "Christ" und vergleicht dann mit der vorher erstellten Datei ob Einträge existieren die genauso anfangen.
z.B wenn die Datei so aussieht:
10001|Tom
10002|Christopher
10003|Gerd
10004|Christian
Da würde er mir die beiden Sachen raussuchen:
Christopher
Christian
So nun hab ich aber folgende Datei: (nur BSP)
10002|TEC Datensicherung|10.00
10003|TEC Datensicherung2|50.00
10004|DAT Kundendatei2|5.00
und folgender Suchstring: "TEC Dat"
Als Ergebnis erhalte ich nix Nur wegen den Leerzeichen! Habt ihr ne Idee wie ich es umgehen kann?
Hier die Funktion:
Spoiler anzeigen
;suche dienstleistung
Dim $DLDAT[2]
_FileReadToArray(@ScriptDir & "\data\dl.dat",$DLDAT)
$maxlenghtSearchName = _ArraySize($DLDAT)
$maxlenghtSearchName = $maxlenghtSearchName
$searchnr = 1
Dim $Founded[$maxlenghtSearchName]
Dim $FoundedKDNR[$maxlenghtSearchName]
Dim $FoundedPRICE[$maxlenghtSearchName]
$fnr = 1
Do
$searchsplit = StringSplit($DLDAT[$searchnr],"|")
$searchlenght = StringLen(GUICtrlRead($feld_artnrsuche))
if StringLeft($searchsplit[2],$searchlenght) == GUICtrlRead($feld_artnrsuche) Then
$Founded[$fnr] = $searchsplit[2]
$FoundedKDNR[$fnr] = $searchsplit[1]
$FoundedPRICE[$fnr] = $searchsplit[3]
$fnr = $fnr + 1
EndIf
$searchnr = $searchnr + 1
Until $searchnr == $maxlenghtSearchName
;gefundene Dienstleistungen ausgeben
$maxlenghtSearchName = _ArraySize($Founded)
$maxlenghtSearchName = $maxlenghtSearchName
$searchnr = 1
$ShowFounds = GUICreate("Gefundene Artikel", 405, 294)
$FoundData = GUICtrlCreateListView("Bezeichnung", 0, 0, 401, 289)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
_GUICtrlListView_SetColumnWidth($FoundData, 0, 400)
Do
_GUICtrlListView_AddItem($FoundData,$Founded[$searchnr] , $searchnr)
$searchnr = $searchnr + 1
Until $searchnr == $maxlenghtSearchName
;gewählte DL/Artikel eintragen
Sleep(500)
Do
if $GUI_EVENT_CLOSE == GUIGetMsg() Then
ExitLoop
EndIf
Until GUIGetMsg() == -7 or GUIGetMsg() == -8 or _IsPressed("0D", $dll)
$iS = ControlListView($ShowFounds, '', $FoundData, 'GetSelected')
GUICtrlSetData($feld_artikelsuche,$Founded[$iS+1]) ;Name setzen
GUICtrlSetData($feld_artnrsuche,$FoundedKDNR[$iS+1]) ;KD-Nr setzen
GUICtrlSetData($feld_artikelpreis,$FoundedPRICE[$iS+1]) ;Preis setzen
GUICtrlSetData($feld_mwst_R,"19.00") ; MwSt setzen
GUICtrlSetData($feld_anzahl,"1") ; Anzahl setzen
GUIDelete($ShowFounds)
;finish...