COM, ВАРИАНТ, содержащий BSTR. Кто выделяет?

Используйте метод Split из класса C # String; см. эту ссылку

Не забудьте добавить using System.Text.RegularExpressions; вместе с другими using утверждениями

public string ExtractValue(string source, string start, string end) {
    string[] str = Regex.Split(source, start);
    string[] str2 = Regex.Split(str[1], end);
    return str2[0];
}

9
задан moogs 4 November 2008 в 09:42
поделиться

1 ответ

Когда Вы вызываете функцию COM со строками или ВАРИАНТАМИ в большинстве случаев, единственный необходимый garantuee - то, что те объекты доступны всюду по самому вызову. После вызова сам объект ответственен за то, что сделал копии данных. Например, ВАРИАНТ будет, скорее всего, использовать функцию VariantCopy, которая скопирует строки, скопирует COM-объекты (увеличивает подсчет ссылок). Единственная вещь, о которой необходимо волноваться, состоит в том при передаче фактического интерфейса в ВАРИАНТЕ: в этом случае интерфейс должен быть правильно ссылочный считаемый, и QueryInterface, AddRef, и Выпуск должен все быть реализован соответственно. И никогда не освобождайте тот объект, прежде чем подсчет ссылок достигнет 0 ;)

Править: О, и если Вы хотите узнать больше о программировании COM, убедиться получить "Существенный COM" "Don Box". Don Box является гуру COM, и та книга будет преподавать Вам почти что-либо, что Вы когда-либо хотели бы знать о COM и больше ;)

14
ответ дан 4 December 2019 в 14:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: