"Input past end of file" bei einem Agent

  • Hallo zusammen,


    ich habe einen Agent der eine Datei Splittet und die dann in eine DB hochläd... das ganze funktioniert auch klasse wenn man es per client startet... startet man den agent via Server dan bekomme ich die fehlermeldung "Input past end of file"...


    Jemand eine Idee wie was ich am Code ändern könnte?


    Ich hänge mal die Stelle vom Code an bei der es das Problem gibt:



    Die Fehlermeldung schmeißt er mir bei dem GET raus...



    EDIT:

    Auf der Console sieht es dann wie folgt aus:


    20.08.2007 23:22:38 Agent Manager: Agent printing: FileLength: 31361383(from8000000)
    20.08.2007 23:22:39 Agent Manager: Agent printing: FileLength: 23361383(from8000000)
    20.08.2007 23:22:39 Agent Manager: Agent printing: FileLength: 15361383(from8000000)
    20.08.2007 23:22:39 Agent Manager: Agent printing: FileLength: 7361383(from8000000)
    20.08.2007 23:22:39 Agent Manager: Agent 'Attacher Attacher' error: Input past end of file

    • Offizieller Beitrag

    FileLength ist eine Konstante?, warum liest Du die nicht mit FileLen aus?


    Ich denke
    Get #FileNumber , , tmpData
    Schießt über das Ziel (EOF) hinaus.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hi,


    nein, ich lese tatsächlich mit FileLen aus... Ich habe das nur so in das Beispiel gepackt damit man da vielleicht besser nachschauen kann wo es klemmt.


    Ich vermute auch das es über EOF hinaus schießt. Nur wie baue ich es um das dem nicht so ist... das komische ist ja das es lokal funktioniert. Nur via Server solche Probleme macht. Bei ein und demselben File :(.

    • Offizieller Beitrag

    zieh mal noch ein Byte ab oder verwende Fix.


    FileLength/2 bei einer FileLength von 7361383 ergibt irgend etwas mit ...,5.


    Gruß
    Dirk

    • Offizieller Beitrag

    naja mal nur so als Gedanke:
    In der Designer-Hilfe zu Ustring steht beim Parameter stringLen folgendes

    Zitat

    A numeric expression whose value is the number of characters to put in the returned string. LotusScript rounds stringLen to the nearest integer.


    7361383 / 2 = 3680691,5
    Für das Runden bei ...,5 gibt es leider 2 verschiedene Regeln.
    - es wird immer auf eine gerade Zahl ab- oder aufgerundet oder
    - es wird immer aufgerundet, gilt besonders für Messwerte.


    Beide Regeln müssten jetzt auf 3680692 runden und dies liegt außerhalb Deiner Datei. Welche Regel Notes jetzt beim Runden benutzt, kann ich leider nicht sagen.


    Gruß
    Dirk

  • Das ist eine Zip Datei (und enthält den Symantec Antivirus Scanner als Installationsmedium), ich muss damit aber auch Exe Dateien und andere Files "bearbeiten" können.

    • Offizieller Beitrag

    eine Möglichkeit ist es die Dateien zu Packen (ZIP, ARJ, RAR, usw.) und dort die Splittung einzustellen. Von den Tools gibt es CommandLine-Versionen.


    Du halbierst die FileLen, weil Dir Ustring ein doppeltbyte String zurückgibt. Lass mich mal suchen, irgendwo hatte ich auch schon das Problem und ich habe ne Weile gebraucht, bis ich das letzte Byte weg hatte.


    Gruß
    Dirk

    • Offizieller Beitrag

    so ich glaube dies war der Test


    Normalerweise würde die Datei im Binärformat so aussehen
    [color=CC0000]41 00 42 00 43 00 44 00 ... 89 00 90 00[/color]
    Durch die For Schleife wird Chr(0) immer wieder überschrieben, so dass die Datei so aussieht
    [color=CC0000]41 42 43 44 45 ... 89 90 00[/color]


    Ich habe damals MP3-Dateien ID3v1 Tags lesen und schreiben müssen. Da habe ich dann mit Seek und Input$ gearbeitet. Dort muss dann nicht mehr das doppeltbyte-Problem beachtet werden.


    Gruß
    Dirk


    %edit
    Schreiben funktioniert dann auch nicht mit Put sondern mit Print. Das nächste Problem, wenn Du die Daten im Notes weiterverarbeiten willst ist eine ASCII <-> ANSI umwandlung.

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • weiterverarbeiten muss ich die Daten nicht...


    nur:


    1. Splitten
    2. anhängen
    3. übertragen
    4. auspacken
    5. zusammenbauen


    ... das war es auch schon... die DB macht noch einiges mehr, aber was die Files angeht war es das...