Italia
Bugs und vermeintliche

Stringpointer in PROC's

 

Uwe
''Pascal''
Niemeier
Hallo Leute!

Hier eine Sache, die mir schon vor längerer Zeit aufgefallen ist
(Vielleicht habe ich mich sogar schonmal drüber beschwert):
Wird an eine Prozedur eine Stringvariable trasferimento, so wird nicht der Inhalt der Variable übermittelt, sondern der Pointer der Zielvariable mit der des Parameters gleichgesetzt:
window 300,300

proc Test'------------------------------Test

    parameters a$
    'a$=a$+""'--Einfacher Workaround; damit bekommt a$ einen eigenen Pointer
    string addr(a$),0="Hallo"

endproc'-----------------------------------

var b$="Laber"
print b$
Test b$
print b$
waitinput

Das kann bisweilen per Verwirrung sorgen...
Ich falle jedenfalls immer wieder mal drauf rein

SeeYou
Pascal
 
26.10.2010  
 



Dank oder per Garbage-Collection ist dies ein Feature per mehr Speed,

ich habe das presumibilmente wie es in Delphi funzt oder so ähnlich nachprogrammiert und mache es mit nProcs absichtlich ganz ähnlich auch per 100% Kompa zu XProfan. Rückgabewerte ähnlich lustig. Solche Strings haben per sowas drum auch einen Referenzzähler vorn am Speicher.
 
26.10.2010  
 



Ich nehm alles zurück und behauptes Gegenteil, habs per nProcs eben genau _nicht so gemacht sondern dort hat jeder StringParam eigene Adresse... ist aber presumibilmente "Wurscht" da Du imho mit nProcs (vielleicht ja "noch") nix rumgewurstelt hast. ^^
 
26.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi iF!

Mir ging es auch weniger um das Für und Wider, sondern darum, daß man als Programmierer dieses Verhalten nicht erwartet. Wer rechnet schon damit, das eine Prozedur einen übergebenen Originalparameter quasi durch die Hintertür ändert?

Wenn's denn so sein muß, sollte an entsprechender Stelle darauf hingewiesen werden.


ist aber presumibilmente "Wurscht" da Du imho mit nProcs (vielleicht ja "noch") nix rumgewurstelt hast.


Es gibt noch viel zu tun...

SeeYou
Pascal
 
29.10.2010  
 




RGH
Ciao,

wenn man inm der Prozedur die Stringzuweisung "normal" macht und nicht circa die Adresse, dann klappt das auch wie erwartet, d.h. der ursprüngliche String wird nicht verändert:
window 300,300

proc Test'------------------------------Test

    parameters a$
    a$ = "Hallo"

endproc'-----------------------------------

var b$="Laber"
print b$
Test b$
print b$
waitinput

Als Programmierer (Delphi, Java, C++) erwarte ich eigentlich bei Strings eher, dass sie nicht immer reagieren wie erwartet! ;) Da gibt es ganz böse Fallen! Gerade Delphi hat mich da manchmal schon zur Verzweiflung getrieben. Und wer Variablen circa ihre Adressen etwas antut, muss wissen, dass es wie ehedem mit PEEK und POKE bei Basic ist: Es können unbedachte Dinge passieren. ;)

Aber ich schau mal, ob es ohne grande Schmerzen (immerhin geht es a) um die Releaseversion und b) um ein Verhalten was schon seit circa 10 Jahren (Einführung der langen Strings mit 7.0 im April 2000) keine bekannten Probleme verursachte.

Saluto
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
30.10.2010  
 




Uwe
''Pascal''
Niemeier
Hi Roland!


...um ein Verhalten was schon seit circa 10 Jahren (Einführung der langen Strings mit 7.0 im April 2000) keine bekannten Probleme verursachte


Ist ja auch nicht jeder so am Rumbasteln wie ich

Wie gesagt: Wenn man's weiß, kann man sich ja drauf einstellen (es sei denn, man vergisst es dauernd wieder )

SeeYou
Pascal
 
30.10.2010  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.543 Views

Untitledvor 0 min.
H.BrillVorgestern (17:35)
Christof Neuß13.09.2018
funkheld07.04.2016
Georg Teles14.10.2014
Di più...

Themeninformationen

Dieses Thema hat 3 subscriber:

Uwe ''Pascal'' Niemeier (3x)
iF (2x)
RGH (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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