Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Seltsames Verhalten von Delphi (String wird "freigegeben") (https://www.delphipraxis.net/32649-seltsames-verhalten-von-delphi-string-wird-freigegeben.html)

mirage228 26. Okt 2004 16:54


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.
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

roderich 26. Okt 2004 17:37

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

mirage228 26. Okt 2004 17:49

Re: Seltsames Verhalten von Delphi (String wird "freige
 
Zitat:

Zitat von roderich
ich würde mal vermuten, Du schreibst im Speicher rum mit Deiner Zuweisung und erwischst dabei den Stack.

Nur so ein Gefühl...... :-)

Roderich

Hm... das könnte auch sein, aber ich frage mich, wie das passieren könnte? Soweit ich weiss ist in meinen Routinen kein "gefährlicher" Code drin... aber weiss, vielleicht steckt der Wurm auch wo anders :?

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz