Fehler in while/endwhile?

Jetzt mitmachen!

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

  • :respekt: ... ist bestimmt ein Mountainbike! :haha03:

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

  • Jetzt habe ich schon wieder so ein Problem. Jedes Mal wenn ich compiliere und linke stürzt das Produkt direkt nach dem Start ab. Ich habe auch ältere Sources probiert, die definitiv laufen, aber auch die schmieren ab. Ein Neustart hat nichts gebracht. -.-

    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 habe neugestartet, verschiedene Runtimes probiert und den Source mit Breakpoints gefüllt. Es hat nichts geholfen. Erst bricht es bei

    Code
    w2000%=If(Val($WinVer)>=5,1,0)

    dann bei

    Code
    td&=Import($ProgDir+"xtaskdlg.dll","TD_")

    ab. Es bricht da immer ab. :(
    Funktion Import:

    Code
    proc Import
    Parameters p$,q$
    if FileExists(p$)
    Return ImportDLL(p$,q$)
    else
    Messagebox("Eine benötigte Datei ("+GetFile(p$)+") konnte nicht gefunden werden. Bitte laden Sie dieses Programm erneut herunter!","Fehler",16)
    ende 1
    endif
    endproc


    GetFile und Ende sind erstmal nicht von Belang...

    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

  • ... und wenn Du jetzt aus diesen Bruchstücken einen kurzen lauffähigen Code bastelts, kann ich mich der Sache annehmen. ;)


    Gruß
    Roland

    (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
    AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


    http://www.xprofan.de

  • Das ist ja das Problem: Es ist nur bei dem einen Source. Und der ist 4000 Zeilen groß. Wenn ichs lauffähig habe, dann würde es ja gehen. Ich habe Backups von allen Builds vorher, aber, und das obwohl die compiliert und ausgeführt werden konnten, die sind auch nicht mehr ausführbar. :(

    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

  • Gott, bin ich dumm.


    Es tut mir leid, dass ich hier wieder alle in Aufregung versetze. Ich hab mit Franks ZitronenEditor rumgespielt und die gesamten globalen Variablen auskommentiert. Und natürlich sind die immer noch auskommentiert. :D

    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

  • Und mir ständig. :(

    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

  • Zu deinem Anfangsproblem mal folgender Quellcode:

    Code
    Declare Test#
    dim test#, -11
    CLS
    Print Test#
    Print SizeOf(Test#)
    Print String$(Test#, 0)
    WaitInput



    roland: XProfan liefert bei mir (älter XProfan Version) merkwürdigerweise eine Adresse zurück, die man auch wieder freigeben kann. Ist das weiterhin so?
    Was ist das für eine Adresse??? Der Speicherbereich scheint ja bereits von anderen Sachen belegt zu sein.

  • Hallo Andreas,


    der DIM-Befehl erwartet als zweiten Parameter einen Integerwert. Der von Dir genutzte negative Wert wird als vorzeichenloser Integer (32 Bit) interpretiert. Wenn bei älteren XProfan-Versionen also ausreichend GB frei sind, kann dieser Befehl sogar funktionieren.
    Unter aktuellem XProfan X2 kommt allerdingas die Meldung, dass soviel Speicher nicht zur Verfügung steht, da hier ein Literal mit Integerwert als Int64 zwischengespeichert wird und somit den freien Speicher bei Weitem übertrifft.
    (Natürlich wäre es auch in früheren Versionen möglicherweise geschickter, bei Werten kleiner Null eine entsprechende Fehlermeldung auszugeben. Ich muss zugeben bei dieser - und auch einigen anderen Funktionen - nicht jeden möglichen Schwachsinn oder Tipp-Fehler im Vorraus bedacht zu haben. Bei den Fehlermeldungen in XProfan gibt es sicher noch Luft nach oben.)


    Ansonsten: Bei aktuelleren XProfan-Versionen wird der zur Verfügung gestellte Speicher mit 0 initialisiert. Das war allerdings nicht immer so. In dem Fall standen da halt Zufallswerte drin, je nachdem was ein anderes Programm, dass den Speicher zuvor nutzte, reingeschrieben hatte. Bei der Freigabe des Speichers wird er in der Regel ja nicht überschrieben.


    Gruß
    Roland

    (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
    AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


    http://www.xprofan.de

  • Ist eigentlich kein Schwachsinn. Es kann immer passieren, dass man eine Bereich nach einem zurückgelieferten Wert dimensionieren muss und der plötzlich ganz unerwartet negativ ist. Wenn bei der Sache kein Fehler passiert, ist das nicht so schlimm. Ich habe aber eher den Eindruck, dass da gar kein Speicher zugewiesen wird - jedenfalls sehe ich das bei mir im Taskmanager nicht - kann auch sein, dass ich da blind bin...
    Meine Bedenken, da ich unter ähnlichen Fehlern wie Jac leide: Wenn da kein Speicher zugewiesen wird, was wird denn dann freigegeben?

  • Mmmh... Ich wage es mal, dir ganz gewaltig zu widersprechen. Obwohl ich eine Adresse bekomme, wird dort bei mir kein Speicher reserviert. Wird kein Speicher reserviert, ist die Wahrscheinlichkeit, dass keine zeitweisen Fehler passieren, gleich Null.

  • Wie gesagt: Im aktuellen XProfan tritt das Problem nicht mehr auf.


    Und wenn kein Speicher reserviert wird, wird bei DISPOSE auch keiner freigegeben. Allerdings würde dann beim Zugriff auf den vermeintlich reservierten Speicher eine Fehlermeldung erfolgen.


    Gruß
    Roland

    (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
    AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


    http://www.xprofan.de

  • Zitat von AHT;861260

    Es kann immer passieren, dass man eine Bereich nach einem zurückgelieferten Wert dimensionieren muss und der plötzlich ganz unerwartet negativ ist.


    XProfan versucht zwar, dem Programmierer möglichst viel "Verwatungskram" abzunehmen, aber in einem solchen Fall kann es prinzipiell nicht schaden, im Programm den zurückgegebenen Wert selbst auf < 0 zu überprüfen.
    (In jeder anderen Programmiersprache müsste er dies auch tun!)


    Gruß
    Roland

    (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
    AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


    http://www.xprofan.de

  • Es ist auf jeden Fall nicht dein Kram. Ich bin nur auf der Suche nach einer Fehlerursache, die mich schon seit ein paar Jahren verfolgt. Ich möchte gerne die Ursache finden, das ist alles.

    PS: Man kann trotzdem in den Bereich schreiben - und dann passieren auch Fehler! Ob XProfan unter bestimmten Umständen da trotzdem was freigibt, kann ich nicht mit Sicherheit sagen. Das hängt davon ab, wie du das umgesetzt hast. Von dem, was ich bislang da sehe, würde ich sagen: "Du hast Recht!"

    Zitat


    XProfan versucht zwar, dem Programmierer möglichst viel "Verwatungskram" abzunehmen, aber in einem solchen Fall kann es prinzipiell nicht schaden, im Programm den zurückgegebenen Wert selbst auf < 0 zu überprüfen.
    (In jeder anderen Programmiersprache müsste er dies auch tun!)


    Andere Programmiersprachen weisen bei der Ausführung im Debugger auf den Fehler hin. Ich bin deshalb erst darauf gestoßen.
    Den ersten Teil deiner Aussage kann ich nur doppelt unterstreichen. Ich hatte bislang immer nur auf 0 geprüft und nicht damit gerechnet, dass dort an der speziellen Stelle im Programm auch Werte kleiner 0 auftauchen können. Vielleicht hängt Jacs Code ja auch bei so einer Sache...

    Edit:
    Nochmal zur Bestätigung von mir... Das von mir hier angesprochene Problem ist in neueren XProfan Versionen gefixt - auch in der von Jac.