Jump to content

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

Stack mit x Elementen.


  • Please log in to reply
17 replies to this topic
omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

Hi! Eine einfache Frage. Ich habe einen Stack, wie kann ich alle Elemente aneinandergereiht in einem Tooltip ausgeben?

For each, value in Stack
Tooltip, % value

funktioniert nicht?



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Ich habe eine Frage, was ist ein Stack in diesem Zusammenhang?

Wenn du Array meinst dann ist der Code oben korrekt.

mir:="dir"
Array:=["Hallo","wie","geht","es",mir]
For each, value in Array
Tooltip, % value

Visit the new forum ahkscript.org.

http://ahkscript.org


hd0202
  • Members
  • 709 posts
  • Last active: Feb 14 2016 08:05 PM
  • Joined: 13 Aug 2006

Ich verstehe die Frage so:

For each, value in Stack
  out .= value  ; evtl. trennzeichen angeben, z.b. ","
Tooltip, % out

Hubert



omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

Ja, so meinte ich ... Komisch da passiert bei mir nichts. Hier mal das ganze Script:

	tail := 0								; FIFO-stack tail pointer; used for copy to the tail
	head := 0								; FIFO-stack head pointer; used for paste from the head
	Shift::									;
		backup := Clipboard					; backup clipboard content
		Clipboard := ""						; really necessary? dunno!
		send, ^c   
		ClipWait, 0.1         
		if (ErrorLevel = 0)					; if a data arrived to the clipboard …
		{
			tail++
			Stack%tail% := Clipboard		; … then store data to the tail
			For each, value in Stack
			{
				out .= value
				Tooltip, % out
			}
		}
		else if (head != tail)				; if nothing arrived and if there is yet unpasted data at the tail …
		{
			head++
			SendRaw % Stack%head%			; … then send data from stack head
			content := content . " " . Stack%tail%
			Tooltip, %content%
		}
		Clipboard := backup					; restore clipboard content
		Return


omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

double post



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Was du dort erstellst ist kein Stack, sondern ein Pseudo Array, welches nicht durch die For-Schleife durchgeloopt werden kann.

Ein Stack ist eine andere Sache, mit der man sich bei AHK glücklicherweise nicht rumschlagen muss.

        head:=0
        tail:=0
        Array:=	[]						
	Shift::									
		backup := Clipboard					
		Clipboard := ""						
		send, ^c   
		ClipWait, 0.1         
		if (ErrorLevel = 0)					
		{
                        head++
			Array[head]:=Clipboard		
			For each, value in Array
			{
				out .= value
				Tooltip, % out
			}
		}
		else if (head!=tail)				
		{
			head++
			SendRaw % Array[head]			; … then send data from stack head
			content := content . " " . Array[tail]
			Tooltip, %content%
		}
		Clipboard := backup					; restore clipboard content
		Return

Visit the new forum ahkscript.org.

http://ahkscript.org


hd0202
  • Members
  • 709 posts
  • Last active: Feb 14 2016 08:05 PM
  • Joined: 13 Aug 2006

Mit Klammern sieht das so aus:

For each, value in Stack
{
  out .= value  ; evtl. trennzeichen angeben, z.b. ","
}
Tooltip, % out

Hubert



omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

@hd0202 und @nnnik Danke für eure Unterstützung, aber AHK steigt gar nicht erst in die Schleife ein. Ich kann da auch irgendeinen Blindtext ausgeben, und AHK tut nix!

For each, value in Stack
{
Tooltip, test123
}

Hier wird nicht “test123” ausgegeben.



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012

Da das was du als Stack bezeichnest kein Array ist.


Visit the new forum ahkscript.org.

http://ahkscript.org


omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

Wie mache ich’s zu einem Array? Ich weiß, daß mir hier Grundlagenwissen fehlt, aber die Dokumentation was Arrays angeht ist sehr dürftig auf der AHK-Seite.



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012
Einen array erstellst du so:
Array:=[]
Auf die einzelnen Felder kannst du nun wieder mit
eckigen klammern zugreifen:
Array:=[]
Array[1]:=2
array[2]:="Hallo"
Msgbox % array[array[1]]
Wie das ganze skript das du gepostet hast in array version aussieht stehz oben.

Visit the new forum ahkscript.org.

http://ahkscript.org


omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

Das Schreiben und Lesen aus einem echten Array funktioniert bei mir aus irgendeinem Grund nicht! D. h. bei

 

Array := []

Array[1] := "test"

Tooltip, % Array[1]

 

passiert nix. Was allerdings funktioniert sind die Pseude-Arrays:

 

Array := ""

Array1 := "test"

Tooltip, % Array1



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012
Hasz du die neeste Autohotkey Version installiert (1.1...) Autohotkey_L nicht basoc.

Visit the new forum ahkscript.org.

http://ahkscript.org


omnia
  • Members
  • 25 posts
  • Last active: Dec 27 2016 06:43 PM
  • Joined: 23 Mar 2014

@nnik Also da steht “AutoHotkey v1.1.13.01”. Geklappt hat es bei mir nur mit Pseudo-Arrays. die Arrays mit eckigen Klammern: “Array[]” funktionieren irgendwie nicht.



nnnik
  • Members
  • 1625 posts
  • Last active: Jan 24 2019 02:19 PM
  • Joined: 28 Jul 2012
Führ mal diesen Code aus:
Array := []
Array[1] := "test"
Msgbox % Array[1]

Visit the new forum ahkscript.org.

http://ahkscript.org