Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Inhalt einer Variable ändern anhand einer Liste


  • Please log in to reply
19 replies to this topic
fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Hallo leutz,

in meinem Listview stehen momentan Ordnernamen. Diese werden vom Script anhand der LAN-Usernamen angelegt. Im Listview sollen aber nun statt der Kürzel die vollständigen Namen anzeigen.

Wie macht man sowas?
Sicher per Regex oder?

Wie muss so eine Liste aufgebaut sein? Am besten wäre eine ini. In der könnte sowas wie
user1=klauschi|Klaus Schirmann
user2=herbhube|Herbert Hube
stehen.

Bitte gebt mir nen Hinweis wie man das Lösen kann.
Am besten so, das lediglich die Anzeige im Listview angepasst wird.
Beim Doppelklick auf einen der Namen muss das Kürzel wieder genutzt werden.

Hoffe ich drücke mich verständlich aus.

Danke!
MfG
fump

SAPlayer
  • Members
  • 403 posts
  • Last active: Apr 11 2014 04:45 PM
  • Joined: 06 Nov 2012
Meinst du so:
while(shortname%A_Index%)
IniRead, fullname%A_Index%, users.ini, names, % shortname A_Index, % shortname A_Index


lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
bei einem listview kannst du in felder schreiben die nicht sichtbar sind
einfach in zeile "AdolHitle" in das nicht sichbare feld "Adolf Hitler"
reinschreiben bei doppelklick einfach den inhalt vertauschen fertig Posted Image

fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
@SAPlayer
Danke für den Tipp, versuch ich gleich mal :)


Hi lasso, kannst du mir das genauer erklären?
Ich müsste ja dann im nicht sichtbaren das Kürzel haben und im sichtbaren den langnamen. Wie stell ich da die Verbindung her und wie wird das ganze gemacht?

nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012
die wörter trennen z.B. mit Parse Loop dann in ein Array schreiben und von jedem Wort dann die gleiche menge Buchstaben abziehen dann ohne Spaces wieder zusammen fügen.
shortstr(text,wantedlength){
var:=[]
loop,Parse,text , %A_Space%
var.insert(A_Loopfield)
maxstrlen:=0
Chartotrim:=strlen(text)-wantedlength-var.maxindex()
for each,var2 in var
maxstrlen:= strlen(var2)>maxstrlen ? strlen(var2) : maxstrlen
Chartrim:=0
loop
{
for each,var2 in var
{
if (strlen(var2)=maxstrlen)
{
stringtrimright,var2,var2,1
var[each]:=var2
Chartrim++
}
}
if (Chartrim<Chartotrim)
maxstrlen--
else
break
}
Text:=""
For each, var2 in var
text.= var2
return text
}
hört sich in meiner Beschreibung irgendwie weniger an als es ist

Visit the new forum ahkscript.org.

http://ahkscript.org


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
nnnik, bitte sei mir nicht böse, aber ich versteh nur Bahnhof.

shortstr(text,wantedlength) = eine Funktion der ich text und wantedlength mitgebe richtig? text ist dann was? die LAN-Usernamen also die Ordnernamen sind immer nur 8 Zeichen lang.

var:=[] = erstellt ein array

loop,Parse,text, "leerzeichen" = hier wird "text" nach leerzeichen getrennt... aber was genau ist text? Ist text der lange name?

Chartotrim:=strlen(text)-wantedlength-var.maxindex()
for each,var2 in var
maxstrlen:= strlen(var2)>maxstrlen ? strlen(var2) : maxstrlen
Chartrim:=0
Was passiert denn hier?

Ich blicks nich :( erklärs mir bitte, ich will ja lernen.

Ragnar
  • Members
  • 68 posts
  • Last active: Aug 26 2015 12:18 PM
  • Joined: 02 Oct 2006
user.ini
[User]
klauschi=Klaus Schirmann
herbhube=Herbert Hube

Script

Gui, Add, ListView, w166 h330 gAction, Name|Kurzname
Gui, Show

list =
(
klauschi
herbhube
maxmuste
)

Loop, Parse, list, % "`n"
{
IniRead, name, user.ini, user, % A_LoopField, % A_LoopField
LV_Add("", name, A_LoopField)
}

LV_ModifyCol()
LV_ModifyCol(2, 0)
Return

Action:
If A_GuiEvent = DoubleClick
{
LV_GetText(Text, A_EventInfo, 2)
MsgBox, % Text
}
Return


lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
jup so wie Ragnar das macht is das gut
hier noch was zum einkürzen



msgbox % shortname("Klaus Schirmann")
. "`n" . shortname("[email protected]")
. "`n" . shortname("  Klaus	  Schirmann")
. "`n" . shortname(" Klaus>>>>>Schirmann")
. "`n" . shortname("Klaus||||Schirmann")
. "`n" . shortname("Klaus   ><++ Schirmann")
. "`n" . shortname("Klaus ??? Schirmann")
. "`n" . shortname("?? Klaus Schirmann")
. "`n" . shortname("%§Klaus §Schirmann")
. "`n" . shortname("&&Klaus $Schirmann")

shortname(t){
  b:=SubStr(a:=SubStr(t,t~="\w"),(a~="\W\w")+1,4),a:=SubStr(a,1,4),a.=b
return a
}


nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012
ganz nett bringt dir aber nur so lange etwas wie du auch zwei wörter hast
und ach ja text ist der lange name
der grösste teil sind Schöhnheits Operationen bei meiner Funktion

Visit the new forum ahkscript.org.

http://ahkscript.org


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Vielen Dank für die Snippets und die Erklärungen.
Danke Ragnar :)

Funktioniert perfekt!

lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
@ nnnik hast recht
so ist besser
msgbox % shortname("KlausSchirmann")
. "`n" . shortname("KlausS")
. "`n" . shortname("  Klaus	  Schirmann")
. "`n" . shortname(" Klaus>>>>>Schirmann")
. "`n" . shortname("[email protected]")
. "`n" . shortname("Klaus   ><++ Schirmann")
. "`n" . shortname("Klaus ??? Schirmann")
. "`n" . shortname("?? Klaus Schirmann")
. "`n" . shortname("%§Klaus §Schirmann")
. "`n" . shortname("&&Klaus $Schirmann")

shortname(t){
  b:=SubStr(a:=SubStr(t,t~="\w"),(x:=(a~="\W\w"))?x+1:x+5,4),a:=SubStr(a,1,4),a.=b
return a
}


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Wow das ist echt cool. Danke dafür!

lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
gerne wieder Posted Image

Sheik
  • Members
  • 25 posts
  • Last active: Jan 09 2014 07:34 AM
  • Joined: 06 Nov 2012
@lasso, kannst du mir sagen was das ~= bedeutet? Ich finde dazu nichts in der Docu.... Der Code ist nämlich wirklich interessant :)
Danke

lasso
  • Members
  • 111 posts
  • Last active: May 19 2013 04:19 PM
  • Joined: 02 Nov 2012
( a ~= b ) ist ein regulärer Ausdruck in perl schreibt man das genau andersrum ( a =~ b )
er gibt die Fundposition in "a" zurück
"b" ist das pattern
msgbox % "Klaus Schirmann" ~= "\w"
hier wird "1" zurückgegeben
also das 1. Zeichen ist ein Wortzeichen
msgbox % "Klaus Schirmann" ~= "\W\w"
hier wird "6" zurückgegeben
also das 6. Zeichen ist ein Nichtwortzeichen dem ein Wortzeichen folgt