| |
|
|
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:
Das kann bisweilen per Verwirrung sorgen... Ich falle jedenfalls immer wieder mal drauf rein
SeeYou Pascal |
|
|
| |
|
|
|
| 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. |
|
|
| |
|
|
|
| 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. ^^ |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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:
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 |
|
|
| |
|
|