Fehlermeldung für angebliches endwhile ohne while

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

  • Ich steh wieder mal vor einem Rätsel. Mein Programm lässt eine Schleife ca. 55000 mal durchlaufen (die Anzahl wird später auch variieren. Nach mehr als 20000 Durchläufen (beim letzten Test ca. 21000, mal bei 28000...) kommt die Fehlermeldung, dass ein endwhile ohne while/whilenot/whileloop im Programm ist. Das kann aber nicht sein. Meine Proc beinhaltet 2 Schleifen (eine in der anderen), 2x whileloop, 2x endwhile. Ich habs mit For probiert, da kommt die Meldung mit EndFor. Ich kann leider nicht meine Proc posten, weil die ohne den Rest des Programms nicht funktioniert. In der Proc läuft auch 1 Timer (mittels SetTimerA-API) und eine Funktion, die in der Proc aufgerufen wird, benutzt Callbacks. Ich habs ohne den Timer probiert, gleiches Ergebnis. Keine Breaks.
    Es gab mal Probleme mit While, Roland hat aber geschrieben, dass die jetzt behoben seien. Kann da trotzdem noch ein Wurm drin sein?

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Riecht nach Speicherleck, oder Ressourcen von Windows gehen aus. Ist es nach einem kompletten Neustart des Computers besser?

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • Nö. Aber Speicherleck könnte es wirklich sein. Seufz, das wird umfangreich.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Vielleicht nicht. KernelLeak schon mal ausprobiert?

    Nee. Sagt mir nix. Hilf mir kurz auf die Sprünge.


    Ich hatte das Problem schon in einem anderen Projekt. Damals hatte Roland wohl aber einen Fehler in XProfan X2 gefunden und behoben. Jetzt habe ich noch was kurioseres entdeckt:
    Ich habe eine Funktion, die 1 (Erfolg) oder 0 (Fehler) zurückgibt. Diese ruft eine API auf, FTPGetFile. Der Rückgabewert wird direkt zurückgegeben. Also in etwa

    Code
    result%=FTPGetFile(...)
    Return result%

    Jetzt kam immer mal 0 zurück, obwohl die Datei runtergeladen wurde. Ich dachte schon, ok, die API hat halt 0 zurückgegeben, aus irgendeinem Grund. Pustekuchen: Das Ergebnis ist immer 1. Ich habe result% direkt nach Empfang des Ergebnisses ausgeben lassen und dann direkt von der Funktion, die diese Unterfunktion aufgerufen hat, also in etwa

    ...in unvollständiger, verkürzter Form. Erstaunlicherweise wird immer mal "1 0" ausgegeben, was eigentlich nicht sein kann...

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Ich schau gleich rein. Ich hab noch etwas experimentiert und beim letzten Durchlauf folgendes festgestellt:
    Der Aufbau ist in etwa so:

    Code
    whileloop ...
    'Vorbereitung
    whileloop ...
    'Tu etwas
    endwhile
    endwhile

    Der Fehler trat auf, nachdem die innere Schleife nach genau 56591 Durchläufen verlassen wurde (so sollte es sein). Es ist als ob mein Programm vergessen hat, dass es noch in der anderen Schleife war...

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Also, zur WhileLoop - Schleife kann ich nur sagen, daß sie
    ordnungsgemäß funktioniert. Habs jetzt grad mal bis in
    den 2stelligen Millionenbereich sogar mit Aufruf einer Proc
    probiert.


    Dauert zwar, aber geht bis zum Ende korrekt durch.

  • Also, zur WhileLoop - Schleife kann ich nur sagen, daß sie
    ordnungsgemäß funktioniert. Habs jetzt grad mal bis in
    den 2stelligen Millionenbereich sogar mit Aufruf einer Proc
    probiert.


    Dauert zwar, aber geht bis zum Ende korrekt durch.

    Ich habe über 6 Millionen Aufrufe probiert. Aber das Problem könnte die Verschachtelung sein. Ich lasse mein Programm gleich nochmal ohne echten Download laufen (normaler Ablauf, nur die Funktion zum Download springt gleich zurück). Die Vorbereitung dauert leider etwa 45 Minuten.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Taskmanager öffnen. Auf die verbratenen Kernelhandels und den Speicher schauen. Bei laufend ansteigenden Handels helfen dir die zwei von mir verlinkten Programme weiter (auch wenn es ein Fehler in XProfan sein sollte).
    Mit KernelLeak kannst du feststellen, welche Art von Handels nicht geschlossen werden. Mit AHTHandles erhälst du weitere Infos zu den Handels und kommst eventuell auf das genaue Objekt.

  • Test läuft. Die Handle sinds nicht, ist von 325 auf 327 gesprungen und stabil...

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Noch ein Nachtrag :
    Ich hatte mal vor Monaten ein ähnliches Problem. Dabei hatte ich
    einen Quellcode-Teil aus einem der 3 Foren hier in den Profaneditor
    kopiert. Nur war das kein Code zwischen den Code-Tags, sondern
    auf der Website als HTML-Text.


    Da wunderte es mich auch, daß ich einen solchen Fehler bekam,
    obwohl die Schleifenkörper richtig in meinem Quellcode standen.
    Nach ewigem Suchen hatte ich dann festgestellt, daß die Leerzeichen
    vor dem Code (wegen Einrückung) gar keine richtigen Leerzeichen waren
    und somit der Interpreter den Befehl / EndWhile gar nicht erkannte.


    Erst eine Nachbearbeitung mit dem Profaneditor (mit Backspace und
    Einrücken mit der Leertaste) brachte den Erfolg.


    Ist nur mal als Hinweis. Man kann ja sämtliche Möglichkeiten in
    Betracht ziehen.

  • Danke für den Hinweis. Der Code ist komplett von mir und ich benutze keine Einrückungen, also fällt das schonmal flach. Mein neuester Test hat was ganz kurioses ergeben:
    Ich hab ja von whileloop auf For umgestellt. Das macht im Prinzip auch keinen Unterschied, die Fehlermeldung kam wieder. Kurioserweise ist meine Variable auf loop2&, die in der Funktion mit der For-Schleife definiert ist (und auch nur dort) beim Wert 15578 stehen geblieben. Dabei ist die Schleife nachweislich mehr als 49000 Mal durchlaufen worden. Da der Wert korrupt war wurde auch immer wieder versucht die gleiche Datei zu übertragen (die, mit der Nummer loop&). Irgendwann ist die Schleife dann verlassen worden (kein Break) und die Fehlermeldung kam beim 2. For (äußere Schleife). Das kann ich mir wirklich nicht erklären, vor allem nicht, dass die Variable der For-Schleife plötzlich "hängt".

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Ist loop2& bei dir mehrmals in Verwendung?
    Wo wird die Variable declariert? Global oder lokal?

    Lokal deklariert und nur in der Schleife verwendet. Nur ausgelesen (von FOR mal abgesehen). Die äußere Schleife nutzt eine Variable namens loop1&.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • Warum benutzt du denn nicht die Systemvariable &LOOP ?
    Roland hat das schon vor längerer Zeit korrigiert, damit
    es auch in ineinander geschachtelten WhileLoop - Schleifen
    funktioniert bzw. &LOOP den richtigen Schleifenwert hat.

    Damit hatte es angefangen. Das Problem besteht da auch unverändert.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net

  • So, erneut getestet und wieder erhöht sich der Wert der For-Variable nicht mehr (diesmal bei ~5800). Ich habs wieder in WhileLoop geändert und lasse es jetzt erneut laufen...

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/108TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    TerraMaster F4-421 mit 28TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 6 8GB/256GB
    jacdelad.bplaced.net