AddGadgetItem

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

AddGadgetItem

Beitrag von kunstlust »

Hallo,

gibt es eine einfache Methode, bei AddGadgetItem zu prüfen, das der Eintrag nur einmal vorhanden ist?

Danke für Tips
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: AddGadgetItem

Beitrag von Kiffi »

mehr Infos bitte! Für welches Gadget beispielsweise...

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: AddGadgetItem

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: AddGadgetItem

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

AddGadgetItem

Beitrag 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.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: AddGadgetItem

Beitrag 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
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

AddGadgetItem

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10725
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: AddGadgetItem

Beitrag 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
a²+b²=mc²
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: AddGadgetItem

Beitrag von kunstlust »

Danke Kiffi, das ist supereinfach und schnell eingebaut :bounce:

Gruß Lars
Antworten