Как добавить большую строку в TStringList

Я хотел бы использовать TStringList для анализа выходных данных из «ipconfig / all».

Если я использую AddStrings, вся возвращаемая строка заканчивается в первом элементе. Я пытался использовать LoadFromStream, но компилятор дает мне

нет соответствующей функции-члена для вызова LoadFromStream

а также

функция-кандидат недопустима: нет известного преобразования из ‘String’ (он же ‘System :: UnicodeString’) в ‘System :: Classes :: TStream *’ для первого аргумента

Любые идеи о том, как я могу получить строку в потоке, или другой способ получить возвращаемую строку в моем TStringList?

TStringList *IPConfig = new TStringList;
IPConfig->AddStrings(ExecuteExternalFile("ipconfig", "/all", false));  //everything returned ends up in one element defeating the purpose of using a TStringList
IPConfig->LoadFromStream(ExecuteExternalFile("ipconfig", "/all", false));  //won't compile

0

Решение

Спасибо, что отвез меня обратно в Delimiter имущество. Я вернулся к нему и обнаружил, что в нем есть ошибка, которая требует от вас установить StrictDelimiter в противном случае это всегда будет разделять ваш текст через пробел. Теперь все отлично работает. Спасибо!

IPConfig->StrictDelimiter = true;
IPConfig->Delimiter = '\n';
IPConfig->DelimitedText = ExecuteExternalFile("ipconfig", "/all", false);
0

Другие решения

Вы можете использовать TStringStream с LoadFromStream():

TStringList *IPConfig = new TStringList;
TStringStream *Strm = new TStringStream(ExecuteExternalFile("ipconfig", "/all", false));
IPConfig->LoadFromStream(Strm);
delete Strm;
...
delete IPConfig;
0

По вопросам рекламы [email protected]