diff --git a/generator/Common/generate.common.pas b/generator/Common/generate.common.pas index e2fb7e2..78eacaa 100644 --- a/generator/Common/generate.common.pas +++ b/generator/Common/generate.common.pas @@ -7,20 +7,18 @@ interface uses - Classes -, SysUtils -{$IFDEF FPC} -{$ELSE} -{$ENDIF} -; - -const - cSeed: LongInt = 46668267; // '1BRC' in ASCII - cColdestTemp = -99.9; - cHottestTemp = 99.9; + Classes, SysUtils, Math + {$IFDEF FPC} + , streamex, bufstream + {$ELSE} + , System.Diagnostics + {$ENDIF} + ; type -{ TGenerator } + + { TGenerator } + TGenerator = class(TObject) private FInputFile: String; @@ -29,10 +27,8 @@ TGenerator = class(TObject) FStationNames: TStringList; procedure BuildStationNames; - function GenerateProgressBar( - APBPosition, APBMax, APBWIdth, AFileSize:Int64; - ATimeElapsed: TDateTime - ):String; + function GenerateProgressBar(APBPosition, APBMax, APBWIdth, AFileSize: Int64; + ATimeElapsed: TDateTime): String; protected public constructor Create(AInputFile, AOutputFile: String; ALineCount: Int64); @@ -42,42 +38,37 @@ TGenerator = class(TObject) published end; -implementation + {$IFNDEF FPC} + TStringArray = array of string; + TWriteBufStream = TBufferedFileStream; + {$ENDIF} -uses - Math -{$IFDEF FPC} -, streamex -, bufstream -{$ELSE} -, System.Diagnostics -{$ENDIF} -; +implementation const + cSeed: LongInt = 46668267; // '1BRC' in ASCII + cColdestTemp = -99.9; + cHottestTemp = 99.9; linesPercent = 10; stationsCapacity = 50000; chunkBatch = 10000; chunkCapacity = 20 * 1024 * 1024; lineEnding = #13#10; + lineBreak = #13; { TGenerator } -constructor TGenerator.Create( - AInputFile, - AOutputFile: String; - ALineCount: Int64 -); +constructor TGenerator.Create(AInputFile, AOutputFile: String; ALineCount: Int64); begin - FInputFile:= AInputFile; - FOutPutFile:= AOutputFile; - FLineCount:= ALineCount; + FInputFile := AInputFile; + FOutPutFile := AOutputFile; + FLineCount := ALineCount; - FStationNames:= TStringList.Create; - FStationNames.Capacity:= stationsCapacity; - FStationNames.UseLocale:= False; - FStationNames.Duplicates:= dupIgnore; - FStationNames.Sorted:= True; + FStationNames := TStringList.Create; + FStationNames.Capacity := stationsCapacity; + FStationNames.UseLocale := False; + FStationNames.Duplicates := dupIgnore; + FStationNames.Sorted := True; end; destructor TGenerator.Destroy; @@ -91,36 +82,43 @@ procedure TGenerator.BuildStationNames; inputStream: TFileStream; streamReader: TStreamReader; entry: String; - count: Int64 = 0; + count: Int64; start, stop: Int64; begin + count := 0; // cannot initialize vars in declaration (delphi complains) WriteLn('Building Weather Stations...'); // Load the Weather Station names if FileExists(FInputFile) then begin - inputStream:= TFileStream.Create(FInputFile, fmOpenRead); + inputStream := TFileStream.Create(FInputFile, fmOpenRead); try - streamReader:= TStreamReader.Create(inputStream); + streamReader := TStreamReader.Create(inputStream); try {$IFDEF FPC} - start:= GetTickCount64; + start := GetTickCount64; while not streamReader.Eof do + begin + entry := streamReader.ReadLine; + if entry[1] <> '#' then + begin + entry := entry.Split(';')[0]; + FStationNames.Add(entry); + Inc(count); + end; + end; + stop := GetTickCount64; {$ELSE} start := TStopwatch.GetTimeStamp; while not streamReader.EndOfStream do - {$ENDIF} begin - entry:= streamReader.ReadLine; + entry := streamReader.ReadLine; if entry[1] <> '#' then begin - entry:= entry.Split(';')[0]; + entry := entry.Split([';'])[0]; FStationNames.Add(entry); Inc(count); end; end; - {$IFDEF FPC} - stop:= GetTickCount64; - {$ELSE} stop := TStopwatch.GetTimeStamp; {$ENDIF} finally @@ -132,35 +130,29 @@ procedure TGenerator.BuildStationNames; end else begin - raise Exception.Create(Format('File "%s" not found.', [ FInputFile ])); + raise Exception.Create(Format('File "%s" not found.', [FInputFile])); end; - WriteLn(Format('Done: Processed %.n entries from a total of %.n weather stations in %d ms', [ - Double(count), - Double(FStationNames.Count), - stop-start - ])); + WriteLn(Format + ('Done: Processed %.n entries from a total of %.n weather stations in %d ms', + [Double(count), Double(FStationNames.count), stop - start])); WriteLn; end; -function TGenerator.GenerateProgressBar( - APBPosition, APBMax, APBWIdth, AFileSize: Int64; - ATimeElapsed: TDateTime -): String; +function TGenerator.GenerateProgressBar(APBPosition, APBMax, APBWIdth, AFileSize: Int64; + ATimeElapsed: TDateTime): String; var percentDone: Double; filled: Integer; begin - percentDone:= (100 * APBPosition) / APBMax; - filled:= (APBWIdth * APBPosition ) div APBMax; - Result:= '['; - Result:= Result + StringOfChar('#', filled); - Result:= Result + StringOfChar('-', APBWIdth - filled); - Result:= Result + Format('] %5.2f %%', [ percentDone ]); - Result:= Result + Format(' lines: %.n, file size: %.n, elapsed: %s ', [ - Double(APBPosition), - Double(AFileSize), - FormatDateTime('n" min, "s" sec"', ATimeElapsed) - ]); + percentDone := (100 * APBPosition) / APBMax; + filled := (APBWIdth * APBPosition) div APBMax; + Result := '['; + Result := Result + StringOfChar('#', filled); + Result := Result + StringOfChar('-', APBWIdth - filled); + Result := Result + Format('] %5.2f %%', [percentDone]); + Result := Result + Format(' lines: %.n, file size: %.n, elapsed: %s ', + [Double(APBPosition), Double(AFileSize), FormatDateTime('n" min, "s" sec"', + ATimeElapsed)]); end; procedure TGenerator.Generate; @@ -178,20 +170,20 @@ procedure TGenerator.Generate; begin // Randomize sets this variable depending on the current time // We just set it to our own value - RandSeed:= cSeed; + RandSeed := cSeed; // Build list of station names BuildStationNames; - outputFileStream:= TBufferedFileStream.Create(FOutPutFile, fmCreate); + outputFileStream := TBufferedFileStream.Create(FOutPutFile, fmCreate); - progressBatch:= floor(FLineCount * (linesPercent / 100)); - start:= Now; + progressBatch := floor(FLineCount * (linesPercent / 100)); + start := Now; // This is all paweld magic: // From here - //based on code @domasz from lazarus forum, github: PascalVault - stationsCount := FStationNames.Count; + // based on code @domasz from lazarus forum, github: PascalVault + stationsCount := FStationNames.count; SetLength(stationArray, stationsCount); SetLength(LenStationArray, stationsCount); for index := 0 to stationsCount - 1 do @@ -209,10 +201,15 @@ procedure TGenerator.Generate; begin randomTempStr := IntToStr(index); case Ord(randomTempStr[0]) of - 1: randomTempFinal := '0.' + randomTempStr; - 2: randomTempFinal := randomTempStr[1] + '.' + randomTempStr[2]; - 3: randomTempFinal := randomTempStr[1] + randomTempStr[2] + '.' + randomTempStr[3]; - 4: randomTempFinal := randomTempStr[1] + randomTempStr[2] + randomTempStr[3] + '.' + randomTempStr[4]; + 1: + randomTempFinal := '0.' + randomTempStr; + 2: + randomTempFinal := randomTempStr[1] + '.' + randomTempStr[2]; + 3: + randomTempFinal := randomTempStr[1] + randomTempStr[2] + '.' + randomTempStr[3]; + 4: + randomTempFinal := randomTempStr[1] + randomTempStr[2] + randomTempStr[3] + '.' + + randomTempStr[4]; end; temperatureArray[index * 2 - 1] := randomTempFinal + lineEnding; LenTemperatureArray[index * 2 - 1] := Length(temperatureArray[index * 2 - 1]); @@ -227,17 +224,19 @@ procedure TGenerator.Generate; try // Print first state of the progress bar - Write(GenerateProgressBar(1, FLineCount, 50, 0, Now - start), #13); + Write(GenerateProgressBar(1, FLineCount, 50, 0, Now - start), lineBreak); // Generate the file - for index:= 1 to FLineCount do + for index := 1 to FLineCount do begin - stationId:= Random(stationsCount); + stationId := Random(stationsCount); // This is all paweld magic: // From here - randomTemp:= Random(temperaturesCount); - Move(stationArray[stationId][1], chunkLine[chunkLen + 1], LenStationArray[stationId]); + randomTemp := Random(temperaturesCount); + Move(stationArray[stationId][1], chunkLine[chunkLen + 1], + LenStationArray[stationId]); Inc(chunkLen, LenStationArray[stationId]); - Move(temperatureArray[randomTemp][1], chunkLine[chunkLen + 1], LenTemperatureArray[randomTemp]); + Move(temperatureArray[randomTemp][1], chunkLine[chunkLen + 1], + LenTemperatureArray[randomTemp]); Inc(chunkLen, LenTemperatureArray[randomTemp]); Dec(chunkCount); @@ -251,31 +250,28 @@ procedure TGenerator.Generate; Dec(progressBatch); if progressBatch = 0 then begin - Write(GenerateProgressBar( - index, - FLineCount, - 50, - outputFileStream.Size, - Now - start - ), #13); - progressBatch:= floor(FLineCount * (linesPercent / 100)); + Write(GenerateProgressBar(index, FLineCount, 50, outputFileStream.Size, + Now - start), lineBreak); + progressBatch := floor(FLineCount * (linesPercent / 100)); end; end; + if chunkCount > 0 then begin outputFileStream.WriteBuffer(chunkLine[1], chunkLen); + {$IFDEF FPC} outputFileStream.Flush; + {$ELSE} + outputFileStream.FlushBuffer; + {$ENDIF} end; finally WriteLn; WriteLn; - WriteLn(Format('Done: file size: %.n, elapsed: %s', [ - Double(outputFileStream.Size), - FormatDateTime('n" min, "s" sec"', Now - start) - ])); + WriteLn(Format('Done: file size: %.n, elapsed: %s', [Double(outputFileStream.Size), + FormatDateTime('n" min, "s" sec"', Now - start)])); outputFileStream.Free; end; end; end. - diff --git a/generator/Common/generate.console.pas b/generator/Common/generate.console.pas index dfb4acc..605d189 100644 --- a/generator/Common/generate.console.pas +++ b/generator/Common/generate.console.pas @@ -20,9 +20,11 @@ interface cLongOptInput = 'input-file'; cShortOptOutput: Char = 'o'; cLongOptOutput = 'output-file'; - cShortOptNumner: Char = 'n'; + cShortOptNumber: Char = 'n'; cLongOptNumber = 'line-count'; - + cShortOptions: array of char = ['h', 'v', 'i', 'o', 'n']; + cLongOptions: array of string = ['help', 'version', 'input-file', 'output-file', + 'line-count']; resourcestring rsAppTitle = 'One Billion Row Challenge Generator'; diff --git a/generator/Common/version.inc b/generator/Common/version.inc index eb28622..b66063c 100644 --- a/generator/Common/version.inc +++ b/generator/Common/version.inc @@ -1 +1,2 @@ -'0.3' +const + cVersion = '0.3'; diff --git a/generator/Delphi/src/generator.dpr b/generator/Delphi/src/generator.dpr new file mode 100644 index 0000000..49307ed --- /dev/null +++ b/generator/Delphi/src/generator.dpr @@ -0,0 +1,226 @@ +program generator; + +{$APPTYPE CONSOLE} + +uses + Classes, + SysUtils, + generate.common in '..\..\Common\generate.common.pas', + generate.console in '..\..\Common\generate.console.pas'; + +{$I version.inc} + +type + + { TOneBRCGenerator } + + TOneBRCGenerator = class(TComponent) + private + FGenerator: TGenerator; + FParams: TStringList; + protected + function ParseConsoleParams: boolean; + procedure Run; + public + destructor Destroy; override; + published + end; + + { TOneBRCGenerator } + +procedure TOneBRCGenerator.Run; +var + ErrorMsg: String; +begin + if ParseConsoleParams then + begin + inputFilename := ExpandFileName(inputFilename); + outputFilename := ExpandFileName(outputFilename); + + WriteLn(Format(rsInputFile, [inputFilename])); + WriteLn(Format(rsOutputFile, [outputFilename])); + WriteLn(Format(rsLineCount, [Double(lineCount)])); + WriteLn; + + FGenerator := TGenerator.Create(inputFilename, outputFilename, lineCount); + try + try + FGenerator.generate; + except + on E: Exception do + begin + WriteLn(Format(rsErrorMessage, [E.Message])); + end; + end; + finally + FGenerator.Free; + end; + end; +end; + +destructor TOneBRCGenerator.Destroy; +begin + if Assigned(FParams) then + FreeAndNil(FParams); + inherited; +end; + +function TOneBRCGenerator.ParseConsoleParams: boolean; +var + I, J, invalid, valid: Integer; + tmpLineCount: String; + paramflag: boolean; + templist: TStringList; +begin + Result := false; + // initialize the params list + if not Assigned(FParams) then + FParams := TStringList.Create(dupIgnore, false, false); + + J := 0; + for I := 1 to ParamCount do + begin + if pos('--', ParamStr(I)) > 0 then + begin + FParams.Add(Copy(ParamStr(I), 3, ParamStr(I).Length)); + inc(J); + end + else if pos('-', ParamStr(I)) > 0 then + begin + FParams.Add(Copy(ParamStr(I), 2, ParamStr(I).Length)); + inc(J); + end + else + FParams.Strings[J - 1] := FParams.Strings[J - 1] + '=' + ParamStr(I); + end; + + // ************************************ + // parsing + // ************************************ + // check for invalid input + templist := TStringList.Create; + try + templist.Text := FParams.Text; + if templist.Count > 0 then + begin + for I := 0 to pred(Length(cShortOptions)) do + begin + J := templist.IndexOfName(cShortOptions[I]); + if J > -1 then + templist.Delete(J); + end; + + for I := 0 to pred(Length(cLongOptions)) do + begin + J := templist.IndexOfName(cLongOptions[I]); + if J > -1 then + templist.Delete(J); + end; + + if templist.Count > 0 then + begin + WriteLn(Format(rsErrorMessage, [templist.Text])); + Result := false; + exit; + end; + + end + else + begin + Result := false; + exit; + end; + + // ************************************ + // check for valid inputs + // check help + if (FParams.Find(cShortOptHelp, J) or FParams.Find(cLongOptHelp, J)) then + begin + WriteHelp; + inc(invalid); + end; + + // check version + if (FParams.Find(cShortOptVersion, J) or FParams.Find(cLongOptVersion, J)) then + begin + WriteLn(Format(rsGeneratorVersion, [cVersion])); + inc(invalid); + end; + + // check inputfilename + J := -1; + J := FParams.IndexOfName(cShortOptInput); + if J = -1 then + J := FParams.IndexOfName(cLongOptInput); + if J = -1 then + begin + WriteLn(Format(rsErrorMessage, [rsMissingInputFlag])); + inc(invalid); + end + else + begin + inputFilename := FParams.ValueFromIndex[J]; + inc(valid); + end; + + // check outputfilename + J := -1; + J := FParams.IndexOfName(cShortOptOutput); + if J = -1 then + J := FParams.IndexOfName(cLongOptOutput); + if J = -1 then + begin + WriteLn(Format(rsErrorMessage, [rsMissingOutputFlag])); + inc(invalid); + end + else + begin + outputFilename := FParams.ValueFromIndex[J]; + inc(valid); + end; + + // check linecount + J := -1; + J := FParams.IndexOfName(cShortOptNumber); + if J = -1 then + J := FParams.IndexOfName(cLongOptNumber); + if J = -1 then + begin + WriteLn(Format(rsErrorMessage, [rsMissingLineCountFlag])); + inc(invalid); + end + else + begin + tmpLineCount := FParams.ValueFromIndex[J].Replace('_', '', [rfReplaceAll]); + + if not TryStrToInt64(tmpLineCount, lineCount) then + begin + WriteLn(Format(rsInvalidInteger, [tmpLineCount])); + inc(invalid); + end; + + if not(lineCount > 0) then + begin + WriteLn(Format(rsErrorMessage, [rsInvalidLineNumber])); + inc(invalid); + end; + inc(valid); + end; + + // check if everything was provided + Result := valid = 3; + finally + templist.Free; + end; + +end; + +var + Application: TOneBRCGenerator; + +begin + Application := TOneBRCGenerator.Create(nil); + Application.Run; + Application.Free; + +end. diff --git a/generator/Delphi/src/generator.dproj b/generator/Delphi/src/generator.dproj new file mode 100644 index 0000000..64034b1 --- /dev/null +++ b/generator/Delphi/src/generator.dproj @@ -0,0 +1,1213 @@ + + + {B76F2002-7604-4727-AB5A-3579AED28D3D} + 20.1 + None + True + Debug + Win32 + 129 + Console + generator.dpr + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + generator + + + fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + true + true + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png + false + true + $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml + activity-1.7.2.dex.jar;annotation-experimental-1.3.0.dex.jar;annotation-jvm-1.6.0.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-6.0.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.10.1.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.10.1.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.1.dex.jar;lifecycle-livedata-2.6.1.dex.jar;lifecycle-livedata-core-2.6.1.dex.jar;lifecycle-runtime-2.6.1.dex.jar;lifecycle-service-2.6.1.dex.jar;lifecycle-viewmodel-2.6.1.dex.jar;lifecycle-viewmodel-savedstate-2.6.1.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.1.0.dex.jar;play-services-basement-18.1.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.0.2.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar + + + fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + true + true + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml + $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml + $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png + false + true + $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml + activity-1.7.2.dex.jar;annotation-experimental-1.3.0.dex.jar;annotation-jvm-1.6.0.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-6.0.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.10.1.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.10.1.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.1.dex.jar;lifecycle-livedata-2.6.1.dex.jar;lifecycle-livedata-core-2.6.1.dex.jar;lifecycle-runtime-2.6.1.dex.jar;lifecycle-service-2.6.1.dex.jar;lifecycle-viewmodel-2.6.1.dex.jar;lifecycle-viewmodel-savedstate-2.6.1.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.1.0.dex.jar;play-services-basement-18.1.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.0.2.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar + + + DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;emsedge;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;dbexpress;FireDACInfxDriver;inet;DataSnapCommon;dbrtl;FireDACOracleDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;dsnapxml;DataSnapClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;xmlrtl;dsnap;CloudService;FireDACDb2Driver;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + C:\Users\onemo\Desktop\exemplos Delphi_Lazarus\1brc-ObjectPascal\generator\Common;$(DCC_UnitSearchPath) + /usr/bin/gnome-terminal -- "%debuggee%" + (None) + none + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;BrookTardigrade;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;Skia.Package.FMX;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + true + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;BrookTardigrade;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) + true + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + + + DEBUG;$(DCC_Define) + true + false + true + true + true + true + true + + + /usr/bin/gnome-terminal -- "%debuggee%" + (None) + none + + + false + C:\Users\onemo\Desktop\exemplos Delphi_Lazarus\1brc-ObjectPascal\generator\Common;$(DCC_UnitSearchPath) + 1033 + (None) + none + -i weather_stations.csv -o teste.txt -n 1000000000 + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + + MainSource + + + + + Base + + + Cfg_1 + Base + + + Cfg_2 + Base + + + + Delphi.Personality.12 + Application + + + + generator.dpr + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + true + + + + + true + + + + + true + + + + + .\ + true + + + + + generator + true + + + + + generator.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + classes + 64 + + + classes + 64 + + + + + res\xml + 1 + + + res\xml + 1 + + + + + library\lib\armeabi + 1 + + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\mips + 1 + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v21 + 1 + + + res\drawable-anydpi-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values-v31 + 1 + + + res\values-v31 + 1 + + + + + res\drawable-anydpi-v26 + 1 + + + res\drawable-anydpi-v26 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-anydpi-v33 + 1 + + + res\drawable-anydpi-v33 + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\values-night-v21 + 1 + + + res\values-night-v21 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + + + + + res\drawable-small + 1 + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + + + + + res\drawable-anydpi-v24 + 1 + + + res\drawable-anydpi-v24 + 1 + + + + + res\drawable + 1 + + + res\drawable + 1 + + + + + res\drawable-night-anydpi-v21 + 1 + + + res\drawable-night-anydpi-v21 + 1 + + + + + res\drawable-anydpi-v31 + 1 + + + res\drawable-anydpi-v31 + 1 + + + + + res\drawable-night-anydpi-v31 + 1 + + + res\drawable-night-anydpi-v31 + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + Contents + 1 + + + Contents + 1 + + + Contents + 1 + + + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + library\lib\arm64-v8a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\$(PROJECTNAME).launchscreen + 64 + + + ..\$(PROJECTNAME).launchscreen + 64 + + + + + 1 + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset + 1 + + + + + + + + + + + + + + + + False + False + True + True + False + + + 12 + + + + + diff --git a/generator/Lazarus/src/generator.lpr b/generator/Lazarus/src/generator.lpr index 01aeabf..ea20b1f 100644 --- a/generator/Lazarus/src/generator.lpr +++ b/generator/Lazarus/src/generator.lpr @@ -13,8 +13,7 @@ , Generate.Common ; -const - cVersion = {$I version.inc}; +{$I version.inc} type @@ -44,7 +43,7 @@ procedure TOneBRCGenerator.DoRun; cShortOptVersion, cShortOptInput, cShortOptOutput, - cShortOptNumner + cShortOptNumber ]), [ cLongOptHelp, @@ -105,7 +104,7 @@ procedure TOneBRCGenerator.DoRun; Exit; end; - if HasOption(cShortOptNumner, cLongOptNumber) then + if HasOption(cShortOptNumber, cLongOptNumber) then begin tmpLineCount:=GetOptionValue( cShortOptNumner,