| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
BEHRI
Anmeldedatum: 16.09.2006 Beiträge: 13 Wohnort: Hamburg
|
Verfasst am: Mo Jan 15, 2007 10:57 pm Titel: Sinnige LOOP Anweisung zwecks Stapelverarbeitung |
|
|
Hallo liebe Gemeinde des AHK Forums ...
Zunächst mal ein Lob auf den Erschaffer dieser verdammt genialen Scriptsprache.
Ebenso mal ein Dank an alle Beteiligten, insbesondere an Thalon, der mit Anfang 20 Jahren hier wirklich Erstaunliches beiträgt ...
By the way möchte ich auch noch mal den VORSTELLUNGSTHREAD im Forum ( siehe - Rubrik < Labertasche > ) hervorheben - auch ich werde mich dort bei Zeiten vorstellen
Ich selbst habe mit AHK schon viele Automatosierungen und Verbesserungen in vielen Programmen herbeigeführt, auch wenn es mich oft von meiner eigentlichen Arbeit ablenkt und mich stets zu neuen Scripten verführt - zudem haben mir viele hier von Euch eine Menge Impulse gegeben. Danke ... Mehr davon !!!
Mögen mache einige vieler Anregungen hier belächeln - Anfängern helfen sie oftmals und führen am Ende zu weiteren nützlichen Tools ...
Werde später auch mal Einiges mehr von meinen Scripten feilbieten ( .. wenn ich denn mal zufrieden bin mit dem einen oder anderen Script ... )
So genug der Labberei - zum Thema :
Habe festgestellt das beim Einlesen simpler Zeilen in einem Textdokument via Anweisung LOOP Probleme auftauchen .. ( weiß nicht was ihr für Erfahrungen gemacht habt ), z. b. wird die letzte Zeile doppelt gelesen oder Leerzeilen am Ende mitgelesen.
Bei Ausgabe über ein GUI in ein Listen war alles in Ordnung - aber bei einer Stapelverarbeitung / Abfrage jeder einzelnen Zeile leider nicht.
Habe nun eine Möglichkeit gefunden wie die LOOP Anweisung wirkklich nur DIE ZEILEN einliest, die Text enthalten.
Dabei ist es irrelevant ob am Anfang, in der Mitte oder am Ende Leerzeilen vorhanden sind.
Ob dieses Modul jemanden nützt sei mal dahin gestellt - mir hat es sehr geholfen ...
| Code: |
; Als Test einfach mal beliebige Zeilen untereinander in eine Textdatei schreiben
; im Folgenden den Namen Textdatei einfügen
File =
i=0
Loop
{
FileReadLine, Line, %File%, %m%
i+=1
FileReadLine, Dummy, %File%, %i%
m+=1
If Line<>
{
MSGBOX %Line%
; Hier die etwaige Stapelverarbeitung der eizelnen Zeilen ausführen
}
If ErrorLevel <> 0
break
}
return |
_________________ Es gibt fast immer Etwas zu verbessern ...
Zuletzt bearbeitet von BEHRI am Mo Jan 15, 2007 11:15 pm, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mo Jan 15, 2007 11:15 pm Titel: |
|
|
| Code: | File =
Loop, Read, %File%
{
If (A_LoopReadLine = " ")
Continue
; Hier die Stapelverarbeitung ausführen
} | Sollte das gleiche Ergebnis liefern, sofern ich deine Anforderungen korrekt verstanden habe. |
|
| Nach oben |
|
 |
