Registriert seit: 13. Aug 2002
17.195 Beiträge
Delphi 10.4 Sydney
|
Bug beim Memory-Management von WideStrings?
29. Apr 2005, 16:21
Folgender Code führt bei der Widestring-Version zu einer Änderung des const-Parameters in der Funktion beim ersten Aufruf der Copy-Funktion.
Delphi-Quellcode:
procedure DoVarConstBug(var Param1, Param2: String; const Value: String); overload;
begin
Param1 := '';
Param2 := '';
if 0 < Pos( '.', Value) then
begin
Param1 := Copy( Value, 1, Pos( '.', Value)-1);
Param2 := Copy( Value, Pos( '.', Value)+1, Length( Value));
end;
end;
procedure DoVarConstBug(var Param1, Param2: WideString; const Value: WideString); overload;
begin
Param1 := '';
Param2 := '';
if 0 < Pos( '.', Value) then
begin
Param1 := Copy( Value, 1, Pos( '.', Value)-1);
Param2 := Copy( Value, Pos( '.', Value)+1, Length( Value));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Str, Str2: String;
wStr, wStr2: WideString;
begin
str := 'Teil-1.Teil-2';
DoVarConstBug(Str2, Str, Str);
wStr := 'Teil-1.Teil-2';
DoVarConstBug(wStr2, wStr, wStr);
ShowMessage(Format('String: %s <-> WideString: %s', [Str, wStr]));
end;
Windows Vista - Eine neue Erfahrung in Fehlern.
|
|
Zitat
|