<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195488</guid>
        <pubDate>Fri, 28 Jul 2006 11:37:06 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195488</link>
        <description><![CDATA[SilverShield: Нет, это не 1С, это я сам намудрил :)]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195441</guid>
        <pubDate>Fri, 28 Jul 2006 11:18:07 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195441</link>
        <description><![CDATA[Romkin: Если хватает возможеностей FreeIBProvider - то это будет самое простое. Ничего передавать не надо. Ничего писать не надо. Установить провайдер - и вперед. ADO легко работает через позднее связывание, из любого VBA спокойно подключишься.<br>В 1С небось? Там тоже элементарно доступ через ADO получить. Правда, в 8 версии они накосячили с СОМ, так что...]]></description>
        <author>Romkin</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195424</guid>
        <pubDate>Fri, 28 Jul 2006 11:07:21 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195424</link>
        <description><![CDATA[SilverShield: <strong class='tag-b'>Romkin</strong>, спасибо&#33; Будет чем заняться в выходные :)<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=149604&view=findpost&p=1195374'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romkin &#064; <time class="tag-quote__quoted-time" datetime="2006-07-28T10:36:43+00:00">28.07.06, 10:36</time></span><div class='quote '>Кстати, а что, через ADO напрямую - никак? </div></div><br>
Я с FireBird работаю, потому и пользую IBX, через ADO то да, можно просто _Recordset через тотже OleVariant передать.]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195374</guid>
        <pubDate>Fri, 28 Jul 2006 10:36:43 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195374</link>
        <description><![CDATA[Romkin: Так писал бы сразу универсальный набор интерфейсов. На будущее. А то потом еще одну табличку перегнать понадобится, мало ли :)<br>И почему TDBGrid, неужели Fields датасета недостаточно? <br>Сделай проще: реализуй интерфейс IMyRecords как минимум с методами навигации и BOF/EOF, а из его проперти Fields возвращай другой интерфейс, коллекцию полей. А у него методы Count и ItemName(i) - BSTR (WideString), ItemValue(i) - здесь Variant возвращай. Достаточно будет. Понятно, берешь этот интерфейс, и когда у его владельца next вызвано - его методы возвращают значения полей другой записи. Вот так и перегонишь.<br>Кстати, а что, через ADO напрямую - никак? Там вообще ничего писать не надо, соединяешься - и вперед.]]></description>
        <author>Romkin</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195056</guid>
        <pubDate>Fri, 28 Jul 2006 08:18:21 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1195056</link>
        <description><![CDATA[SilverShield: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=149604&view=findpost&p=1194842'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romkin &#064; <time class="tag-quote__quoted-time" datetime="2006-07-28T06:28:18+00:00">28.07.06, 06:28</time></span><div class='quote '>А вот коллекцию делали, для передачи таблицы БД через интерфейс, там интерфейс доступа к коллекции интерфейсов </div></div><br>
<strong class='tag-b'>Romkin</strong>, можно здесь поподробней? Собственно это и есть изначальная задача: передать таблицу БД.<br>
Технология какая получается: создаю коллекцию (TColumns компонент TDBGrid), заполняю ее данными из моего запроса. При помощи методов типа GetRec(i) интерфейса выбираю по очереди из нее все записи, заталкиваю их в заготовленный record (интерфейса). А на другой стороне разгребаю эти record ы интерфеса...]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1194842</guid>
        <pubDate>Fri, 28 Jul 2006 06:28:18 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1194842</link>
        <description><![CDATA[SilverShield: :wacko: Наверное когда начну делать, станет понятней... Спасибо всем&#33;]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193875</guid>
        <pubDate>Thu, 27 Jul 2006 11:57:34 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193875</link>
        <description><![CDATA[Romkin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=149604&view=findpost&p=1193748'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>SilverShield &#064; <time class="tag-quote__quoted-time" datetime="2006-07-27T11:02:43+00:00">27.07.06, 11:02</time></span><div class='quote '>имеешь в виду сделать отдельный инерфейс с той структурой, что у меня сейчас в record? Но я ведь все равно не смогу передавать массив, только элементы по отдельности... Или я неправильно понял?</div></div><br>
По методу коллекции. На мой взгляд, строки так передавать удобнее. Объявляешь у себя в библиотеке типов record, и интерфейс с методами доступа к i-й записи (Минимум - в IEnumVariant, стандарт - см TCollection). Правда, с записями я не работал.<br>
А вот коллекцию делали, для передачи таблицы БД через интерфейс, там интерфейс доступа к коллекции интерфейсов :) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2006-07-27T11:59:19+00:00">27.07.06, 11:59</time></span></span><br>
Просто надо понимать, что типы, объявленные в библиотеке типов, при ее использовании становятся известными. А там можно объявить и перечисление, и запись...]]></description>
        <author>Romkin</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193777</guid>
        <pubDate>Thu, 27 Jul 2006 11:15:01 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193777</link>
        <description><![CDATA[jack128: сохраняешь данные в Stream в каком хочешь формате и перегоняешь этот стрим в OleVariant по методике Romkin&#39;a. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2006-07-27T11:15:05+00:00">27.07.06, 11:15</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=149604&view=findpost&p=1193761'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Testudo &#064; <time class="tag-quote__quoted-time" datetime="2006-07-27T11:08:31+00:00">27.07.06, 11:08</time></span><div class='quote '>есть ведь раздел для OLE/COM... </div></div><br>
олей тут слабо пахнет...]]></description>
        <author>jack128</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193766</guid>
        <pubDate>Thu, 27 Jul 2006 11:10:50 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193766</link>
        <description><![CDATA[Shaggy: uid, compname, uname, cstat, utype длиннее 255 символов?<br>
если нет, то использовать ShortString или String[Х] и передавать просто массив байт]]></description>
        <author>Shaggy</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193761</guid>
        <pubDate>Thu, 27 Jul 2006 11:08:31 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193761</link>
        <description><![CDATA[Testudo: Не в том разделе спрашиваешь, есть ведь раздел для OLE/COM...]]></description>
        <author>Testudo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193748</guid>
        <pubDate>Thu, 27 Jul 2006 11:02:43 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193748</link>
        <description><![CDATA[SilverShield: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=149604&view=findpost&p=1193697'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romkin &#064; <time class="tag-quote__quoted-time" datetime="2006-07-27T10:42:28+00:00">27.07.06, 10:42</time></span><div class='quote '>Почему бы тебе не сделать отдельный интерфейс для передачи коллекции? </div></div><br>
имеешь в виду сделать отдельный инерфейс с той структурой, что у меня сейчас в record? Но я ведь все равно не смогу передавать массив, только элементы по отдельности...  Или я неправильно понял?]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193697</guid>
        <pubDate>Thu, 27 Jul 2006 10:42:28 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193697</link>
        <description><![CDATA[Romkin: 1. Берешь переменную OleVariant<br>
2. Через VarArrayCreate делаешь в нем нужный массив<br>
3. Делаешь VarArrayLock - копируешь память - Делаешь VarArrayUnlock (в finally конечно)<br>
3а Или просто пользуешься этим массивом :) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2006-07-27T10:47:02+00:00">27.07.06, 10:47</time></span></span><br>
А в случае, когда у тебя запись - увы, не так все просто. В варианте только простые типы есть, там SafeArray. Почему бы тебе не сделать отдельный интерфейс для передачи коллекции?]]></description>
        <author>Romkin</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193663</guid>
        <pubDate>Thu, 27 Jul 2006 10:30:23 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193663</link>
        <description><![CDATA[SilverShield: Я не спорю. Вопрос в том, как тогда задачу решить? Надо как-то передать этот динамический масив...]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193643</guid>
        <pubDate>Thu, 27 Jul 2006 10:26:36 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193643</link>
        <description><![CDATA[Testudo: А кто тебе сказал, что в Variant и OLEVariant можно пихать что попало? Там есть свой список типов...]]></description>
        <author>Testudo</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193609</guid>
        <pubDate>Thu, 27 Jul 2006 10:06:46 +0000</pubDate>
        <title>Перегнать динамический массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=149604&amp;view=findpost&amp;p=1193609</link>
        <description><![CDATA[SilverShield: Привет всем&#33;  Суть вопроса в следующем: у меня есть COM объект, через один из методов которого надо вернуть динамический массив структур (record&#39;ов). <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TUserList=record</div><div class="code_line">&nbsp;&nbsp; &nbsp; uid, compname, uname, cstat, utype: string;</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; TULMas=array of TUserList;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Сделать это видимо прийдется через OleVariant (обычный variant в библиотеке типов задать не получается). Делаю в 2 этапа: 1. Преобразовать массив к варианту.  2. преобразовать Variant к OleVariant.<br>
Проблема уже на первом этапе - не получается ни в какую преобразовать динамический массив к варианту&#33;<br>
Делал так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">aa: Variant;</div><div class="code_line">ULMas: TULMas;</div><div class="code_line">.....</div><div class="code_line">DynArrayToVariant(aa, ULMas, inf);</div></ol></div></div></div></div><br>
Выдает ошибку &quot;invalid variant type conversion&quot;.  <br>
Пробовал создать массив варианта и потом поэлементно перегнать в него мой динамический массив:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Aa := VarArrayCreate([0, length(ULMas)-1], varVariant);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;for i:= 0 to length(ULMas)-1 do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;aa[i]:= ULMas[i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div></ol></div></div></div></div> <br>
Тогда просто говорит, что не совместимые типы variant и TUserList.<br>
Как тут быть? Заранее спасибо&#33;<br>
<br>
PS: поиском я пользовался и ничего подходящего не нашел. Если вопрос уже обсуждался, буду очень признателен за ссылку или за ключевые слова для поиска.]]></description>
        <author>SilverShield</author>
        <category>Delphi: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	