Hallo zusammen,
Ausgangssituation: Ich habe ein Textfile. Darin stehen lauter Namen, Zahlen und sonstiger kram. Immer getrennt durch ein "," (ohne "") ich benötige aus dem Textfile alle nummern die mit 125, 225 oder 332 anfangen und eine bestimmte länge haben. die längen sind 10, 11 und 10 Zeichen.
Das was ich könnte wäre Zeile für Zeile per Parsen prüfen.
Dann per RegExMatch(Var1, "((125)........)", Var2) und prüfen der Var2 auf Inhalt prüfen.
Ich glaube es gibt einen leichteren weg. Oder?
Für Hilfe bin ich wie immer sehr dankbar!
MfG
fump
Text nach bestimmten inhalten durchsuchen
Moderator: jNizM
Re: Text nach bestimmten inhalten durchsuchen
RegExMatch(Haystack, "\D((125|225|332)\d{7,9})\D", OutputVar) oder so ähnlich (ich nehme an, es soll "10, 11 und 12" heißen)?
Re: Text nach bestimmten inhalten durchsuchen
Die längen der Nummern liegen bei der 125 bei 10 Zeichen bei der 225 bei 11 Zeichen und bei der 332 wieder bei nur 10 Zeichen.
Re: Text nach bestimmten inhalten durchsuchen
Code: Select all
RegexMatch(In,"\D(125\d{7}|225\d{8}|332\d{7})\D",Out)
Recommends AHK Studio
Re: Text nach bestimmten inhalten durchsuchen
Code: Select all
;============================================================================
; Setzen der Globalen Variablen:
;============================================================================
; how the script detects its working-dir depends on the start method
; if AHK isn't installed (and we only use drag and drop) we have to set
; the working-dir directly, otherwise additional file won't be found
SetWorkingDir %A_ScriptDir%
; also if AHK isn't installed its necessary to set the default include
; path, otherwise the include files won't be found
#Include %A_ScriptDir%
; Recommended for new scripts due to its superior speed and reliability.
SendMode Input
; changes how long the script keeps trying to access the clipboard when the
; first attempt fails [ms]
#ClipboardTimeout 1000
; sync for physical key state. Affects the behavior of hotkey modifiers:
; CTRL, ALT, WIN, and SHIFT. If time in ms has not passed, re-activates
; the initial state.
#HotkeyModifierTimeout 100
; sets the maximum number of keyboard and mouse events displayed by the
; KeyHistory window. You can set it to 0 to disable key history.
#KeyHistory 500
; max memory for variables in MB. Min 1 MB, e. g. to store an image in
; 1280x1024 pixel with 3 bytes/pixel 4 MB will be needed and for full HD
; in 3 bytes/pixel 7 MB.
#MaxMem 512
; avoids checking empty variables to see if they are environment variables
; (recommended for all new scripts).
#NoEnv
; keeps a script permanently running (that is, until the user closes it
; or ExitApp is encountered).
#Persistent
; determines whether a script is allowed to run again when it is already
; running [force|ignore|off].
#SingleInstance force
; Istall Keyboard Hook
#installKeybdHook
; Optimize workingspeed
SetBatchLines, -1
;============================================================================
; Aufbau GUI
;============================================================================
Gui, Main:New
Gui, Color, FFFFFF
Gui, +LastFound +HwndMainGUIHwnd
Gui, Add, Text, x12 y10 w190 h70 +Border +Center vDropFile,`n`nDatei hier ablegen...
Gui, Add, Text, x12 y90 w190 h15 , Doppelklick kopiert die markierte Zeile.
Gui, Add, CheckBox, x12 y110 w170 h15 +checked gAOTLabel, Always on top
Gui, Add, ListView, x12 y130 w190 h160 vLV1 HWNDh_LV1 +BackgroundD9E7FB Grid +AltSubmit -Multi,Ergebnis
Gui, Add, Text, x120 y292 w70 h15, Summe:
Gui, Add, Text, x12 y303 w100 h20 , Export Pfad:
Gui, Add, Edit, x12 y320 w190 h20 ,
Gui, Add, Button, x12 y340 w90 h30 , Pfad
Gui, Add, Button, x112 y340 w90 h30 , Export
Gui, Add, Button, x12 y380 w190 h30 gExitGui, Schließen
Gui, Show,h421 w216, Finder
WinSet, AlwaysOnTop, on
AOT:=1
Return
ExitGui:
GuiClose:
ExitApp
AOTLabel:
if (AOT=1)
{
WinSet, AlwaysOnTop, off
AOT:=0
}
else
{
WinSet, AlwaysOnTop, on
AOT:=1
}
Return
GuiDropFiles:
msgbox % A_GuiControl
Return
Kann mir jemand sagen warum das nicht geht?
Hab ich da was falsch gemacht?
Re: Text nach bestimmten inhalten durchsuchen
Es liegt offenbar an der Zeile:
Gui, Main:New
Edit: es scheint, dass wenn ein GUI per new initialisiert wird vor dem Gui welches die Datei erhalten soll, dieses dann die Datei nicht mehr annehmen kann.
Ich nehme daher an, dass das Standard verhalten ist.
Du solltest das Gui,Show.. vor das Gui,new stellen.
Gui, Main:New
Edit: es scheint, dass wenn ein GUI per new initialisiert wird vor dem Gui welches die Datei erhalten soll, dieses dann die Datei nicht mehr annehmen kann.
Ich nehme daher an, dass das Standard verhalten ist.
Du solltest das Gui,Show.. vor das Gui,new stellen.
Recommends AHK Studio
Re: Text nach bestimmten inhalten durchsuchen
Es steht nicht wirklich klar in der Hilfe, aber wenn Du einer Gui einen Namen gibst, brauchst Du auch die Option+Label.... GuiDropFiles funktioniert automatisch nur für Guis mit Nummer 1 oder ohne Nummer.
Re: Text nach bestimmten inhalten durchsuchen
Code: Select all
Init1:
Gui,Destroy
Gui,Main:new
Gui,Add,Button,x0 y0 w400 h133 gInit2,All Drops Disallowed
Gui,-Caption
Gui,Show
return
Init2:
Gui,Destroy
Gui,Main:new
Gui,new
Gui,Add,Button,x0 y0 w400 h133 gInit2,All Drops Allowed
Gui,-Caption
Gui,Show
return
Recommends AHK Studio
Re: Text nach bestimmten inhalten durchsuchen
Das mit dem +Label verstehe ich nicht ganz.
Ich muss der GUI keinen Namen geben. Mache es aber eigentlich immer.
Mal angenommen man schreibt ein Tool mit vielen Fenstern und irgendeins soll GuiDropFiles nutzen wie müsste man so eine GUI dann aufbauen?
Ich muss der GUI keinen Namen geben. Mache es aber eigentlich immer.
Mal angenommen man schreibt ein Tool mit vielen Fenstern und irgendeins soll GuiDropFiles nutzen wie müsste man so eine GUI dann aufbauen?
Re: Text nach bestimmten inhalten durchsuchen
@nnnik:
@fump2000:
Die Namen der Guilabel bestehen aus zwei Teilen, dem Guiprefix und dem Ereignisnamen. Für das Ereignis DropFiles ist der Ereignisname ebenfalls DropFiles. Für die nummerierten Guis gibt es Standardlabelnamen. Für ein Ereignis der Gui 1 (die Gui heißt auch dann 1, wenn man ihr weder einen Namen noch eine Nummer gibt), heißt das Defaultlabel GuiDropFiles, für die Gui Nummer 2 2GuiDropFiles. Als lexikos die Guinamen eingeführt hat, hat er anscheinend nicht daran gedacht, ihnen auch Standardlabel zuzuweisen. Deshalb funktioniert das nicht:Wie gesagt, Du musst die Labeloption nutzen:
Code: Select all
Init1:
Gui,Destroy
Gui,Main:new
Gui,Add,Button,x0 y0 w400 h133 gInit2,All Drops Disallowed
Gui,-Caption
Gui,Show
return
- Gui, Destroy -> versucht, die derzeitige default GUI oder die Gui 1 zu zerstören.
- Gui,Main:new -> erzeugt eine neue Gui mit Namen Main und macht sie zur default Gui.
- Gui,Add,Button,x0 y0 w400 h133 gInit2,All Drops Disallowed -> erstellt einen Button in der derzeitigen default Gui.
- Gui,-Caption -> entfernt Titelzeile und Rahmen der derzeitigen default Gui.
- Gui,Show -> zeigt die derzeitige default Gui an.
Code: Select all
Init2:
Gui,Destroy
Gui,Main:new
Gui,new
Gui,Add,Button,x0 y0 w400 h133 gInit2,All Drops Allowed
Gui,-Caption
Gui,Show
return
- Gui, Destroy -> versucht, die derzeitige default GUI oder die Gui 1 zu zerstören.
- Gui,Main:new -> erzeugt eine neue Gui mit Namen Main und macht sie zur default Gui.
- Gui,new -> erzeugt eine neue Gui mit der Nummer 1 und macht sie zur default Gui. Das vorherige Gui,Main:new ist damit sinnlos.
- Gui,Add,Button,x0 y0 w400 h133 gInit2,All Drops Disallowed -> erstellt einen Button in der derzeitigen default Gui.
- Gui,-Caption -> entfernt Titelzeile und Rahmen der derzeitigen default Gui.
- Gui,Show -> zeigt die derzeitige default Gui an.
@fump2000:
Die Namen der Guilabel bestehen aus zwei Teilen, dem Guiprefix und dem Ereignisnamen. Für das Ereignis DropFiles ist der Ereignisname ebenfalls DropFiles. Für die nummerierten Guis gibt es Standardlabelnamen. Für ein Ereignis der Gui 1 (die Gui heißt auch dann 1, wenn man ihr weder einen Namen noch eine Nummer gibt), heißt das Defaultlabel GuiDropFiles, für die Gui Nummer 2 2GuiDropFiles. Als lexikos die Guinamen eingeführt hat, hat er anscheinend nicht daran gedacht, ihnen auch Standardlabel zuzuweisen. Deshalb funktioniert das nicht:
Code: Select all
#NoEnv
Gui, Main:New
Gui, Show, w600 h400, Main
Return
MainClose:
GuiClose:
MsgBox, MainClose!
ExitApp
Code: Select all
#NoEnv
Gui, Main:New, +LabelMain ; oder +LabelGui
Gui, Show, w600 h400, Main
Return
MainClose:
GuiClose:
MsgBox, MainClose!
ExitApp
Re: Text nach bestimmten inhalten durchsuchen
Asche auf mein Haupt, lexikos hat natürlich nichts vergessen, man muss nur nachdenken:
Wenn das Standardlabel für Gui, 2:... 2GuiCLose heißt, heißt das Standardlabel für Gui, Main:... logischerweise MainGuiClose. Ich habe das nur lange nicht mehr so genutzt, und schon zu Zeiten, als es nur Guinummern gab, für die Guis mit Nummern <> 1 so gut wie immer die Option +Label verwendet.
Also: Ohne die Option +Label... ist es hier MainGuiDropFiles.
Wenn das Standardlabel für Gui, 2:... 2GuiCLose heißt, heißt das Standardlabel für Gui, Main:... logischerweise MainGuiClose. Ich habe das nur lange nicht mehr so genutzt, und schon zu Zeiten, als es nur Guinummern gab, für die Guis mit Nummern <> 1 so gut wie immer die Option +Label verwendet.
Also: Ohne die Option +Label... ist es hier MainGuiDropFiles.
Re: Text nach bestimmten inhalten durchsuchen
Man bin ich manchmal froh, dass ich GUIs so selten benutze.
Recommends AHK Studio
Re: Text nach bestimmten inhalten durchsuchen
Ja, jeder Mensch hat eigene Motivationen. Ich hätte nie mit AHK angefangen, wenn es nicht diese 'einfache' Art zur Erstellung von Guis bieten würde.
Re: Text nach bestimmten inhalten durchsuchen
Auch für mich war diese Eigenschaft der Grund mit AHK anzufangen.
ciao
toralf
toralf
Re: Text nach bestimmten inhalten durchsuchen
Der Grund für mich mit AHK anzufangen war der, dass man den Effekt den eine Änderung hat direkt sehen kann.
zumindest direkter als bei anderen Sprachen.
zumindest direkter als bei anderen Sprachen.
Recommends AHK Studio
Re: Text nach bestimmten inhalten durchsuchen
Soll ich noch Kaffee und Kuchen holen? HAHA
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
Re: Text nach bestimmten inhalten durchsuchen
Ich glaub das jemand bestimmtes noch Kekse hat.
Aber Kuchen wäre auch schön
Aber Kuchen wäre auch schön
Recommends AHK Studio
Re: Text nach bestimmten inhalten durchsuchen
Ich kann ein paar Donuts beisteuern. Richtig guten Kuchen gibt es 'hier' nicht.
ciao
toralf
toralf
Re: Text nach bestimmten inhalten durchsuchen
Ich finde gerade die GUI Erstellung ist mit AHK so einfach wie genial. Ich kann sogut wie alles realisieren und habe schon sehr komplizierte (verschachtelte) GUIs erstellt.
AHK ist die erste Sprache mit der ich in Kontakt kam und bisher habe ich mich an keine andere herangewagt.
Vielen Dank für die Hilfe!
AHK ist die erste Sprache mit der ich in Kontakt kam und bisher habe ich mich an keine andere herangewagt.
Vielen Dank für die Hilfe!
Re: Text nach bestimmten inhalten durchsuchen
Also das File in dem gesucht werden soll hat solchen Inhalt:
Nutze ich nun RegexMatch(A_LoopField,"\D(125\d{7}|225\d{8}|332\d{7})\D",Out) bleibt Out leider immer leer... eigentlich sollte im 2. durchgang als Ergebnis in Out 1256989573 stehen.
Ich bekomms leider nicht selber hin. Die Optionen für RegExMatch verwirren mich sehr.
Könnte mir bitte jemand auf die Sprünge helfen?
Ich parse nach , und erhalte so im A_LoopField immer den Teil in dem ich nach den Nummern suchen will.+RECHNUNGS-NR.","RM351256989573","","","MAIER MONIKA"
Nutze ich nun RegexMatch(A_LoopField,"\D(125\d{7}|225\d{8}|332\d{7})\D",Out) bleibt Out leider immer leer... eigentlich sollte im 2. durchgang als Ergebnis in Out 1256989573 stehen.
Ich bekomms leider nicht selber hin. Die Optionen für RegExMatch verwirren mich sehr.
Könnte mir bitte jemand auf die Sprünge helfen?
Who is online
Users browsing this forum: No registered users and 43 guests