ОлеВариант для TStringList

#delphi

Вопрос:

Я отправляю на свой сервер с помощью COM , TStringList внутри параметра типа OleVariant. Назначение его не было проблемой. Но на сервере я хочу преобразовать обратно в TStringList. Каков был бы наиболее правильный способ сделать это?

Клиент:

 MetodClient(StringList.Text, OutParam);
 

Сервер:

 function MetodServer(InputParams: OleVariant; var OutputParams: OleVariant): OleVariant;
var
  MyList: TStringList;
begin
  MyList:= TStringList.Create;
  MyList.add(InputParams);
 

Как я это делаю, весь список Tstring добавляется с индексом 0

Комментарии:

1. Так же, как и при отправке — используйте текст. MyList.Text := InputParams;

2. Лично я бы сохранил TStringList содержимое в виде массива строк OleVariant , а не в виде одной строки.

3. @RemyLebeau Вы имеете в виду, повторять TStringList и на каждой итерации добавлять элемент в OleVariant преобразованный в массив вариант?

4. @jmontegrosso Массив строк, а не массив вариантов. Вариант OLE может содержать безопасный набор элементов BSTR. Но по сути да, повторите TStringList , чтобы создать массив, а затем повторите массив, чтобы повторно заполнить TStringList .

5. Передача массива строк, безусловно, была бы менее хрупкой. Использование текста вызывает проблемы, если какие-либо строки в списке уже содержат концы строк, поскольку они в конечном итоге разбиваются на несколько записей списка.