Moin,
ich habe in einer Listbox folgendes stehen.
Hallo,08
Hallo,21
Ich möchte, daß "Hallo" erkannt wird weil es schon drin steht und die Zahlen hinter dem "Hallo" dann hintereinander stehen.
Hallo,08,21
wie kann ich das lösen?
Gruß
Wuff
Moin,
ich habe in einer Listbox folgendes stehen.
Hallo,08
Hallo,21
Ich möchte, daß "Hallo" erkannt wird weil es schon drin steht und die Zahlen hinter dem "Hallo" dann hintereinander stehen.
Hallo,08,21
wie kann ich das lösen?
Gruß
Wuff
Das lässt sich sicher mit den String-Befehlen (alla StringSplit, StringTrimLeft, StringRight...) oder eben mit einem StringRegExp lösen... Du kannst dir ja mal die Hilfe zu diesen Befehlen anschauen. Aber mal eine ganz andere Frage: Worum geht es denn genau?, denn es gibt bestimmt eine bessere Lösung als im Text 'herumzufrickeln'...
Ist doch oben beschrieben.
Ich lese eine ini Datei aus und erkenne wann ein Wert vorhanden ist oder nicht.
Diese Werte werden von einer Schleife übergeben.
Ich will ja nicht hetzen.
Aber hat keiner eine Lösung für mich.
Nach 5 Stunden ist ein Push hier im Forum wirklich nicht üblich. Wir sind meistens sehr schnell, aber Geduld ist eine Tugend!
Ist doch oben beschrieben.
Naja was du denn jetzt genau möchtest ist zumindest mir noch nicht ersichtlich... Ich weis das du irgendwo ein ListBox Control hast, in dem irgendwie "Hallo,08" und
"Hallo,21" stehen und ich weis das du in einer Schleife etwas aus einer INI-Datei auslesen willst und selbiges dann mit wieder etwas Anderem vergleichen willst. Sorry aber ohne ein Beispiel Script lässt sich da nur Raten und dabei kommt dann sicher nicht das heraus, was du gerne hättest...
#include <Date.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <GuiListBox.au3>
#region ### START Koda GUI section ### Form=
$Form3 = GUICreate("test", 800, 550, -1, -1)
$List1 = GUICtrlCreateList("", 56, 208, 433, 201)
GUISetState(@SW_SHOW)
Func Tag_version()
Return (@MDAY)
EndFunc ;==>Tag_version
Sleep(100)
$vartag = Tag_version()
Func Monat_version()
Return (@MON)
EndFunc ;==>Monat_version
Sleep(100)
$varmonat = Monat_version()
Local $Readname
Local $firma1
$offeneZeitenINI = @ScriptDir & "\ini\offeneZeiten.ini"
[/autoit][autoit][/autoit][autoit]$sData_offeneZeiten = "name=" & $Readname & @LF & "tag=" & $vartag & @LF & "monat=" & $varmonat & @LF & "firma1=" & $firma1
$monteurname = IniReadSectionNames($offeneZeitenINI); Alle Sektionen aus Monteur.ini auslesen!
_ArrayDisplay($monteurname)
_ArraySort($monteurname, 0, 2, 0)
_ArrayDisplay($monteurname)
For $i = 2 To $monteurname[0]
;~
$array = IniReadSection($offeneZeitenINI, $monteurname[$i])
_ArrayDisplay($array)
$nameR = IniRead($offeneZeitenINI, $monteurname[$i], "name", "")
;~ Msgbox(0,"",$nameR)
$tagList = IniRead($offeneZeitenINI, $monteurname[$i], "tag", "")
;~ Msgbox(0,"",$tagList)
$firma1List = IniRead($offeneZeitenINI, $monteurname[$i], "firma1", "")
;~ Msgbox(0,"",$firma1List)
If $firma1List = "" Then
_GUICtrlListBox_AddString($List1, $nameR & ":" & $tagList)
EndIf
Next
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Die offeneZeiten.ini:
[hugo 08]
name=hugo
tag=08
monat=09
firma1=
[wilma 08]
name=wilma
tag=08
monat=09
firma1=
[hugo 15]
name=hugo
tag=15
monat=09
firma1=5
[wilma 14]
name=wilma
tag=14
monat=09
firma1=
montage1=
fahrer1=
Gruß
Wuff
Ich hab mich deinem Script jetzt mal angenommen...
#include <Array.au3>
#include <GuiListBox.au3>
$GUI = GUICreate('test', 800, 550, -1, -1)
$ListBox = GUICtrlCreateList('', 56, 208, 433, 201)
GUISetState(@SW_SHOW)
Local $Readname, $Data, $Firma1, $INI = @ScriptDir & '\ini\offeneZeiten.ini'
[/autoit] [autoit][/autoit] [autoit]$Data = 'name=' & $Readname & @LF & 'tag=' & @MDAY & @LF & 'monat=' & @MON & @LF & 'firma1=' & $Firma1
$MonteurList = IniReadSectionNames($INI)
_ArrayDisplay($MonteurList)
_ArraySort($MonteurList, 0, 2, 0)
_ArrayDisplay($MonteurList)
For $i = 1 To $MonteurList[0]
$Read_Name = IniRead($INI, $MonteurList[$i], 'name', '')
$Read_Tag = IniRead($INI, $MonteurList[$i], 'tag', '')
$Read_Firma1 = IniRead($INI, $MonteurList[$i], 'firma1', '')
If $Read_Firma1 = '' Then _GUICtrlListBox_AddString($ListBox, $Read_Name & ':' & $Read_Tag)
; Hier kannst du doch mit den Werten machen, was du willst?!
Next
Do
Until GUIGetMsg() = -3
Aber mir ist trotzdem noch nicht klar, WO denn jetzt dein Problem liegt? an der Stelle an der du die Daten aus der INI liest, kannst du doch mit ihnen machen was du möchtest? Du könntest sie zum Beispiel in ein Array schreiben, wenn du sie später wieder benötigst usw. Controls dienen fast nur der Interaktion mit dem User, daher sollten sie nicht als Daten-Ablage missbraucht werden...
In der Listbox steht jetzt.
hugo:08
wilma:08
wilma:14
Ich möchte das z.B der Name wilma erkannt wird, da er schon mit "wilma:08" in der listbox steht und dann "wilma:14" dahinter geschrieben wird.
So soll es dann aussehen.
hugo:08
wilma:08,14
Müsste jetzt klar sein.
Gruß
Wuff
Moin,
hat keiner eine Lösung oder einen Ansatz?
Gruß
Wuff
Ich möchte das z.B der Name wilma erkannt wird, da er schon mit "wilma:08" in der listbox steht und dann "wilma:14" dahinter geschrieben wird.
Das ist zwar möglich aber unnütz kompliziert.
Verwende statt der Listbox ein Listview: NAME | ZEIT_1 | ZEIT_2 | ..ZEIT_n Zeit_n = max. Anzahl an Einträgen
Dann kannst du problemlos prüfen ob bereits ein Eintrag (Name) für die Person existiert und egänzt um die neue Zeit oder legst halt einen neuen Eintrag an.
Moin,
mit der Listview war eine gute Idee.
Habe aber noch ein Problem.
In der offeneZeiten.ini (am Anhang) steht der Schlüssel [hans] sowie der name=hans mit tag=9 und tag=13.
Es wir aber nur der tag=9 in die Listview übernommen.
Wie kann ich es in der INI oder imProgramm lösen, daß auch der tag=13 übernommen wird?
Gruß
Wuff
Anhang: offeneZeiten.ini
[hugo]
name=hugo
tag=12
[hugoline]
name=hugoline
tag=11
[ulla]
name=ulla
tag=10
[hans]
name=hans
tag=9
tag=13
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <GuiListView.au3>
$GUI = GUICreate('test', 800, 550, -1, -1)
$ListView = GUICtrlCreateListView("", 56, 208, 433, 201)
GUISetState(@SW_SHOW)
; Fügt die Spalten hinzu
_GUICtrlListView_InsertColumn($ListView, 0, "Monteur", 100)
_GUICtrlListView_InsertColumn($ListView, 1, "1", 24)
_GUICtrlListView_InsertColumn($ListView, 2, "2", 24)
_GUICtrlListView_InsertColumn($ListView, 3, "3", 24)
_GUICtrlListView_InsertColumn($ListView, 4, "4", 24)
_GUICtrlListView_InsertColumn($ListView, 5, "5", 24)
_GUICtrlListView_InsertColumn($ListView, 6, "6", 24)
_GUICtrlListView_InsertColumn($ListView, 7, "7", 24)
_GUICtrlListView_InsertColumn($ListView, 8, "8", 24)
_GUICtrlListView_InsertColumn($ListView, 9, "9", 24)
_GUICtrlListView_InsertColumn($ListView, 10, "10", 28)
_GUICtrlListView_InsertColumn($ListView, 11, "11", 28)
_GUICtrlListView_InsertColumn($ListView, 12, "12", 28)
_GUICtrlListView_InsertColumn($ListView, 13, "13", 28)
_GUICtrlListView_InsertColumn($ListView, 14, "14", 28)
_GUICtrlListView_InsertColumn($ListView, 15, "15", 28)
_GUICtrlListView_InsertColumn($ListView, 16, "16", 28)
_GUICtrlListView_InsertColumn($ListView, 17, "17", 28)
_GUICtrlListView_InsertColumn($ListView, 18, "18", 28)
_GUICtrlListView_InsertColumn($ListView, 19, "19", 28)
_GUICtrlListView_InsertColumn($ListView, 20, "20", 28)
_GUICtrlListView_InsertColumn($ListView, 21, "21", 28)
_GUICtrlListView_InsertColumn($ListView, 22, "22", 28)
_GUICtrlListView_InsertColumn($ListView, 23, "23", 28)
_GUICtrlListView_InsertColumn($ListView, 24, "24", 28)
_GUICtrlListView_InsertColumn($ListView, 25, "25", 28)
_GUICtrlListView_InsertColumn($ListView, 26, "26", 28)
_GUICtrlListView_InsertColumn($ListView, 27, "27", 28)
_GUICtrlListView_InsertColumn($ListView, 28, "28", 28)
_GUICtrlListView_InsertColumn($ListView, 29, "29", 28)
_GUICtrlListView_InsertColumn($ListView, 30, "30", 28)
_GUICtrlListView_InsertColumn($ListView, 31, "31", 28)
$monteurname = IniReadSectionNames(@ScriptDir & "\ini\offeneZeiten.ini"); Alle Sektionen aus Monteur.ini auslesen!
;~ _Arraydisplay($monteurname)
_ArraySort($monteurname, 0, 1, 0)
_ArrayDisplay($monteurname)
For $i = 1 To $monteurname[0]
$nameR = IniRead(@ScriptDir & "\ini\offeneZeiten.ini", $monteurname[$i], "name", "")
MsgBox(0, "", $nameR)
$monteurnameR = IniReadSection(@ScriptDir & "\ini\offeneZeiten.ini", $monteurname[$i])
$tagR = IniRead(@ScriptDir & "\ini\offeneZeiten.ini", $monteurname[$i], "tag", "")
MsgBox(0, "", $tagR)
$index = _GUICtrlListView_AddItem($ListView, $nameR, $monteurname[$i])
_GUICtrlListView_AddSubItem($ListView, $index, $tagR, $tagR)
Next
[/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
In einer INI-Section darf ein Schlüssel nur einmal vorkommen! Schreib doch beide Zahlen mit einem Trennzeichen in einen Schlüssel und benutzt nach dem Auslesen StringSplit...
Mit dem Operator & und ganz viel Fantasie?
Danke, hab ich gelöst.
Gruß
Wuff