WinINet

  • Guten Tag :)
    ich hab ein Problem unzwar,
    es wird ein log (.html) angelegt auf dem pc gespeichert, und auf einen FTP-Server gespeichert,
    beim nächsten beenden soll die alte html datei vom ftp server gedownloaded werden und die mit dem neuen log (aufem pc) verglichen werden, und danach was was neu ist ergänzt werden und wieder geuploaded werden
    (es soll NICHT, einfach althtml + neuhtml gespeichert werden
    es soll NICHT, einfach die neue mit der alten überschreiben, da der alte log auch gelöscht sein könnte)

    Spoiler anzeigen
    [autoit]

    Dim $user = 'USER'
    Dim $pwd = 'PW'
    Dim $server = 'SERVER'
    Dim $port = 21
    Dim $searchfile = '\[' & @ComputerName & ']log.html'

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

    _WinINet_Startup()

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

    $InternetOpen = _WinINet_InternetOpen()

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

    $InternetConnect = _WinINet_InternetConnect($InternetOpen, $INTERNET_SERVICE_FTP, $server, $port, 0, $user, $pwd)

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

    $searchresult = _WinINet_FtpFindFirstFile($InternetConnect,$searchfile)

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

    If Not @error Then
    _WinINet_FtpGetFile($InternetConnect, $searchfile, $oldlog)
    EndIf

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

    $alt = FileRead($logold)
    $neu = FileRead($log)

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

    FileWrite($log, $alt & @crlf & $neu)

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

    _WinINet_FtpPutFile($InternetConnect, '\[' & @ComputerName & ']log.html', $searchfile)

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

    _WinINet_InternetCloseHandle($InternetConnect)
    _WinINet_InternetCloseHandle($InternetOpen)
    _WinINet_Shutdown()

    [/autoit]

    so funktionierts nicht...

  • Warum benutzt du denn nicht einfach die FTPEx.au3?
    _FTP_FilePut wäre dann nämlich geeignet für dich. Die se Funktion lädt eine Datei auf einen FTP Server und falls die Datei dort schon existiert, wird sie überschrieben, falls nicht, wird einfach eine neue angelegt.

  • das ist ja der eine "es soll NICHT" punkt,
    er soll ergänzt werden, und ich weiß keine andere möglichkeit wie download, hinzufügen, upload
    weißt du zufällig wie das am einfachsten geht?

  • Warum eigentlich nicht?
    Das frage ich mich.

    Mit der Methode von Cheater Dieter geht es einfach und schnell.

    MfG Aero

  • Eine genauere Beschreibung dessen, was du eigentlich machen willst, wäre sehr hilfreich. Nach welchem Muster sollen denn neue Sachen ergänzt werden, ist das überhaupt nötig (werden andere Dinge gelöscht)? Wie ist diese Datei aufgebaut? Wpher soll ein Programm wissen, was wo ergänzt werden muss? Und die FTPEx.au3 kannst du, auch wenn du nicht die Datei einfach ersetzen willst, verwenden. Das ist einfach übersichtlicher und einfacher.

  • also es wird ein datum ([2011.10.28 16:40:44]) angegeben, das aktuelle natürlich, danach könnte man doch sortieren? ich kenn mich da garnicht aus
    es werden also öfters uhrzeiten notiert, beim ende soll die version die aufem ftp speicher liegt gedownloaded werden, und alles was neu ist, in die reinkopiert werden (nicht alles, nur was neu ist) da diese datei im temporären speicher ist, kanns sein das die der user löscht, deswegen sollen die datein nicht ersetzt sondern ergänzt werden
    aufgebaut: uhrzeit in [ ] eckigen klammern und danach kurzer text..
    danke soweit

  • ich rate mal das das wieder was mit arrays zu tun hat...
    die ich wiederrum nicht kann, mehrfach versuch aber ich bekomms nicht hin..
    hats was mit arrays zu tun?

  • Zitat

    hats was mit arrays zu tun?


    Eventuell... Du kannst auch soviele Vairablen mit unterschiedlichen Namen im Voraus deklarieren wie du benötigst um alle deine Einträge speichern zu können.
    Oder, du gehst den effizienteren Weg und lernst mit Arrays zurechtzukommen. Arrays sind nicht kompliziert, ihr lasst euch alle bloß zu leicht einschüchtern ^^. Schon BugFixs Array Tutorial gelesen (siehe seine Signatur)?

  • ok, also der anfang geht, aber sobalds weitergeht werd ich durcheinander, da weiß ich auch die sachen nicht auswendig..

    [autoit]

    $arSplit = StringSplit($logold, '.' and ':' and ' ')

    [/autoit]


    wenn das so geht, dann hab ich die einzelnen zahlen oder wie soll ich das anfangen?

  • Zitat

    wenn das so geht, dann hab ich die einzelnen zahlen oder wie soll ich das anfangen?


    Wer weiß... Es geht allerdings leider nicht. Logische Verknüpfungen im Delimeter Parameter von Stringsplit machen absolut keinen Sinn. Ich denke da müsstest du eher StringRegExp verwenden, was allerdings nicht ganz einfach ist. Ich hab leider im Moment selber zu viel um die Ohren um ein Pattern zusammenzuschustern.

  • wann hättest du zeit für da genauer drauf einzugehen, bzw gaaanz genau rauszugehen
    ich weiß jetzt garnicht wie/was ich das machen soll, und ich finde auch nichts der art in der suchfunktion
    mfg danke

  • Am einfachsten kann man dir helfen wenn du mal eine alte und eine neue dieser Log Dateien als Dateianhang hier postest (packs in ne zip Datei). Was den Rest angeht stimme ich allen anderen hier zu. Benutz die ftp Funktionen der ftpex.au3, lad dir das alte log als oldhtml runter, mach deinen Datenabgleich, erzeuge die neue Datei, und lade die neue Datei dann hoch und überschreib dir das alte log auf dem FTP. Beim Datenabgleich liest du am besten beide Dateien in jeweils ein Array mit


    [autoit]


    #include <file.au3>
    dim $aOld
    dim $aPC
    _filereadtoarray("dateipfad1",$aOld)
    _filereadtoarray("dateipfad2",$aPC)

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

    $aNew = vergleich($aOld,$aPC)
    _filewritefromarray("dateipfad3",$aNew); siehe Hilfe

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

    ; und dann noch den ftp upload der neuen Datei (dateipfad3) die wir lokal gespeichert haben...

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

    func vergleich($aOld,$aNew)

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

    ;... hier vermutlich ne for Schleife welche die Arrays durchgeht
    ;... dazu müssten dann die Arraygrößen noch berücksichtigt werden
    ;... und es muss ein drittes Array $Ergebnis mit passender Größe angelegt werden (redim wird evtl benötigt, siehe Hilfe)

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

    return $ergebnis
    endFunc

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

    Sofern die HTML Datei brauchbare Zeilenumbrüche hat biste damit schon fast am Ziel. Du musst dann nur noch jeden Eintrag beider Arrays auf Gleichheit prüfen und die Arrays dann ab dem Index zusammenfügen wo es Unterschiede gibt. Genaueres kann man aber ohne Beispieldateien schlecht sagen.

  • Also hier ein alter und ein neuer log

    ALT

    NEU

    das obere bis [#[ Log : ]#], soll nur ganz am anfang stehen, und dann halt immer nur was ganz neu ist, ergänzt werden