A frequently used Delphi class is TStringList.
using System.Classes; using System.Sysutils; using System; using static D7_string_list.D7_string_listImplementation; using static D7_string_list.D7_string_listInterface; using static System.Classes.ClassesInterface; using static System.SystemInterface; using static System.Sysutils.SysutilsInterface;
namespace D7_string_list
{
public class D7_string_listInterface
{
public static bool RunStringListChecks()
{
bool result = false;
bool CheckResult1 = false;
bool CheckResult2 = false;
bool CheckResult3 = false;
bool CheckResult4 = false;
CheckResult1 = CheckStageList();
result = CheckResult1;
CheckResult2 = CheckOptionValues();
result = result && CheckResult2;
CheckResult3 = CheckDelimitedFields();
result = result && CheckResult3;
CheckResult4 = CheckFileRoundTrip();
result = result && CheckResult4;
return result;
}
} // class D7_string_listInterface
file class D7_string_listImplementation
{
public static bool CheckStageList()
{
bool result = false;
TStringList Stages = default;
Stages = new TStringList();
try
{
Stages.Add("scan");
Stages.Add("emit");
Stages.Insert(1, "validate");
Stages.Exchange(0, 2);
result = (Stages.Count == 3) && (Stages[0] == "emit") && (Stages[1] == "validate")
&& (Stages[2] == "scan") && (Stages.IndexOf("validate") == 1) && (Stages.IndexOf("missing") == -1);
}
finally
{
TObject.Free(Stages);
}
return result;
}
public static bool CheckOptionValues()
{
bool result = false;
TStringList Options = default;
Options = new TStringList();
try
{
Options.WritePropertyValues("mode", "safe");
Options.WritePropertyValues("workers", "6");
Options.WritePropertyValues("trace", "off");
result = (Options.ReadPropertyNames(0) == "mode") && (Options.ReadPropertyValues("mode") == "safe")
&& (Options.ReadPropertyValues("workers") == "6") && (Options.ReadPropertyValues("trace") == "off");
}
finally
{
TObject.Free(Options);
}
return result;
}
public static bool CheckDelimitedFields()
{
bool result = false;
TStringList Fields = default;
Fields = new TStringList();
try
{
Fields.Delimiter = ';';
Fields.QuoteChar = '\"';
Fields.StrictDelimiter = true;
Fields.DelimitedText = "alpha;\"two words\";omega";
result = (Fields.Count == 3) && (Fields[0] == "alpha") && (Fields[1] == "two words") && (Fields[2] == "omega");
}
finally
{
TObject.Free(Fields);
}
return result;
}
public static bool CheckFileRoundTrip()
{
bool result = false;
TStringList SourceLines = default;
TStringList LoadedLines = default;
string FileName = string.Empty;
FileName = "d7_string_list.tmp";
SourceLines = new TStringList();
LoadedLines = new TStringList();
try
{
SourceLines.Add("first=alpha");
SourceLines.Add("second=beta");
SourceLines.SaveToFile(FileName);
LoadedLines.LoadFromFile(FileName);
result = (LoadedLines.Count == 2) && (LoadedLines.ReadPropertyValues("first") == "alpha")
&& (LoadedLines.ReadPropertyValues("second") == "beta");
}
finally
{
TObject.Free(LoadedLines);
TObject.Free(SourceLines);
if (FileExists(FileName))
DeleteFile(FileName);
}
return result;
}
} // class D7_string_listImplementation
} // namespace D7_string_list
The code was generated from:
unit d7_string_list;
interface
function RunStringListChecks: Boolean;
implementation
uses System.Classes, System.SysUtils;
function CheckStageList: Boolean;
var
Stages: TStringList;
begin
Stages := TStringList.Create;
try
Stages.Add('scan');
Stages.Add('emit');
Stages.Insert(1, 'validate');
Stages.Exchange(0, 2);
Result :=
(Stages.Count = 3) and
(Stages[0] = 'emit') and
(Stages[1] = 'validate') and
(Stages[2] = 'scan') and
(Stages.IndexOf('validate') = 1) and
(Stages.IndexOf('missing') = -1);
finally
Stages.Free;
end;
end;
function CheckOptionValues: Boolean;
var
Options: TStringList;
begin
Options := TStringList.Create;
try
Options.Values['mode'] := 'safe';
Options.Values['workers'] := '6';
Options.Values['trace'] := 'off';
Result :=
(Options.Names[0] = 'mode') and
(Options.Values['mode'] = 'safe') and
(Options.Values['workers'] = '6') and
(Options.Values['trace'] = 'off');
finally
Options.Free;
end;
end;
function CheckDelimitedFields: Boolean;
var
Fields: TStringList;
begin
Fields := TStringList.Create;
try
Fields.Delimiter := ';';
Fields.QuoteChar := '"';
Fields.StrictDelimiter := True;
Fields.DelimitedText := 'alpha;"two words";omega';
Result :=
(Fields.Count = 3) and
(Fields[0] = 'alpha') and
(Fields[1] = 'two words') and
(Fields[2] = 'omega');
finally
Fields.Free;
end;
end;
function CheckFileRoundTrip: Boolean;
var
SourceLines: TStringList;
LoadedLines: TStringList;
FileName: string;
begin
FileName := 'd7_string_list.tmp';
SourceLines := TStringList.Create;
LoadedLines := TStringList.Create;
try
SourceLines.Add('first=alpha');
SourceLines.Add('second=beta');
SourceLines.SaveToFile(FileName);
LoadedLines.LoadFromFile(FileName);
Result :=
(LoadedLines.Count = 2) and
(LoadedLines.Values['first'] = 'alpha') and
(LoadedLines.Values['second'] = 'beta');
finally
LoadedLines.Free;
SourceLines.Free;
if FileExists(FileName) then
DeleteFile(FileName);
end;
end;
function RunStringListChecks: Boolean; var CheckResult1: Boolean; CheckResult2: Boolean; CheckResult3: Boolean; CheckResult4: Boolean; begin CheckResult1 := CheckStageList; Result := CheckResult1;
CheckResult2 := CheckOptionValues; Result := Result and CheckResult2;
CheckResult3 := CheckDelimitedFields; Result := Result and CheckResult3;
CheckResult4 := CheckFileRoundTrip; Result := Result and CheckResult4; end;
end.
Deutsch
| Latest News |
|
09/01/26
Delphi2C# 2.8.0: Fundamentally revised pointer simulation [more...] |
|
05/18/2026
Delphi2C# 2.7.0: Translation heuristics [more...] |
|
"Though we have not finished the conversion yet, I'm glad that we've found you and could transform Eurocap to C++ with the help of Delphi2CB and you. (And I'm also glad that we could help you to make Delphi2CB better😉)"
Gáspár Huba
|
|
This website is generated from plain text with
[Minimal Website]
|
Minimal Website is made with TextTransformer
|
TextTransformer is made with Borland
C++Builder
|