BEHRI
Anmeldedatum: 16.09.2006 Beiträge: 13 Wohnort: Hamburg
|
Verfasst am: Mo Jan 15, 2007 11:25 pm Titel: Welch schnelle Reaktion ...-) |
|
|
Vielleicht habe ich mich uohl falsch ausgedrückt ..
LEERZEILE ist bei mir ein doppelter Absatz ... sorry
Also wenn ich deinen Code modifiziere macht er genau das was meiner macht - nur DEINER ist kürzer - DANKE )
| Code: |
File =
Loop, Read, %File%
{
If (A_LoopReadLine = "")
Continue
MSGBOX %A_LoopReadLine%
; Hier die Stapelverarbeitung ausführen
}
return
|
_________________ Es gibt fast immer Etwas zu verbessern ...
Zuletzt bearbeitet von BEHRI am Di Jan 16, 2007 9:21 am, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
garry
Anmeldedatum: 25.10.2005 Beiträge: 396 Wohnort: switzerland
|
Verfasst am: Mo Jan 15, 2007 11:29 pm Titel: |
|
|
hello Bobo,
dies funktioniert wenn die Linie EIN space beinhaltet
eigentlich
if A_loopReadLine=
continue
Ein Beispiel, überspringe Linie mit space :
| Code: | File =test.txt
Loop, Read, %File%
{
if A_LoopReadLine is space
continue
msgbox,%A_loopreadline%
}
|
Zuletzt bearbeitet von garry am Mo Jan 15, 2007 11:46 pm, insgesamt einmal bearbeitet |
|
| Nach oben |
|
 |
BoBo Gast
|
Verfasst am: Mo Jan 15, 2007 11:45 pm Titel: |
|
|
| Zitat: | | nur DEINER ist kürzer | Aha.  |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Di Jan 16, 2007 11:40 am Titel: |
|
|
| Zitat: | Zunächst mal ein Lob auf den Erschaffer dieser verdammt genialen Scriptsprache.
Ebenso mal ein Dank an alle Beteiligten, insbesondere an Thalon, der mit Anfang 20 Jahren hier wirklich Erstaunliches beiträgt ... | Ich werds Chris ausrichten
Mit 20 Jahren sollten man ja doch schon erwachsen sein, von daher glaube ich nicht dass das viel ausmacht
Aber danke für das Kompliment!
Um auch noch was zum Thread beizutragen, meine bevorzugte Methode: | Code: | FileRead, FileContent, test.txt
Loop, Parse, FileContent, `n, `r
{
if A_LoopField !=
msgbox %A_LoopField%
}
FileContent = ;Bereinigen des Speichers | Ist vermutlich nicht schneller, aber ich bevorzuge Dateien als ganzes einzulesen vor der Verarbeitung. Und sei es weil der Lesekopf der Festplatte nicht so viel wandern muss falls der Lesevorgang in File, Read unterbrochen wird (msgbox) und auch andere Programme auf die Festplatte zugreifen.
Irrational, aber jeder hat so seine Macken
Thalon _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
garry
Anmeldedatum: 25.10.2005 Beiträge: 396 Wohnort: switzerland
|
Verfasst am: Di Jan 16, 2007 11:47 am Titel: |
|
|
| Zitat: | | aber jeder hat so seine Macken | Thalon, danke für die Profi scripts
sind keine Macken , sondern Optimierung.... |
|
| Nach oben |
|
 |
Thalon
Anmeldedatum: 25.10.2005 Beiträge: 1867 Wohnort: Österreich
|
Verfasst am: Di Jan 16, 2007 12:16 pm Titel: |
|
|
@garry
Ich glaub in nem anderen Thread (oder wars im englischen Forum? *grübel*) haben wir herausgefunden, dass die beiden Varianten sich geschwindigkeitstechnisch nichts geben.
Darum auch meine persönliche Macke. Wollte es nur der Vollständigkeit halber adden. Ist nicht besser als dein Code!
Thalon, der sehr gerne parsed... _________________ Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe |
|
| Nach oben |
|
 |
BEHRI
Anmeldedatum: 16.09.2006 Beiträge: 13 Wohnort: Hamburg
|
Verfasst am: Di Jan 16, 2007 4:45 pm Titel: |
|
|
Was eine kleine Anweisung doch ao alles an Kommunikation hervorruft ...
Danke allen die sich meiner Sache angenommen haben.
Habe wieder mal etwas dazu gelernt und außerdem festgestellt das in diesem Forum ne feine Menge Portion Humor ist ... schön !
Muß mich leider nun wieder dem ewigen LOOP des Aufräumenes und Saubermachens widmen ... ciao erstmal _________________ Es gibt fast immer Etwas zu verbessern ... |
|
| Nach oben |
|
 |
|