unit frm_Main;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
mormot.core.base,
mormot.core.data,
mormot.core.json,
mormot.core.rtti,
mormot.core.test,
mormot.core.perf,
mormot.core.os;
type
{$M+}
TecRmiData =
class
private
FTypeId:
string;
FTcdTypeId:
string;
FHerstSchluessel:
string;
FTypSchluessel:
string;
FVvs_Schluessel:
string;
FTypVvsPruefziffer:
string;
FFahrzeugklasse:
string;
FCodeAufbau:
string;
FFabrikMarke:
string;
FAmtlKlartextTyp:
string;
FVariante:
string;
FVersion:
string;
FHandelsName:
string;
FHerstText:
string;
FAmtlKlartextaufbau:
string;
FTxtKraftstoffKurz:
string;
FCodeKraftstoff:
string;
FHubraum:
string;
FAnzAchsen:
string;
FAbgasrichtlTg:
string;
FNationaleEmiklasse:
string;
FAntriebsachs:
string;
FNennleistungKw4:
string;
FNennleistungElektro30Min:
string;
FHoechstgeschwindigkeit:
string;
FAnzahlSitze:
string;
FMasseFahrbereitMin:
string;
FMasseFahrbereitMax:
string;
FTechZulGesamtMasse:
string;
FZulMaxAchsLast1:
string;
FZulMaxAchsLast2:
string;
FCo2Kombi:
string;
FStandgeraeusch3:
string;
FDrehStandgeraeusch:
string;
FFahrgeraeusch3:
string;
FTechnZulAnhaengerLastGebrem:
string;
FTechnZulAnhaengerLastUngebrem:
string;
FLeistungsGew:
string;
FLaengeMin:
string;
FLaengeMax:
string;
FBreiteMin:
string;
FBreiteMax:
string;
FHoeheMin:
string;
FHoeheMax:
string;
FStuetzLast:
string;
FBereifAchse1:
string;
FBereifAchse2:
string;
FGenehmigungsNr01:
string;
FGenehmigungsDat01:
string;
FBemerkungenAusnahmen:
string;
FAnmerkungen:
string;
FTxAnbringFzidnr:
string;
FBaumuster:
string;
FTxGetrTyp:
string;
FFelgeAchse1:
string;
FFelgeAchse2:
string;
published
property TypeId:
string
read FTypeId
write FTypeId;
property TcdTypeId:
string
read FTcdTypeId
write FTcdTypeId;
property HerstSchluessel:
string
read FHerstSchluessel
write FHerstSchluessel;
property TypSchluessel:
string
read FTypSchluessel
write FTypSchluessel;
property Vvs_Schluessel:
string
read FVvs_Schluessel
write FVvs_Schluessel;
property TypVvsPruefziffer:
string
read FTypVvsPruefziffer
write FTypVvsPruefziffer;
property Fahrzeugklasse:
string
read FFahrzeugklasse
write FFahrzeugklasse;
property CodeAufbau:
string
read FCodeAufbau
write FCodeAufbau;
property FabrikMarke:
string
read FFabrikMarke
write FFabrikMarke;
property AmtlKlartextTyp:
string
read FAmtlKlartextTyp
write FAmtlKlartextTyp;
property Variante:
string
read FVariante
write FVariante;
property Version:
string
read FVersion
write FVersion;
property HandelsName:
string
read FHandelsName
write FHandelsName;
property HerstText:
string
read FHerstText
write FHerstText;
property AmtlKlartextaufbau:
string
read FAmtlKlartextaufbau
write FAmtlKlartextaufbau;
property TxtKraftstoffKurz:
string
read FTxtKraftstoffKurz
write FTxtKraftstoffKurz;
property CodeKraftstoff:
string
read FCodeKraftstoff
write FCodeKraftstoff;
property Hubraum:
string
read FHubraum
write FHubraum;
property AnzAchsen:
string
read FAnzAchsen
write FAnzAchsen;
property AbgasrichtlTg:
string
read FAbgasrichtlTg
write FAbgasrichtlTg;
property NationaleEmiklasse:
string
read FNationaleEmiklasse
write FNationaleEmiklasse;
property Antriebsachs:
string
read FAntriebsachs
write FAntriebsachs;
property NennleistungKw4:
string
read FNennleistungKw4
write FNennleistungKw4;
property NennleistungElektro30Min:
string
read FNennleistungElektro30Min
write FNennleistungElektro30Min;
property Hoechstgeschwindigkeit:
string
read FHoechstgeschwindigkeit
write FHoechstgeschwindigkeit;
property AnzahlSitze:
string
read FAnzahlSitze
write FAnzahlSitze;
property MasseFahrbereitMin:
string
read FMasseFahrbereitMin
write FMasseFahrbereitMin;
property MasseFahrbereitMax:
string
read FMasseFahrbereitMax
write FMasseFahrbereitMax;
property TechZulGesamtMasse:
string
read FTechZulGesamtMasse
write FTechZulGesamtMasse;
property ZulMaxAchsLast1:
string
read FZulMaxAchsLast1
write FZulMaxAchsLast1;
property ZulMaxAchsLast2:
string
read FZulMaxAchsLast2
write FZulMaxAchsLast2;
property Co2Kombi:
string
read FCo2Kombi
write FCo2Kombi;
property Standgeraeusch3:
string
read FStandgeraeusch3
write FStandgeraeusch3;
property DrehStandgeraeusch:
string
read FDrehStandgeraeusch
write FDrehStandgeraeusch;
property Fahrgeraeusch3:
string
read FFahrgeraeusch3
write FFahrgeraeusch3;
property TechnZulAnhaengerLastGebrem:
string
read FTechnZulAnhaengerLastGebrem
write FTechnZulAnhaengerLastGebrem;
property TechnZulAnhaengerLastUngebrem:
string
read FTechnZulAnhaengerLastUngebrem
write FTechnZulAnhaengerLastUngebrem;
property LeistungsGew:
string
read FLeistungsGew
write FLeistungsGew;
property LaengeMin:
string
read FLaengeMin
write FLaengeMin;
property LaengeMax:
string
read FLaengeMax
write FLaengeMax;
property BreiteMin:
string
read FBreiteMin
write FBreiteMin;
property BreiteMax:
string
read FBreiteMax
write FBreiteMax;
property HoeheMin:
string
read FHoeheMin
write FHoeheMin;
property HoeheMax:
string
read FHoeheMax
write FHoeheMax;
property StuetzLast:
string
read FStuetzLast
write FStuetzLast;
property BereifAchse1:
string
read FBereifAchse1
write FBereifAchse1;
property BereifAchse2:
string
read FBereifAchse2
write FBereifAchse2;
property GenehmigungsNr01:
string
read FGenehmigungsNr01
write FGenehmigungsNr01;
property GenehmigungsDat01:
string
read FGenehmigungsDat01
write FGenehmigungsDat01;
property BemerkungenAusnahmen:
string
read FBemerkungenAusnahmen
write FBemerkungenAusnahmen;
property Anmerkungen:
string
read FAnmerkungen
write FAnmerkungen;
property TxAnbringFzidnr:
string
read FTxAnbringFzidnr
write FTxAnbringFzidnr;
property Baumuster:
string
read FBaumuster
write FBaumuster;
property TxGetrTyp:
string
read FTxGetrTyp
write FTxGetrTyp;
property FelgeAchse1:
string
read FFelgeAchse1
write FFelgeAchse1;
property FelgeAchse2:
string
read FFelgeAchse2
write FFelgeAchse2;
end;
{$M-}
TecRmiDataDynArray =
array of TecRmiData;
type
{$M+}
TKbaDataResult =
class(TObject)
private
FSearchKey:
string;
FTooMuchResults: Boolean;
FNumberOfResults: Integer;
FNumberOfPossibleResults: Integer;
FFoundData: TecRmiDataDynArray;
public
destructor Destroy;
override;
published
property SearchKey:
string
read FSearchKey
write FSearchKey;
property TooMuchResults: Boolean
read FTooMuchResults
write FTooMuchResults;
property NumberOfResults: Integer
read FNumberOfResults
write FNumberOfResults;
property NumberOfPossibleResults: Integer
read FNumberOfPossibleResults
write FNumberOfPossibleResults;
property FoundData: TecRmiDataDynArray
read FFoundData;
end;
{$M-}
type
TfrmMain =
class(TForm)
btnSpeed: TButton;
procedure btnSpeedClick(Sender: TObject);
private
FTimer: TPrecisionTimer;
public
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
destructor TKbaDataResult.Destroy;
begin
ObjArrayClear(FFoundData);
inherited Destroy;
end;
procedure TfrmMain.btnSpeedClick(Sender: TObject);
begin
var data: TKbaDataResult := TKbaDataResult.Create;
try
var jsonFileName: TFileName := ChangeFileExt(Executable.ProgramFileName, '
.json');
var json: RawJson := StringFromFile(jsonFileName);
if json = '
'
then
begin
SetLength(data.FFoundData, 500);
for var i: Integer := 0
to High(data.FFoundData)
do
begin
data.FFoundData[i] := TecRmiData.Create;
for var run: TRttiCustomProp
in Rtti.ByClass[TecRmiData].Props.List
do
run.SetValueText(data.FFoundData[i], TSynTestCase.RandomIdentifier(10 + Random(20)));
end;
if ObjectToJsonFile(data, jsonFileName)
then
json := StringFromFile(jsonFileName);
end;
FTimer.Start;
if ObjectLoadJson(data, json)
then
ShowMessage(Format('
Total time Delphi: %s', [FTimer.Time]));
finally
data.Free;
end;
end;
initialization
Rtti.RegisterObjArrays([
TypeInfo(TecRmiDataDynArray), TecRmiData]);
end.