![]() |
Seltsames Verhalten von Delphi (String wird "freigegebe
Hi,
ich habe heute ein mehr oder weniger großes Problem. Ich habe eine Funktion, die einen Parameter "const FileName: String" hat. Der String ist nun eigentlich unveränderlich. (Die Funktion öffnet die Datei "FileName" in einem SynEdit) Nach einer Zuweisung an einen Setter einer Klasse ist der String scheinbar "freigegeben", da das Ende abgeschnitten ist und danach Wirre Zeichen folgen. Ich habe mit meiner Trial von Techsmith Camtasia mal ein Video dazu angefertigt. ![]() Wie man sieht, verändert sich der String eindeutig nach der Zuweisung an "FDocuments[CreatePos].FileName". Das Problem ist erst aufgetaucht, als ich diesen Code Abschnitt hinzugefügt habe:
Delphi-Quellcode:
Eigentlich passiert da nichts "schlimmes".
TmpItem := ProjectGroup.FindFile(FileName);
if (Assigned(TmpItem)) then begin FreeAndNil(FDocuments[CreatePos].FProjectItem); FDocuments[CreatePos].FProjectItem := TmpItem; end; Die Verwendung von "const FileName: WideString" hilft zwar dagegen, da WideStrings keiner Referenzzählung unterliegen, aber es muss doch auch mit "normalen" Strings funktionieren ?! mfG mirage228 |
Re: Seltsames Verhalten von Delphi (String wird "freige
ich würde mal vermuten, Du schreibst im Speicher rum mit Deiner Zuweisung und erwischst dabei den Stack.
Nur so ein Gefühl...... :-) Roderich |
Re: Seltsames Verhalten von Delphi (String wird "freige
Zitat:
mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz