Size: a a a

2019 April 13

AR

Alexey Rodionov in Unreal Engine
Как связанно "большой" и "крашит"? Если в память влезает ничего крашить не должно. 99.9% что проблемы в твоём коде. А экстрасенсов тут вроде нет
источник

I

Ilya in Unreal Engine
Большой - около 38000 вхождений
источник

I

Ilya in Unreal Engine
когда forloop по нему проходит иногда пишет infinite loop detected
источник

AR

Alexey Rodionov in Unreal Engine
В блюпринтах что-ли?
источник

I

Ilya in Unreal Engine
из блюпринтов вызывается с++ код
источник

I

Ilya in Unreal Engine
я пытаюсь асинхронно писать массив стрингов в файлик
источник

I

Ilya in Unreal Engine
чтобы анрил не вис во время записи
источник

P

Pavel in Unreal Engine
В анриле для BP есть защита от бесконечного зацикливания, где-то в настройках проекта вроде было число итераций после которого цикл считается бесконечным, можно его увеличить например.
источник

P

Pavel in Unreal Engine
Точнее сейчас сложно сказать, не у компа
источник

I

Ilya in Unreal Engine
так запись происходит в с++
источник

I

Ilya in Unreal Engine
и цикл тоже там
источник

AS

Alexander Shumeyko in Unreal Engine
Ilya
когда forloop по нему проходит иногда пишет infinite loop detected
А это что?
источник

P

Pavel in Unreal Engine
Я бы все равно попробовал подтюнить это число. Там все как-то хитро считается, там то ли считается количество вызовов функции в одном кадре, то ли что-то такое
источник

AR

Alexey Rodionov in Unreal Engine
А зачем вообще строки копируются, если в файл записывать надо?
источник

AR

Alexey Rodionov in Unreal Engine
По значению что-ли массив на 38000 элементов передается?
источник

I

Ilya in Unreal Engine
FString dataString = "";

 IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
 if (PlatformFile.FileExists(*pathToFile) && !rewrite)
 {
   UE_LOG(LogTemp, Warning, TEXT("existingDataString found"));
   FFileHelper::LoadFileToString(dataString, *pathToFile);
 }


 for (int32 i = 0; i < dataArray.Num() - 1; i++)
 {
   if (dataString != "")
     dataString.Append(LINE_TERMINATOR);

   dataString.Append(dataArray[i]);
 }
 FFileHelper::SaveStringToFile(dataString, *pathToFile, FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), rewrite ? FILEWRITE_NoFail : FILEWRITE_Append);
источник

I

Ilya in Unreal Engine
Pavel
Я бы все равно попробовал подтюнить это число. Там все как-то хитро считается, там то ли считается количество вызовов функции в одном кадре, то ли что-то такое
а название не вспомнишь?
источник

AS

Alexander Shumeyko in Unreal Engine
Alexander Shumeyko
настройки проета->maximum loop iteration count
Вот
источник

AR

Alexey Rodionov in Unreal Engine
Во-первых, минус 1 не надо. Ты последнюю строку не запишешь

Во-вторых, зачем ты читаешь файл, если можно делать append

Во-третьих, это очень не оптимально. Память под dataString перевыделяется 100500 раз
источник

I

Ilya in Unreal Engine
понял, исправил
источник