Français
Bugs et vermeintliche

Erledigt: PROC / Pointer-Bug dans 11.2 encore vorhanden

 
- page 1 -



Uwe
''Pascal''
Niemeier
allô Roland!

qui faute, chez dem qui Adressen de Variablen par Proc-Aufrufe déménagé volonté, ist dans qui aktuellen Version 11.2ß toujours vorhanden

il hat sich bloß quelque chose pour hinten verschoben; veux dire: Tritt seulement ab einer gewissen Parameterzahl sur.

QED:
KompilierenMarqueSéparation
window 500,400

proc Demo-------------------------------------------------------------

    parameters x1&,x2&,x3&,x4&,x5&,x6&--Ohne Parameters klappt es
    endproc---------------------------------------------------------------
    declare Wert&,Test&--bei Weglassen der 2. Deklaration klappt es
    print Addr 1 ,addr(Wert&)
    Demo(1,2,3,4,5,6)
    print Addr 2 ,addr(Wert&)
    wai

Zwar ließen sich peut-être Workarounds pour cela Problem finden; quand même pourrait/sollte es doch so pas son?

BTW: Offensichtlich sommes mon OCX-Routinen c'est pourquoi toujours pas funktionsfähig

Zur Erinnerung: Selbige ermöglichen u.A. qui Nutzung des champ d'application de commandement aller gängigen Scriptsprachen (JS, VBS, VBA, WSH) sous XProfan; tout autor liegt mir soviel daran. (et weil vous de mir sommes )

Hoffe sur (baldige) Aider
Pascal
 
04.04.2009  
 



 
- page 1 -



RGH
Salut,

vergiß meinen Workaround. cela Problem tritt aussi chez Integers sur.

je fürchte, cela peut sich aussi à peine changement. Zur Speicherung qui Variablen benutze je qui dynamischen Arrays de Delphi. là gibt es pour jeden Variablentyp un Array. Wird eh bien une neue Variable deklariert wird qui Taille des Arrays um 1 ertweitert (Delphi: SetLength(IntVar, IntNr + 1)) et ensuite nom et Wert dans cela Array geschrieben. Wird cela Array eh bien größer, bleibt es alors pas aus, dass irgendwann qui Speicherbereich pour cela Array à une autre Stelle déménagé volonté muss, wohin plan cette zusätzliche place ist. comment cela Delphi ou bien Windows interne handhabt, sais je naturellement pas.

avant qui Dynamisierung trat cet Problem plan c'est pourquoi pas sur, là là qui grenier pour alle möglichen Variablen juste trop Programmbeginn reserviert wurde.

cela est dans qui aktuellen Praxis: une Variablenadresse ist mindestens so longtemps gültig, jusqu'à une weitere Variable cette Typs deklariert wird (par Déclarer, Var ou bien Paramètres).

