On Wed, 7 Apr 2010, Michael Müller wrote:

Hi,

the following code behaves different between Delphi and Free Pascal:

{$APPTYPE CONSOLE}

{$IFDEF FPC}
{$MODE delphi}
{$ENDIF}

uses
Classes;

type TFoo = class(TStringList)
public
constructor Create;
end;

constructor TFoo.Create;
begin
inherited Create;

{$IFDEF FPC}
// Is needed by Free Pascal to get some fields initialized that are initialized 
automatically by Delphi
//  CheckSpecialChars;
{$ENDIF}
end;

var
Foo: TFoo;
begin
Foo := TFoo.Create;
try
  writeln('NameValueSeparator = |', Foo.NameValueSeparator, '|');
  Foo.IndexOfName('Test');
  writeln('NameValueSeparator = |', Foo.NameValueSeparator, '|');
finally
  Foo.Free;
end;
end.

Without calling CheckSpecialChars (which doesn't exist in Delphi) manually in 
the constructor the default value of NameValueSeparator is in Free Pascal the 
space character until you call a method like IndexOfName that calls 
CheckSpecialChars at the beginning. After such a call NameValueSeparator 
changes to the expected default value (=). In Delphi it has the right value 
from the beginning.

I have added the call. Committed in rev. 15116.

Michael.
_______________________________________________
fpc-pascal maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to