| |
|
|
Uwe ''Pascal'' Niemeier | Hallo Roland!
Wirf mal einen Blick hierauf (XProfan 11.1): KompilierenMarkierenSeparierenwindow 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 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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|