maket online

This commit is contained in:
2024-04-18 19:21:54 +05:00
parent 9213c4fa57
commit 1a0437f848
14 changed files with 153 additions and 31 deletions
@@ -1,6 +1,7 @@
// Copyright Epic Games, Inc. All Rights Reserved.
#include "manageTextFileBPLibrary.h"
#include "Kismet/KismetStringLibrary.h"
#include "manageTextFile.h"
UmanageTextFileBPLibrary::UmanageTextFileBPLibrary(const FObjectInitializer& ObjectInitializer)
@@ -72,4 +73,36 @@ bool UmanageTextFileBPLibrary::readFile(FString Path, FString FileName,FString &
FString fullpath = Path + "\\" + FileName;
return FFileHelper::LoadFileToString(Str, *fullpath);
}
}
bool UmanageTextFileBPLibrary::parseIniFile(FString Path, FString FileName, TMap<FString, FString>& Pairs) {
FString outstr;
readFile(Path, FileName, outstr);
FJsonSerializableArray arr;
outstr.ParseIntoArrayLines(arr);
for (auto& a : arr) {
a.TrimStartAndEndInline();
if (a.StartsWith("#") || a.StartsWith(";")) continue;
FString k;
FString v;
if (!a.Split(L"=", &k, &v)) continue;
k.TrimStartAndEndInline();
v.TrimStartAndEndInline();
Pairs.Add(k, v);
}
return !Pairs.IsEmpty();
}
FString UmanageTextFileBPLibrary::getValueFromIniFile(FString Path, FString FileName, FString Key, bool& exists, int& asInt, double& asFloat) {
TMap<FString, FString> pairs;
parseIniFile(Path, FileName, pairs);
const auto out=pairs.Find(Key);
if (!out) {
exists = false;
return FString();
}
asInt = UKismetStringLibrary::Conv_StringToInt(*out);
asFloat = UKismetStringLibrary::Conv_StringToDouble(*out);
exists = true;
return *out;
}
@@ -40,4 +40,11 @@ class UmanageTextFileBPLibrary : public UBlueprintFunctionLibrary
static bool DeleteFile(FString Path, FString FileName);
UFUNCTION(BlueprintCallable, Category = "manageTextFile")
static bool readFile(FString Path, FString FileName, FString & Str);
/*# or ; at line begin is comment. line-by-line key=value.*/
UFUNCTION(BlueprintCallable, Category = "manageTextFile")
static bool parseIniFile(FString Path, FString FileName, TMap<FString, FString>& Pairs);
/*# or ; at line begin is comment. line-by-line key=value.*/
UFUNCTION(BlueprintCallable, Category = "manageTextFile")
static FString getValueFromIniFile(FString Path, FString FileName, FString Key, bool& exists, int& asInt, double& asFloat);
};