LogAppend() [UDF]

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

LogAppend() [UDF]

11 Sep 2017, 03:36

Basierend auf dieser anfrage [hier], eine funktion, um eine datei mit dateiinhalt in aufsteigernder anordnung anzulegen/-zeigen.
Auch von Dll-, COM- und OOP-phobikern beherrschbar. :)

LogAppend().ahk

Code: Select all

If (A_ScriptName = "LogAppend().ahk") {											; test section. Change filename accordingly or remove this section.
	Random, num, 1, 10000
	LogAppend()																	; func call to create a default file (that is named <YYYYMMDD>.log) to add a timestamp to it. 
	LogAppend("This is today's random number:`t" . num,"myOwn.log")				; func call to create "myOwn.log" and to add the specified content to it.
	ExitApp
	}																			; end of test section.
	
LogAppend(string="",filename="") {											
	filename := (filename = "") ? SubStr(A_Now,1,8) . ".log" : filename			; creating a default filename if no filename has been specified with the functions call
	string := (string = "") ? A_Now : string									; creating a default file content (here a timestamp) if no content has been specified with the functions call													; edit the current log
	FileRead, content,% filename												; so read its content (if a file already exists) ...
	FileMove,% filename,% filename ".bak", 1									; save the current file (if existing) as a backup (that file will be overwritten each time!)
	FileAppend,% string "`r`n" content,% filename								; write/create an updated file with its content in ascending order
	SoundBeep
	}
... und da in der original anfrage (oben verlinkt) die rede davon war den inhalt des clipboards (altdeutsch: 'zwischenablage') in umgekehrter reihenfolge zu sortieren , hier noch ...

FlipContent().ahk

Code: Select all

If (A_ScriptName = "FlipContent().ahk") {											; test section. Change filename accordingly or remove this section.
	MsgBox % ClipBoard := FlipContent(ClipBoard)
	SoundBeep
	ExitApp
	}																				; end of test section.


FlipContent(clipB) {											
	content := StrSplit(clipB,"`n")
	cnt := content.MaxIndex()
	Loop % content.MaxIndex() {
		newContent .= content[cnt] "`n"
		cnt--
		}
	Return % newContent
	}
Edited. See comments below :thumbup:
Last edited by BoBo on 11 Sep 2017, 06:52, edited 1 time in total.
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: LogAppend() [UDF]

11 Sep 2017, 05:21

Kleiner Hinwies: Dein Code "scheint" zu suggerieren, daß #SingleInstance, Force nur abhängig von A_ScriptName = "FlipContent().ahk" ausgeführt wird,
oder anders gesagt, #SingleInstance, Force wird NICHT ausgeführt, wenn A_ScriptName != "FlipContent().ahk".

Ich vermute, daß Du das weißt, Dein Code weiß es aber nicht. ;)

Alternative: Ich bin selber auf dem Holzweg, in dem Fall -> kann mich bitte jemand verbessern.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: LogAppend() [UDF]

11 Sep 2017, 05:35

#SingleInstance, Force wird nicht ausgeführt sondern eingelesen, bevor das eigentliche ausführen beginnt. Ein If beinflusst es nicht.
Recommends AHK Studio
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: LogAppend() [UDF]

11 Sep 2017, 05:51

wolf_II wrote:Kleiner Hinwies: Dein Code "scheint" zu suggerieren, daß #SingleInstance, Force nur abhängig von A_ScriptName = "FlipContent().ahk" ausgeführt wird,
oder anders gesagt, #SingleInstance, Force wird NICHT ausgeführt, wenn A_ScriptName != "FlipContent().ahk".

Ich vermute, daß Du das weißt, Dein Code weiß es aber nicht. ;)

Alternative: Ich bin selber auf dem Holzweg, in dem Fall -> kann mich bitte jemand verbessern.
Bei mir zugegeben reine vermutung (funktionierte ja auch alles :silent: ).
Dachte damit vermeiden zu können, das einem nutzer der funktion eine mitunter ungewünschte einschränkung auferlegt wird??!
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: LogAppend() [UDF]

11 Sep 2017, 06:37

Lass uns den folgenden Fall betrachten: ein User Deiner Funktion will diese wie folgt verwenden:

Code: Select all

#Persistent

#SingleInstance, Off ; allow multiple instances
#Include, LogAppend().ahk

; clever code here
LogAppend("Hi, BoBo", "test.txt")
; more clever code
Du kannst am Beispiel sehen, daß die Include Zeile das ursprüngliche Verhalten des Scriptes beeinflußt. (#SingleInstance, Off wird "überschrieben")

Code: Select all

#Persistent

#Include, LogAppend().ahk
#SingleInstance, Off ; allow multiple instances

; clever code here
LogAppend("Hi, BoBo", "test.txt")
; more clever code
Du kannst am zweiten Beispiel sehen, daß die Include Zeile das ursprüngliche Verhalten des Scriptes NICHT beeinflußt.. (#SingleInstance, Off wird nicht "überschrieben")

Momentan ist das Verhalten eines Scriptes NUR unbeeinflußt, WENN die Include Zeile VOR der ursprünglichen #SingleInstance, Off erscheint.
In anderen Worten: Deine Funktion KANN das Verhalten eines Scriptes, in dem es Includiert wird, negativ beeinflussen, WENN der User unachtsam ist.

Ich denke, daß dem User keine ungewünschte Einschränkung auferlegt wird, wenn Du die Zeile ganz rausläßt.
BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: LogAppend() [UDF]

11 Sep 2017, 06:53

wolf_II wrote:Ich denke, daß dem User keine ungewünschte Einschränkung auferlegt wird, wenn Du die Zeile ganz rausläßt.
Done. Thx :thumbup:
wolf_II
Posts: 2688
Joined: 08 Feb 2015, 20:55

Re: LogAppend() [UDF]

11 Sep 2017, 07:36

nnnik wrote:#SingleInstance, Force wird nicht ausgeführt sondern eingelesen, bevor das eigentliche ausführen beginnt. Ein If beinflusst es nicht.
@nnick: Danke fürs Bestätigen. :thumbup:

PS:
@BoBo und nnick: Ich war nicht in der Lage mich im ersten Reply klar auszudrücken. Ich wollte sagen, "Dein Code scheint zu suggerieren, ...", was aber nicht der Fall ist.
Offensichtlich konntet ihr beide meinen Hinweis zwischen den Zeilen herauslesen. :bravo: :thumbup:

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 17 guests