Eine häufig verwendete Delphi-Klasse ist TStringList.
#include "pch.h"
#include "d7_string_list.h" #include "System.Classes.h" #include "System.SysUtils.h" #include "OnLeavingScope.h"
using namespace std; using namespace d2c_system; using namespace System; using namespace System::Classes; using namespace System::Sysutils;
namespace D7_string_list
{
bool CheckStageList()
{
bool result = false;
TStringList* Stages = nullptr;
Stages = new TStringList();
{
auto olsLambda = onLeavingScope([&]
{
delete Stages;
});
Stages->Add(L"scan");
Stages->Add(L"emit");
Stages->Insert(1, L"validate");
Stages->Exchange(0, 2);
result = (Stages->ReadPropertyCount() == 3) && ((*Stages)[0] == L"emit") && ((*Stages)[1] == L"validate") && ((*Stages)[2] == L"scan") && (Stages->IndexOf(L"validate") == 1) && (Stages->IndexOf(L"missing") == -1);
}
return result;
}
bool CheckOptionValues()
{
bool result = false;
TStringList* Options = nullptr;
Options = new TStringList();
{
auto olsLambda = onLeavingScope([&]
{
delete Options;
});
Options->WritePropertyValues(L"mode", L"safe");
Options->WritePropertyValues(L"workers", L"6");
Options->WritePropertyValues(L"trace", L"off");
result = (Options->ReadPropertyNames(0) == L"mode") && (Options->ReadPropertyValues(L"mode") == L"safe") && (Options->ReadPropertyValues(L"workers") == L"6") && (Options->ReadPropertyValues(L"trace") == L"off");
}
return result;
}
bool CheckDelimitedFields()
{
bool result = false;
TStringList* Fields = nullptr;
Fields = new TStringList();
{
auto olsLambda = onLeavingScope([&]
{
delete Fields;
});
Fields->WritePropertyDelimiter(L';');
Fields->WritePropertyQuoteChar(L'\"');
Fields->WritePropertyStrictDelimiter(true);
Fields->WritePropertyDelimitedText(L"alpha;\"two words\";omega");
result = (Fields->ReadPropertyCount() == 3) && ((*Fields)[0] == L"alpha") && ((*Fields)[1] == L"two words") && ((*Fields)[2] == L"omega");
}
return result;
}
bool CheckFileRoundTrip()
{
bool result = false;
TStringList* SourceLines = nullptr;
TStringList* LoadedLines = nullptr;
String FileName;
FileName = L"d7_string_list.tmp";
SourceLines = new TStringList();
LoadedLines = new TStringList();
{
auto olsLambda = onLeavingScope([&]
{
delete LoadedLines;
delete SourceLines;
if(FileExists(FileName))
DeleteFile(FileName);
});
SourceLines->Add(L"first=alpha");
SourceLines->Add(L"second=beta");
SourceLines->SaveToFile(FileName);
LoadedLines->LoadFromFile(FileName);
result = (LoadedLines->ReadPropertyCount() == 2) && (LoadedLines->ReadPropertyValues(L"first") == L"alpha") && (LoadedLines->ReadPropertyValues(L"second") == L"beta");
}
return result;
}
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;
}
} // namespace D7_string_list
Der Code wurde generiert aus:
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.
English
| Letzte Neuigkeiten |
|
01.09.26
Delphi2Cpp 2.8.0: Wartungsupdate mit Fehlerkorrekturen und Verbesserungen [more...] |
|
18.05.26
Delphi2Cpp 2.7: Übersetzungsheuristiken [more...] |
|
"die Projekte haben wir erfolgreich beendet, die Anwendungen laufen (zum überwiegenden Teil) bereits bei unseren Kunden." ProCom AUTOMATION
26.05.2026
|
|
[aus Fallstudie...] "Eine Meisterleistung -- Delphi2Cpp hat alle meine Erwartungen weit übertroffen." Tony Hürlimann
virtual-optima
29.08.2011
|
|
"Ich muss mich nochmal für deinen Einsatz und die Qualität deiner Arbeit bedanken, das ist absolut überdurchschnittlich ..." Gerald Ebner
Significant Software
22.01.2010
|
|
Diese Homepage ist aus einfachen Texten mit
[Minimal Website]
generiert.
|
Minimal Website ist mit Hilfe des TextTransformers hergestellt.
|
Der TextTransformer ist gemacht mit dem Borland
C++Builder
|