Zitat von
fiasko:
das würde auch ohne
DLL in einem Programm nicht funzen
Leider doch. Delphi versteckt sehr viel vor dem Programmierer. Wenn du nicht gerade eine sehr abgespeckte System-
Unit hast, bekommst du es nicht mit. Schau dir einfach mal die Implementierung von Strings in der System-
Unit an.
Zitat von
fiasko:
das ist doch einfach so, wenn du ein StrCopy machst wird das an die Stelle im Speicher geschrieben wo data hinzeigt.
Hatte ich auch schon erwähnt
Zitat von
Muetze1:
Er sorgt damit für einen neuen String der einen Referenzzähler von 0 hat und somit seinen eigenen Speicherbereich - und das ist das entscheidende.
Quark, seit wann haben PChars einen Referenzzähler. Bitte schau dir den Prototypen von StrCopy() an und denk nochmal drüber nach. Oder, falls sich das seit Delphi 5 geändert hat, bei mir sind alle Parameter PChars! Und es handelt sich um die Delphi-eigene Funktion.
Zitat von
Muetze1:
Hmm, probiers aus - es klappt auch bei eigenen nicht ohne ShareMem.
Okay, war redundant -> "bei DLLs" ... DLLs sind immer fremd, es sei denn es sind BPLs!
Zitat von
Pseudemys Nelsoni:
aber warum ich "data" nicht einfach was mit ":= 'blub'" zuweisen kann weiss ich immernoch nicht, könntest du das näher erklären? *g*
Die Erklärung habe bereits ich schon einmal als Vermutung gebracht und fiasko hat sie ebenfalls nochmal genannt. Es ist eben einmal, daß man einen neuen Pointerwert zuzuweisen versucht und einmal, daß man Speicher an die angegebene Stelle kopiert.