je fürchte, à diesem Verhalten peux je vorerst aussi rien changement. (Es sei car, quelqu'un hat une allumage concept.)

Salut
Roland

Nachtrag: peux Du pas Bereiche verwenden? qui Adresse eines Bereiches sollte sich pas Déplacer, là ici im entsprechenden Array oui seulement un aiguille sur den Bereich steht. Statt einer Lonint-Variablen alors un 4 Byte großer Bereich.
 
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
04.04.2009  
 




RGH
cela klappt chez mir:
KompilierenMarqueSéparation
window 500,400

proc Demo-------------------------------------------------------------

    parameters x1#, x2#, x3#,x4#, x5#, x6#
    print x1#, x2#
    endproc---------------------------------------------------------------
    declare wert#, test#
    dim wert#, 2
    dim test#, 2
    print Addr 1 ,addr(Wert#)
    Demo(wert#,wert#,wert#,wert#,wert#,wert#)
    print Addr 2 ,addr(Wert#)
    
put
 
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
04.04.2009  
 



@Pascal: je comprends toi déjà mais cela trifft arrêt seulement sur (echte) Variablen trop qui plan pas gemanaged sommes.

@RGH: aussi si Du cela la fois avant et derrière einer grösseren Anwendung einbaust dans qui einiges passiert?

j'ai aucun allumage concept. (quoique je Schonmal dachte une gehabt trop avons, la fois drüber grübeln...)

Ah, je weiss wieder comment... la fois zurechtschreiben - ist ne Präkompiler-Solution avec dem le tort cela pour den Zugriff qui Werte arrêt ne Sonderfunktion notwendig ist. (Umgekehrter le tort)
 
04.04.2009  
 




RGH
iF
@RGH: aussi si Du cela la fois avant et derrière einer grösseren Anwendung einbaust dans qui einiges passiert?


oui, qui Bereiche rester à ihrem place! (Bien sûr seulement jusque einem erneuten DIM. ;) )
Sonst würden vous oui pas du tout marcher.
qui entsprechende Umbau sollte sich pour Pascal dans Grenzen tenir.

Salut
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
04.04.2009  
 



Nachtrag:

à meinem Beispiel, serait je statt pour reguläre Longs:
KompilierenMarqueSéparation
verwenden.

Könnte XProfan chez Dispose avec einem GlobalFree réagir?
 
04.04.2009  
 




Uwe
''Pascal''
Niemeier
Hi gens!

Roland
cela est dans qui aktuellen Praxis: une Variablenadresse ist mindestens so longtemps gültig, jusqu'à une weitere Variable cette Typs deklariert wird (par Déclarer, Var ou bien Paramètres).


Habe je aussi justement festgestellt. avec cela ist @Addr() trop einer vraie unsicheren l'affaire geworden

cela Übergeben eines Variablen-Pointers dient oui dans mon cas seulement en supplément, de einer Proc plus que den direkten  Rückgabewert trop erfragen (Zusätzliche Rückgaben wurden plan per Pointer dans qui entsprechenden Variablen geschrieben).
quand même: cet Possibilité sollte früher ou bien später wieder dans irgendeiner forme zur Disposition stehen.

Roland
qui entsprechende Umbau sollte sich pour Pascal dans Grenzen tenir.


Stimmt!
Soweit je meinen eigenen Code durchschaue, diente cela Ganze seulement qui confort des Anwenders, weil qui so sa eigenen Variablen verwenden konnte (ansonsten ist qui concept de iF une Alternative,
quoique a& = a# ensuite oui aussi marcher devrait).

Stattdessen sollte sich une System-Variable einbauen laisser, en le contenu pour Aufruf qui betreffenden Funktion plan umkopiert volonté doit... ou bien quelque chose comme dans qui Art.

Werde la fois voyons, quoi sich faire läßt...

SeeYou
Pascal
 
04.04.2009  
 




Sebastian
König
alors je trouve, Pascal hat droite. qui avec Addr() ermittelte Adresse sollte sich solange qui Variable gültig ist (chez globalen Variablen alors au cours de qui gesamten Laufzeit) pas changement dürfen. Dass cela dans qui acte trop Problemen mener peux (et obendrein trop gemeinen, so une faute trop lokalisieren ist oui alles autre comme simple...), montrer oui Pascals OCX-Codes.

si qui Ursache dans qui Verwendung qui dynamischen Arrays liegt, ist qui unschöne Konsequenz wohl, dass sich cet zur Speicherung qui Variablen schlicht pas eignen. mon Vorschlag ist donc, qui Verwaltung umzustellen, quoi naturellement wohl pas so kurzfristig possible ist... mais zumindest pour qui prochain Version peut-être déjà.

mon Vermutung wäre, dass qui Arrays interne une Art Vektor-super sommes (womöglich steht cela irgendwo dans qui Delphi-Documentation). Es devrait ensuite doch possible son, qui dynamische Gestion de la mémoire selbst trop implementieren et dabei sur qui de Delphi bereitgestellten Datenstruktur-Klassen zurückzugreifen. So ließe sich avec peut-être garnicht allzu viel travail cela Problem beheben.

MfG

Sebastian

P.S.: encore une concept: Zumindest pour globale Variablen pourrait on peut-être doch kurzfristig quelque chose einrichten, indem on vous beim Kompilieren zählt et festen grenier dans passender Taille bereitstellt. je sais naturellement pas, comment simple une solche Sonderbehandlung einzubauen wäre...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
04.04.2009  
 



 
- page 2 -



RGH
allô Pascal et Sebastian,

kurzfristig, alors pour Version 11.2, allez probablement gar rien. Langfristig devrait je ensuite einiges ajuster, indem je etwa dans den Arrays pas qui Werte selbst, mais, comment chez den Bereichen, seulement Pointer sur den jeweiligen Speicherplatz unterbringe. c'est naturellement wieder un quelque chose umfangreicheres Unterfangen. Einen le tort voudrais je pas verschweigen: qui Zugriff sur Variablen wird dadurch naturellement un peu langsamer. je werde es mais pour Version 12 im Auge behalten.

Salut
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
04.04.2009  
 




RGH
Hehe, et pour qui Schnelle gibt es doch une Solution:

Pour Integer, LongInt et Float lege je qui Arrays trop Programmbeginn sur la valeur fest, qui trop XProfan 10-Zeiten eh qui Höchstgrenze était: 2000. seulement si le 2001. Variable eines Typs declariert wird, wird cela Array dynamisch erweitert.
là autrefois nie quelqu'un cet Grenzen erreicht hat, pourrait cela voerst aussi Dir, Pascal, ausreichen.

Salut
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
04.04.2009  
 




Frank
Abbing
cela hört sich doch très vernünftig à!
 
04.04.2009  
 



@Roland: je weiss pas oui c'est ca comment Du zählst mais je suis unsicher cet frontière dans manchen Spielen pas trop erreichen et serait (si je pourrait) wohl aus Sicherheitsgründen qui numéro höher einstellen, aussi si es plus grenier dans Anspruch nimmt. Echte Variablen statt Arrays faire quelquefois aus Performancegründen Sinn aussi cela Verteilen sur viele kleine Funktionen avec wiederum lauter Variablen.
 
05.04.2009  
 




Uwe
''Pascal''
Niemeier
Hi gens!

je denke, on pourrait avec den instabilen Pointern leben; si on cela Problem erstmal kennt, sommes Workarounds (Bereiche verwenden) relativ simple.
seulement dans dem de mir angesprochenen le cas (@Addr(Variable&) à PROC transfert, um direct dans qui Variable trop écrivons) sollte langfristig une elegantere Solution trouvé volonté, weil cet technologie z.B. chez Interfaces Standart ist.

quoi ocx betrifft: cela fonctionne maintenant
Pour Austausch aller betroffenen Pointer par Bereiche et einer kleinen Correction bezüglich des PROC-Parameterstacks (chez dem es également une Unterschied entre 10.x et 11.x gibt) werde je dans Kürze une entsprechend angepaßte Version posten.


et merci à Roland, qui sich kurzfristig cette l'affaire angenommen hat, quoique es oui réellement seulement une kleinen partie qui Anwender betrifft (aussi si ca justement qui Grundlagenforscher sommes, et à wäre es doch tant pis gewesen )

SeeYou
Pascal
 
05.04.2009  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

8.793 Views

Untitledvor 0 min.
H.Brill18.09.2024
Member 166302407.05.2019
Georg Teles14.10.2014
iF19.01.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie