wie ich bemerkt habe wird bei FindString() mit Flag #PB_String_NoCase bei Umlauten doch
auf Klein-/Großschreibung unterschieden. Scheinbar auch mit fränzösischen 'Umlauts'.
Getestet auf einigen Linux: Lubuntu, Xubuntu, Ubuntu, Mint auf Unicode- und Ascii-Executables.
Da die Umlaute ja zum jeweiligen Standard-Alphabet gehören und man eigentlich nicht noch zusätzliche eine Sonderbehandlung nachschieben will und diesbezüglich auch ein verlässliches Verhalten erwartet würd ich dies als Bug sehen.
Wie seht Ihre das?
Ein Beispiel:
Code: Alles auswählen
;Linux, PB 5.22, 5.30, 5.31
;FindString mit Flag '#PB_String_NoCase'
;Probiere kleine und große Buchstaben (z.B. h|H) UND
;probiere kleine und große Umlaute (z.B. ä|Ä oder französich é|É)
EnableExplicit
#MainWin= 0
#LIG = 0
#Txt = 1
#Txt1= 2
#Str = 3
Global.i gEvent, gQuit
Global.s Dim Zeile(23)
Procedure Itm_Search(Window, tGadget, sGadget, S.s, NextItem)
Protected.i I, First= #Null, Found= -1
If S= #NULL$ : ProcedureReturn : EndIf
For I= First To CountGadgetItems(tGadget)- 1
If FindString(GetGadgetItemText(tGadget, I, 0), S, 1, #PB_String_NoCase); here's this Feature OR Problem
SetGadgetState(tGadget, I)
Found= I
Break
EndIf
Next I
EndProcedure
Procedure CreateWindow_Main()
Protected.i I, O
If OpenWindow(#MainWin, 200, 200, 350, 400, "FindString w. 'Umlauts' and #PB_String_NoCase", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(#LIG, 5, 50, 340, 335, "column 1", 100, #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
TextGadget(#Txt, 5, 7, 250, 20, "try searchterm with big/small 'Umlauts' like")
TextGadget(#Txt1, 5, 27, 250, 20, "ä|Ä, ö|Ö, ü|Ü, é|É (=´+e|´+E)")
StringGadget(#Str, 260, 22, 80, 26, "")
Restore Names
For I= 0 To 23 : Read.s Zeile(I) : Next I
For I= 0 To 23
AddGadgetItem(#LIG, -1, Zeile(I))
Next I
EndIf
EndProcedure
CreateWindow_Main()
Repeat
gEvent= WaitWindowEvent()
Select gEvent
Case #PB_Event_CloseWindow
gQuit= #True
Case #PB_Event_Gadget
If EventGadget()= #Str
If EventType()= #PB_EventType_Change
Itm_Search(#MainWin, #LIG, #Str, GetGadgetText(#Str), #False)
EndIf
EndIf
EndSelect
Until gQuit
End
DataSection
Names:
Data.s "Bauer", "Müller", "Meier", "Maier", "Huber", "Schmidt", "Schreiner", "Gérard", "Bach", "Binder",
"Hofer", "Schneider", "Bader", "Berger", "Klein", "Groß", "Kaiser", "König", "Émirats", "Saint-Étienne", "Zäuner",
"Ärgermacher", "Österreicher", "Überhuber"
EndDataSection