mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 12:07:58 +02:00
48 lines
1.5 KiB
ObjectPascal
48 lines
1.5 KiB
ObjectPascal
{ Source provided for Free Pascal Bug Report 3170 }
|
|
{ Submitted by "Michalis Kamburelis" on 2004-06-15 }
|
|
{ e-mail: michalis@camelot.homedns.org }
|
|
{ Simple test of 4 string comparison routines: [Ansi]Compare(Str|Text)
|
|
with AnsiStrings with #0 chars inside.
|
|
|
|
FPC 1.9.5 fails only at CompareStr + ('hello', 'hello'#0'bye')
|
|
test, passes all other.
|
|
After applying my small patch to sysstr.inc, FPC 1.9.5 passes
|
|
all tests.
|
|
|
|
Delphi note: Kylix 3 does not pass this test with Ansi- functions,
|
|
it seems that in Kylix 3 Ansi- functions consider #0 char to mark
|
|
end of AnsiString (I will not submit this as a compatibility bug,
|
|
as I consider this stupid, FPC behaviour is definitely more
|
|
sensible and consequent here).
|
|
}
|
|
|
|
{$apptype CONSOLE}
|
|
{$assertions ON}
|
|
{$ifdef FPC} {$mode objfpc} {$endif}
|
|
{$longstrings ON}
|
|
|
|
uses SysUtils;
|
|
|
|
type
|
|
TCompare2Strings = function(const s1, s2:string):Integer;
|
|
|
|
procedure Check(CompareFunc:TCompare2Strings);
|
|
begin
|
|
Assert(CompareFunc('hello'#0'bye', 'hello'#0'bye') = 0);
|
|
Assert(CompareFunc('hello'#0'seeya', 'hello'#0'bye') > 0);
|
|
Assert(CompareFunc('hello', 'hello'#0'bye') < 0);
|
|
|
|
{ alternative:
|
|
Writeln(CompareFunc('hello'#0'bye', 'hello'#0'bye'));
|
|
Writeln(CompareFunc('hello'#0'seeya', 'hello'#0'bye'));
|
|
Writeln(CompareFunc('hello', 'hello'#0'bye'));
|
|
}
|
|
end;
|
|
|
|
begin
|
|
Writeln('CompareStr'); Check(@CompareStr);
|
|
Writeln('CompareText'); Check(@CompareText);
|
|
Writeln('AnsiCompareStr'); Check(@AnsiCompareStr);
|
|
Writeln('AnsiCompareText'); Check(@AnsiCompareText);
|
|
end.
|