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.
www.mirage228.net/private/string_fehler.avi
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:
TmpItem := ProjectGroup.FindFile(FileName);
if (Assigned(TmpItem)) then
begin
FreeAndNil(FDocuments[CreatePos].FProjectItem);
FDocuments[CreatePos].FProjectItem := TmpItem;
end;
Eigentlich passiert da nichts "schlimmes".
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