Español
Bugs y vermeintliche

Hecho: PROC / Pointer-Bug en 11.2 todavía disponible

 

Uwe
''Pascal''
Niemeier
Hola Roland!

Der Fehler, en el el Adressen de Variables por Proc-Aufrufe movido voluntad, es en el aktuellen Versión 11.2ß siempre todavía disponible

Er ha se bloß algo después de hinten verschoben; voluntad sagen: Tritt sólo de uno gewissen Parameterzahl en.

QED:
KompilierenMarcaSeparación
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 se tal vez Workarounds para el problema finden; trotzdem dürfte/debería lo doch así no ser?

BTW: Offensichtlich son mi OCX-Routinen deshalb siempre todavía no funktionsfähig

A Erinnerung: Selbige ermöglichen u.A. el Nutzung des Befehlsumfanges aller gängigen Scriptsprachen (JS, VBS, VBA, WSH) bajo XProfan; por lo tanto liegt me soviel daran. (Und porque ellos de me son )

Hoffe en (baldige) Ayuda
Pascal
 
04.04.2009  
 



Tuve lo así verstanden, dass porque lo kein Bug es nichts daran geändert se.

Auch wegen el Desktopsymbole en Roland  [...]  Yo una Brett antes Augen, si daran liegt.
 
04.04.2009  
 




RGH
¡Hola,

una bastante einfacher Workaround scheint a ser, en lugar de LongInt (&) en Integer (%) umzusteigen. Como beide en el 32-Bit-Programa igual groß son, macht el no hay diferencia. Wenn Yo el bastante sehe, tritt el problema sólo en LongInts en. Yo schaue aber natürlich, si Yo el gefixt bekomme, auch si para el normale Verwendung de Variables ningún papel juega.

Saludo
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  
 




Uwe
''Pascal''
Niemeier
Hi IF!


Tuve lo así verstanden, dass porque lo kein Bug es nichts daran geändert se.


Wenn el Adresse uno globalen Variables se por una Procedimiento-Aufruf (a el el Variable no veces incluso beteiligt es) ändert y dies bajo no näher bekannten Bedingungen (abhängig de vorherigen Deklarationen, Parameterzahl el Proc, Art el Auswertung el Parámetro usw) , entonces el IMHO definitiv una Bug.

Denn: Was nützt @Addr(), si la Rückgabe unos pocos Programmzeilen más ungültig es, porque zwischendurch una Procedimiento aufgerufen wurde?

Außerdem es esta Art el Verwendung de Pointern sowohl en Windows incluso como auch en otro Programmiersprachen Gang y Gäbe..

Hoffen wir also el Beste...

PS: Mir brennt en Sachen HTML auch el Tiempo bajo el Nägeln; si Yo tatsächlich irgendeinen Workaround remendar muß, lasse Yo dich wissen!

SeeYou
Pascal

Apéndice @Roland: War otra vez veces a langsam beim Carta!
Gracias para el Tipp! Wird inmediatamente getestet!
 
04.04.2009  
 



Ein Workaround es Reboos ProAx, geladen con un z.B. 8x1 Pixel Flashfilm en una DC el abgepixelt se wobei el Flashfilm sólo 8 Bit Mostrar kann como Kommunikationskanal. Der Flashfilm wiederum kann js auslösen y wiederum con el body kommunizieren.

Bitte no lachen, el funktioniert y yo podría en el bedarf herauskrahmen.

Dennoch empfand Yo esta Solución como unentsprechend... (y langsam...)
 
04.04.2009  
 




RGH
¡Hola,

vergiß media Workaround. Das Problema tritt auch en Integers en.

Yo fürchte, el lässt se auch kaum ändern. A Speicherung el Variables benutze Yo el dynamischen Arrays de Delphi. Puesto que hay lo para cada Variablentyp una Array. Wird nun una neue Variable deklariert se el Größe des Arrays en 1 ertweitert (Delphi: SetLength(IntVar, IntNr + 1)) y luego Name y Valor en el Array geschrieben. Wird el Array nun größer, restos lo also no de, dass irgendwann el Speicherbereich para el Array a una otro Punto movido voluntad muss, wo eben dieser zusätzliche Platz es. Como el Delphi oder Windows intern handhabt, weiß Yo natürlich no.

Vor el Dynamisierung trat dieses Problema eben deshalb no en, como hay el Speicher para todos möglichen Variables igual a Programmbeginn reserviert wurde.

Das heißt en el aktuellen Praxis: Un Variablenadresse es mindestens así largo gültig, a una weitere Variable esta Typs deklariert se (por Declarar, Var oder Parámetros).

Yo fürchte, a diesem Comportamiento kann Yo vorerst auch nichts ändern. (Lo sei porque, alguien ha un despertar Concepto.)

Saludo
Roland

Apéndice: Si no puede Bereiche uso? El Adresse uno Bereiches debería se no mover, como hier en el entsprechenden Array sí sólo una Zeiger en el Zona es. Statt uno Lonint-Variables Así que una 4 Byte großer Zona.
 
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
Das klappt en me:
KompilierenMarcaSeparación
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: Yo verstehe Usted ya aber el trifft sólo sólo en (echte) Variables a el eben no gemanaged son.

@RGH: Auch si el veces antes de y hinter uno grösseren Anwendung einbaust en el einiges passiert?

Yo habe no idea brillante. (obwohl Yo schonmal pensamiento una gehabt a haben, veces drüber grübeln...)

Ah, Sé que otra vez como... veces zurechtschreiben - es ne Präkompiler-Solución con el Nachteil el para el Zugriff el Werte sólo ne Sonderfunktion notwendig es. (Umgekehrter Nachteil)
 
04.04.2009  
 




RGH
IF
@RGH: Auch si el veces antes de y hinter uno grösseren Anwendung einbaust en el einiges passiert?


Sí, el Bereiche bleiben a ihrem Platz! (Natürlich sólo a a una erneuten DIM. ;) )
Sonst würden ellos sí überhaupt no trabajo.
Der entsprechende Umbau debería se para Pascal en Grenzen halten.

Saludo
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  
 



Apéndice:

An mi Ejemplo, sería Yo en lugar de para reguläre Longs:
KompilierenMarcaSeparación
uso.

Könnte XProfan en Disponer con un GlobalFree reagieren?
 
04.04.2009  
 




Uwe
''Pascal''
Niemeier
Hi Personas!

Roland
Das heißt en el aktuellen Praxis: Un Variablenadresse es mindestens así largo gültig, a una weitere Variable esta Typs deklariert se (por Declarar, Var oder Parámetros).


Posesiones Yo auch gerade festgestellt. Damit es @Addr() a uno echt unsicheren Sache geworden

Das Übergeben uno Variables-Pointers dient sí en mi caso sólo dazu, de uno Proc más que el direkten  Rückgabewert a erfragen (Zusätzliche Rückgaben fueron eben por Pointer en el entsprechenden Variables geschrieben).
Trotzdem: Diese Möglichkeit debería früher oder später otra vez en irgendeiner Form disponible posición.

Roland
Der entsprechende Umbau debería se para Pascal en Grenzen halten.


Stimmt!
Soweit Yo media eigenen Code durchschaue, diente el Ganze sólo el Bequemlichkeit des Anwenders, porque el así seine eigenen Variables uso podría (ansonsten Es el Concepto de IF una Alternative,
obwohl a& = a# entonces en efecto klappen müßte).

Stattdessen debería se una Sistema-Variable einbauen dejar, deren Inhalt después de Aufruf el betreffenden Función eben umkopiert voluntad muß... oder algo como en el Art.

Werde veces sehen, qué se hacer läßt...

SeeYou
Pascal
 
04.04.2009  
 




Sebastian
König
Also Yo finde, Pascal ha bastante. El con Addr() ermittelte Adresse debería se solange el Variable gültig es (en globalen Variables also während el gesamten Laufzeit) no ändern dürfen. Dass el en el Tat a Problemen führen kann (y obendrein a muy gemeinen, así una Fehler a lokalisieren es sí alles otro como simplemente...), zeigen sí Pascals OCX-Codes.

Wenn el Ursache en el Verwendung el dynamischen Arrays liegt, Es el unschöne Konsequenz wohl, dass se esta a Speicherung el Variables schlicht no eignen. Mein Vorschlag es demnach, el Verwaltung umzustellen, qué natürlich probablemente no así kurzfristig posible es... Aber zumindest para el nächste Versión tal vez ya.

Mi Vermutung wäre, dass el Arrays intern una Art Vektor-Klasse son (womöglich es el irgendwo en el Delphi-Documentación). Lo debería entonces doch posible ser, el dynamische Speicherverwaltung incluso a implementieren y esta en el de Delphi bereitgestellten Datenstruktur-Klassen zurückzugreifen. So ließe se con tal vez garnicht allzu viel Arbeit el problema beheben.

MfG

Sebastian

P.S.: Noch una Concepto: Zumindest para globale Variables podría uno tal vez doch kurzfristig algo einrichten, indem uno ellos beim Kompilieren zählt y festen Speicher en passender Größe bereitstellt. Yo weiß natürlich no, como simplemente una solche Sonderbehandlung einzubauen wäre...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
04.04.2009  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

8.564 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie