textdatei durchsuchen

  • Hi Leute,

    so bin gerade mal ein paar std in der autoit-welt unterwegs und schon stellen sich mir ein paar fragen =) leider hat mich die suche auch nicht wirklich weiter gebracht darum zähle ich jetzt mal auf eure hilfe ;)

    also ich würde gerne eine textdatei auslesen und nach einer bestimmten zeile suchen die sieht inetwa so aus :

    Port=TCP10.129.0.9:23,7500,7500

    das port=TCP ist immer gleich danach kommt eine ip die immer unterschiedlich ist und genau diese möchte ich auslesen und weiterverarbeiten können.
    Nur habe ich überhaupt keinen plan wie ich das anstelle ich hoffe ihr könnt mir da helfen.

    besten dank schon mal

    gruß

    head

  • [autoit]

    #include "File.au3"
    Dim $lRead
    _FileReadToArray( "File.txt", $lRead )
    For $lNum = 1 to $lRead[0]
    If StringLeft( $lRead[$lNum], 5 ) = "PORT=" Then $lZeile = $lNum
    Next
    MsgBox( 0, "", $lZeile )

    [/autoit]

    Einmal editiert, zuletzt von Daniel W. (24. November 2006 um 18:08)

  • hey ertmal danke ihr beiden für die schnelle hilfe !

    hatte leider erst heute zeit mich darum zu kümmern. Die erste lösung habe ich auch schon fast ans laufen bekommen stehe mit arrays noch etwas aufm kriegsfuß muss mich da ertmal reinlesen ....

    wenn ich die erste lösung richtig verstehe dann

    [autoit][/autoit][autoit][/autoit][autoit]

    #include "File.au3"
    Dim $lRead
    _FileReadToArray( "sales.ini", $lRead )
    For $lNum = 1 to $lRead[0]
    If StringLeft( $lRead[$lNum], 8 ) = "PORT=TCP" Then $lZeile = $lNum
    Next
    MsgBox( 0, "", $lZeile )

    [/autoit]

    wird die ini-datei in ein array geschrieben und dann durchsucht bis es eine 1 nach dem text PORT=TCP findet ??!! sehe ich das richtig ?

    meine zeile die ich suche sieht in etwa so aus

    Port=TCP10.129.0.9:23,7500,7500

    das script gibt mir jetzt aber nur 101 aus ??

    Das verstehe ich nicht ganz wenn dann doch wenigstens 10.1 ??

    Im prinzip müsste ich das file solanage durchsuchen bis ich in der Zeile PORT=TCP steht. Diese Zeile packe ich in einen string schneide die ersten 8 zeichen weg und lese weiter bis ich den : erreicht habe und den rest schmeiß ich auch weg somit habe ich dann nur die ip ?!

    Richtig? oder ist der ansatz dumm ?

    vielen dank für die hilfe

    head

    • Offizieller Beitrag

    Hallo und :willkommen: im forum :) !

    Also insgesamt funktioniert es dann so:

    [autoit]

    #include "File.au3"
    Dim $lRead
    _FileReadToArray( "sales.ini", $lRead )
    For $lNum = 1 to $lRead[0]
    If StringLeft( $lRead[$lNum], 8 ) = "PORT=TCP" Then $lZeile = $lNum
    Next
    MsgBox( 0, "", StringTrimLeft($lRead[$lZeile],8) )

    [/autoit]

    Mfg Spider

  • krass wie schnell man hier eine antwort bekommt...

    solangsam verstehe ich das ganze glaube ich =) habe mir gerade mal die hilfe zu strings angeschaut...

    Ich habe ja jetzt noch das problem, dass ich vor dem doppelpunkt den string trimmen muss. aber leider kann ich nicht einfach die zeichen zählen da die ip ja auch mal xxx.xxx.xxx.xxx aussehen kann sprich es sind mal mehr mal weniger stellen... gibts ihrgendwie eine möglichkeit im string zu suchen? bzw zählen bis die stelle : kommt und dann weiß ich ja wo ich abschneiden muss.

    Habe gerade noch gerade noch mit stringreplace versucht aber das scheint wohl nicht so zugehen wie ich mir das vorstelle...

    btw.

    gibt eigentlich gute bücher?
    Und mit welcher sprache kann man autoit am besten vergleichen.
    Gibts sonst noch gute tutorials oder hilfen weil die hilfereferenz ist ja nicht soo das gelbe vom ei....

    besten dank +gruß

    head

    • Offizieller Beitrag

    StringSplit könnte das sein, was du suchst.

    Bücher gibt es nicht
    Tutorial wächst gerade hier: http://huggy.pytalhost.com/index.php?title=Tutorial
    Und die Hilfe ist unheimlich hilfreich. Man muss halt nur wissen, nach was man sucht ... Dann gibt es gute Syntax, Hinweise und Beispiel.

    Vergleichbar ist AutoIt mit BASIC.

    peethebee

  • :klatschen: es geht =)

    [autoit]


    $temp = StringTrimLeft($lRead[$lZeile],8)
    $temp2 = StringSplit($temp, ':', 1)

    [/autoit]

    stringsplit war richtig

    ich danke euch allen

    echt eine coole community hier

    danke nochmal und einen schönen abend noch

    gruß

    head