Seite 1 von 1
AddGadgetItem
Verfasst: 29.11.2012 17:42
von kunstlust
Hallo,
gibt es eine einfache Methode, bei AddGadgetItem zu prüfen, das der Eintrag nur einmal vorhanden ist?
Danke für Tips
Re: AddGadgetItem
Verfasst: 29.11.2012 17:45
von Kiffi
mehr Infos bitte! Für welches Gadget beispielsweise...
Grüße ... Kiffi
Re: AddGadgetItem
Verfasst: 29.11.2012 18:00
von kunstlust
Kiffi hat geschrieben:mehr Infos bitte! Für welches Gadget beispielsweise...
Grüße ... Kiffi
Hallo Kiffi,
es handelt sich um eine ComboBox in der IP Adressen eingetragen werden und ich möchte gerne Dubletten vermeiden.
Die IPs werden danach direkte aus dem Gadget in eine Prefs geschrieben. In AutoIt gab es die Möglichkeit dies per Array zu lösen, indem ich aus dem Array alle Einträge in ein andere Kopiere, dies aber keine Dubletten enthält.
Ich denke das ich wohl eine Funktion für die Prefs brauche, oder gibt es eine andere Lösung?
Gruß Lars
Re: AddGadgetItem
Verfasst: 29.11.2012 18:13
von ts-soft
Mal unabhängig von Deiner Frage, wäre die Kombination von IPAddressGadget und ListView
nicht sinnvoller? Benötigt zwar mehr Platz, vermeidet aber ungültige Eingaben, was Du
sonst auch noch selber händeln müsstest.
AddGadgetItem
Verfasst: 29.11.2012 18:41
von kunstlust
ts-soft hat geschrieben:Mal unabhängig von Deiner Frage, wäre die Kombination von IPAddressGadget und ListView
nicht sinnvoller? Benötigt zwar mehr Platz, vermeidet aber ungültige Eingaben, was Du
sonst auch noch selber händeln müsstest.
Weil eben auch ein DNS-Name möglich ist, so ist es entstanden. Sollte die Ip nicht vorhanden sein, wird dieser Fehler später abgefangen.
Re: AddGadgetItem
Verfasst: 29.11.2012 18:42
von NicTheQuick
Ich hab hier mal eine Funktion gebastelt, die dir ein String-Array alphabetisch sortiert und gleichzeitig Dubletten entfernt. Ohne alphabetische Sortierung ist es komplizierter zu programmieren. Deswegen habe ich jetzt die einfachere Version gewählt.
Code: Alles auswählen
Dim values.s(20)
Procedure.i makeUnique(Array values.s(1))
Protected i.i, n.i = ArraySize(values())
Protected offset.i
SortArray(values(), #PB_Sort_Ascending)
For i = 1 To n
If values(i) = values(i - 1 - offset)
offset + 1
Else
values(i - offset) = values(i)
EndIf
Next
ReDim values(n - offset)
ProcedureReturn offset
EndProcedure
For i = 0 To ArraySize(values())
values(i) = RSet(Str(Random(4) * 2), 3, "0")
Debug values(i)
Next
makeUnique(values())
Debug "FERTIG"
For i = 0 To ArraySize(values())
Debug values(i)
Next
AddGadgetItem
Verfasst: 29.11.2012 18:52
von kunstlust
@NicTheQuick
Das mit dem Array schaut Super aus, ich danke die sehr für deine Hilfe. Die Kunst ist eben doch die Logik und da tue ich mich doch manchmal schwer. Ich verstehe aber, was du gemacht hast, ich habe also noch Hoffnung.... Danke
Re: AddGadgetItem
Verfasst: 29.11.2012 18:59
von Kiffi
ansonsten hätte ich hier noch eine Windows-only Lösung:
Code: Alles auswählen
Procedure AddComboBoxItem(ComboBoxGadget, Text.s)
If SendMessage_(GadgetID(ComboBoxGadget), #CB_FINDSTRING, -1, @Text) = -1
AddGadgetItem(ComboBoxGadget, -1, Text)
Else
Debug Text + " schon vorhanden"
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 270, 180, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ComboBoxGadget(0, 10, 40, 250, -1)
AddComboBoxItem(0, "hallo1")
AddComboBoxItem(0, "hallo2")
AddComboBoxItem(0, "hallo3")
AddComboBoxItem(0, "hallo1") ; der hier ist schon vorhanden und wird nicht eingetragen
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Grüße ... Kiffi
Re: AddGadgetItem
Verfasst: 29.11.2012 20:14
von kunstlust
Danke Kiffi, das ist supereinfach und schnell eingebaut
Gruß Lars