Deutsch
Bugs und vermeintliche

Seltsames Verhalten bei Parameterübergabe an PROC

 

Uwe
''Pascal''
Niemeier
Hallo Roland!

Wirf mal einen Blick hierauf (XProfan 11.1):
KompilierenMarkierenSeparieren
window 10,10-500,500
declare Demo&,Dummy&--Geht
declare Demo&,Dummy%--Geht nicht
declare Demo&----------Geht nicht

proc Test----------------------------------

    parameters Text$,Pointer&
    long Pointer&,0=123
    endproc-------------------------------------
    Test(Text,addr(Demo&))
    print Test 1:,Demo&
    Test(Text,addr(Demo&))
    print Test 2:,Demo&
    waitkey

Bei diesem Code wird (zumindest bei mir) beim 1. Aufruf von Test  der Wert von Demo&  nicht geändert.
Der Effekt scheint auch davon abzuhängen, wieviele und welche Variablen vorher global deklariert wurden.

Ein weiteres Beispiel:
KompilierenMarkierenSeparieren
proc Test----------------------------------

    parameters Pointer&
    endproc-------------------------------------
    declare Dummy&--Damit geht es
    var Demo&=123
    print addr(Demo&),Demo&
    Test(addr(Demo&))
    print addr(Demo&),Demo&
    Test(addr(Demo&))
    print addr(Demo&),Demo&
    waitkey

Hierbei ändert sich die Adresse, an der Demo&  liegt, durch den 1. Proc-Aufruf, allerdings nur, wenn der übergebene Wert per Parameters  ausgelesen wird.

Mit XProfan 10 reagiert alles wie erwartet.
Da stimmt doch was nicht ?!

PS: War ja klar, daß ausgerechnet ich über sowas stolpere

SeeYou
Pascal
 
23.01.2009  
 




RGH
Da scheint die dynamische Speicherverwaltung noch einen unerwünschten Nebeneffekt zu haben. Die Adresse einer Variablen sollte sich eigentlich nicht verändern. Und offensichtlich tut sie es nur, wenn ein Variablentyp nur einmal vorkommt. Gut, dass das in den allermeisten Programmen so nicht vorkommt ... ich werde mich in einer ruhigen Minute darum kümmern!

Gruß
Roland

PS: Ich hatte ja fast gerechnet, dass es irgendwann noch ein paar bislang unentdeckte Spätfolgen dieser Operation dynamischer Speicheicherverbrauch geben würde. Auch wenn man es von außen nicht sieht, so war es programmtechnisch doch die aufwändigste und gefährlichste Änderung von XProfan 10 auf XProfan 11. Aber erst dadurch wurden dynamischer Arrays möglich und einige Grenzen eingerissen, die mich schon lange störten.
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
23.01.2009  
 




RGH
Nachtrag:

So wie es aussieht, habe ich den Übeltäter entdeckt (ein seltsames Verhalten von Delphi bei OpenArrays) und ausgetrixt. In der nächsten Version wird es also klappen. (Hatten wir nicht auch in der Betaphase Probleme mit flatterhaften Variablenadressen im Zusammenhang mit OCX?)

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
23.01.2009  
 




Uwe
''Pascal''
Niemeier
Roland
Hatten wir nicht auch in der Betaphase Probleme mit flatterhaften Variablenadressen im Zusammenhang mit OCX?


Was meinst du, wie ich den Fehler entdeckt habe?
Dann kann ich ja das Projekt ocx für XProfan 11 erstmal ruhen lassen

SeeYou
Pascal
 
23.01.2009  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.547 Betrachtungen

Unbenanntvor 0 min.
RudiB.06.04.2020
Jörg Sellmeyer04.11.2011

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

RGH (2x)
Uwe ''Pascal'' Niemeier (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie