ich bin gerade dabei, ein Delphi-Programm nach Lazarus zu portieren. Dabei ist mir folgendes aufgefallen. Folgende Verwendung von Shortstrings führt zu totalem Programm-Ausstieg ("Project raised exception class "External SIGSEGV"):
Code: Alles auswählen
unit someTest;
{$mode objfpc}{$H+} // {$MODE Delphi}
interface
uses
Classes, SysUtils;
type
sstring = ShortString; {works in Delphi, fatal error in Lazarus}
// sstring = string; {Lazarus, works!}
{ tIceTest }
TStrTest = class(TComponent)
private
FaText: sstring;
procedure setaText(s: sstring); // without this it works!
public
constructor Create(AOwner: TComponent); override;
published
property aText:sstring read FaText write setaText;
end;
implementation
{ tIceTest }
procedure TStrTest.setaText(s: sstring);
begin
FaText := s;
end;
constructor TStrTest.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FaText := 'Somewhat';
end;
end.
Ich verwende Laz Vers. 0.9.26 (beta) FPC-Vers. 2.2.2). Ist das ein Bug oder sollte ShortString grundsätzlich nicht verwendet werden? {mode Delphi} macht übrigens keinen Unterschied.
Danke jedenfalls überhaupt erst schon mal für's Lesen
