| |
|
|
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 übergeben, so wird nicht der Inhalt der Variable übermittelt, sondern der Pointer der Zielvariable mit der des Parameters gleichgesetzt:
Das kann bisweilen für Verwirrung sorgen... Ich falle jedenfalls immer wieder mal drauf rein
SeeYou Pascal |
|
|
| |
|
|
|
| Dank oder per Garbage-Collection ist dies ein Feature für mehr Speed,
ich habe das vermutlich wie es in Delphi funzt oder so ähnlich nachprogrammiert und mache es mit nProcs absichtlich ganz ähnlich auch für 100% Kompa zu XProfan. Rückgabewerte ähnlich lustig. Solche Strings haben für sowas drum auch einen Referenzzähler vorn am Speicher. |
|
|
| |
|
|
|
| Ich nehm alles zurück und behauptes Gegenteil, habs für nProcs eben genau _nicht so gemacht sondern dort hat jeder StringParam eigene Adresse... ist aber vermutlich "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 vermutlich "Wurscht" da Du imho mit nProcs (vielleicht ja "noch") nix rumgewurstelt hast.
Es gibt noch viel zu tun...
SeeYou Pascal |
|
|
| |
|
|
|
RGH | Hallo,
wenn man inm der Prozedur die Stringzuweisung "normal" macht und nicht über 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 über 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 große Schmerzen (immerhin geht es a) um die Releaseversion und b) um ein Verhalten was schon seit über 10 Jahren (Einführung der langen Strings mit 7.0 im April 2000) keine bekannten Probleme verursachte.
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 | 30.10.2010 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Roland!
...um ein Verhalten was schon seit über 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 |
|
|
| |
|
|