Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Sinnige LOOP Anweisung zwecks Stapelverarbeitung

 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
BEHRI



Anmeldedatum: 16.09.2006
Beiträge: 13
Wohnort: Hamburg

BeitragVerfasst am: Mo Jan 15, 2007 10:57 pm    Titel: Sinnige LOOP Anweisung zwecks Stapelverarbeitung Antworten mit Zitat

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 Very Happy

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
Benutzer-Profile anzeigen Private Nachricht senden
BoBo
Gast





BeitragVerfasst am: Mo Jan 15, 2007 11:15 pm    Titel: Antworten mit Zitat

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

BeitragVerfasst am: Mo Jan 15, 2007 11:25 pm    Titel: Welch schnelle Reaktion ...-) Antworten mit Zitat

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 Smile)



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
Benutzer-Profile anzeigen Private Nachricht senden
garry



Anmeldedatum: 25.10.2005
Beiträge: 396
Wohnort: switzerland

BeitragVerfasst am: Mo Jan 15, 2007 11:29 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
BoBo
Gast





BeitragVerfasst am: Mo Jan 15, 2007 11:45 pm    Titel: Antworten mit Zitat

Zitat:
nur DEINER ist kürzer
Shocked Aha. Laughing
Nach oben
Thalon



Anmeldedatum: 25.10.2005
Beiträge: 1867
Wohnort: Österreich

BeitragVerfasst am: Di Jan 16, 2007 11:40 am    Titel: Antworten mit Zitat

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 Smile
Mit 20 Jahren sollten man ja doch schon erwachsen sein, von daher glaube ich nicht dass das viel ausmacht Wink
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 Laughing

Thalon
_________________
Mein Motto: Hilfe zur Selbsthilfe!
Teildeutsche Hilfe (CHM)!! und Deutsche Online-Hilfe
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
garry



Anmeldedatum: 25.10.2005
Beiträge: 396
Wohnort: switzerland

BeitragVerfasst am: Di Jan 16, 2007 11:47 am    Titel: Antworten mit Zitat

Zitat:
aber jeder hat so seine Macken
Thalon, danke für die Profi scripts
sind keine Macken , sondern Optimierung....
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thalon



Anmeldedatum: 25.10.2005
Beiträge: 1867
Wohnort: Österreich

BeitragVerfasst am: Di Jan 16, 2007 12:16 pm    Titel: Antworten mit Zitat

@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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
BEHRI



Anmeldedatum: 16.09.2006
Beiträge: 13
Wohnort: Hamburg

BeitragVerfasst am: Di Jan 16, 2007 4:45 pm    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Skripte & Funktionen Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de