Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / C++ Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
как загрузить файл в переменную типа VARIANT ?
и как VARIANT скинуть в TMemoryStream&?
9 ноя 20, 23:29    [22229175]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
Mizer73,
А смысл?
Почему не auto?
9 ноя 20, 23:45    [22229191]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51774

Mizer73
как загрузить файл в переменную типа VARIANT ?

Никак, обломись.

Posted via ActualForum NNTP Server 1.5

10 ноя 20, 01:19    [22229233]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
CEMb
Member

Откуда: Столько
Сообщений: 2129
Dimitry Sibiryakov
Никак, обломись.
Не, как-то можно. Variant может быть типа 0x2011 - байтовый массив. Осталось только разобраться, как его проинициализировать :)
10 ноя 20, 05:41    [22229281]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
CEMb
Member

Откуда: Столько
Сообщений: 2129
Mizer73
и как VARIANT скинуть в TMemoryStream&?
А нельзя сразу файл в TMemoryStream? Судя по названию, оно должно подходить для таких операций
10 ноя 20, 05:43    [22229282]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Cerebrum
Member

Откуда: Омикрон Персей 8
Сообщений: 7980
Mizer73
как загрузить файл в переменную типа VARIANT ?

InitVariantFromBuffer
10 ноя 20, 08:44    [22229300]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
CEMb
Dimitry Sibiryakov
Никак, обломись.
Не, как-то можно. Variant может быть типа 0x2011 - байтовый массив. Осталось только разобраться, как его проинициализировать :)
ну есть извращения.
Есть OleVariant сразу с маршаллингом)))
10 ноя 20, 09:34    [22229334]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
CEMb
Mizer73
и как VARIANT скинуть в TMemoryStream&?
А нельзя сразу файл в TMemoryStream? Судя по названию, оно должно подходить для таких операций

сразу можно, но мне нужно пользоваться данными типа VARIANT. Разбираюсь со штукой, CADActivex, она всасывает файл DWG, или другие, типа VARIANT. Файл можно сразу в stream, но вопрос, как этот файл потом из стрима в CADActiveX всосать. этот Activex ещё общается через IStream. Мне подойдёт любой вариант, лучший, чем временно сохранять файл на диск и оттуда читать в компонент.
10 ноя 20, 23:26    [22229871]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
Dimitry Sibiryakov

Mizer73
как загрузить файл в переменную типа VARIANT ?

Никак, обломись.

что, опять дохлый номер? уж, пора пользу приносить. Подключайся....
10 ноя 20, 23:27    [22229875]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
Cerebrum
Mizer73
как загрузить файл в переменную типа VARIANT ?

InitVariantFromBuffer

читаем файл в буфер, потом буфер в variant?
10 ноя 20, 23:37    [22229879]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Cerebrum
Member

Откуда: Омикрон Персей 8
Сообщений: 7980
Mizer73
читаем файл в буфер, потом буфер в variant?

можешь сказать программно, что файл - это буфер, а потом всосать его в VARIANT
11 ноя 20, 00:05    [22229896]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
CEMb
Member

Откуда: Столько
Сообщений: 2129
Mizer73
Разбираюсь со штукой, CADActivex, она всасывает файл DWG, или другие, типа VARIANT.
Разберись с VARIANT, как проинициализировать массив типа 0x2011 и всё. Зачем тащить какой-то экскаватор (CADActivex) в проект, если можно обойтись тяпкой?
11 ноя 20, 06:10    [22229926]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
CEMb
Mizer73
Разбираюсь со штукой, CADActivex, она всасывает файл DWG, или другие, типа VARIANT.
Разберись с VARIANT, как проинициализировать массив типа 0x2011 и всё. Зачем тащить какой-то экскаватор (CADActivex) в проект, если можно обойтись тяпкой?

CADActivex - это потребитель всех стараний, компонент, который выводит чертёж автокада. и он не способен читать файл из мемористрима. для него и все пляски с бубнами.
11 ноя 20, 10:18    [22229973]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
CEMb
Member

Откуда: Столько
Сообщений: 2129
Mizer73
и он не способен читать файл из мемористрима
т.е. он с потоками не работает? Может тогда попробовать написать письмо разработчикам? Потому что правильные ковбои всегда делают как минимум одну сериализацию через поток, ибо это универсальный источник-приёмник данных.
11 ноя 20, 10:24    [22229977]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51774

CEMb
т.е. он с потоками не работает?

Выше аффтар сказал, что работает, но ему не удалось осилить документацию и примеры.

Posted via ActualForum NNTP Server 1.5

11 ноя 20, 13:50    [22230115]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
ResourceSpace
Member

Откуда:
Сообщений: 27
Mizer73
... этот Activex ещё общается через IStream. Мне подойдёт любой вариант ...

Не очень понял что где имеется сейчас и что куда надо в итоге всунуть. Где у вас эти исходные данные-то? На диске или в памяти?
Если на диске - есть такая штука как SHCreateStreamOnFile*().
TMemoryStream что за тип, у вас Билдер чтоле? Тогда имейте ввиду ещё тип TStreamAdapter.
11 ноя 20, 15:18    [22230177]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
CEMb
Mizer73
и он не способен читать файл из мемористрима
т.е. он с потоками не работает? Может тогда попробовать написать письмо разработчикам? Потому что правильные ковбои всегда делают как минимум одну сериализацию через поток, ибо это универсальный источник-приёмник данных.


разработчик ответил следующее:
Метод LoadFromStream может использовать один из следующих форматов:
1. нативный объект .NET Stream
2. вариант массив байт
3. IStream
4. строка - имя файла

сам LoadFromStream в потреблении имеет tagVariant.
11 ноя 20, 16:39    [22230248]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
ResourceSpace
Mizer73
... этот Activex ещё общается через IStream. Мне подойдёт любой вариант ...

Не очень понял что где имеется сейчас и что куда надо в итоге всунуть. Где у вас эти исходные данные-то? На диске или в памяти?
Если на диске - есть такая штука как SHCreateStreamOnFile*().
TMemoryStream что за тип, у вас Билдер чтоле? Тогда имейте ввиду ещё тип TStreamAdapter.


есть файл на диске формата DWG. есть компонент CADActiveX, который читает с диска файл и визуализирует.
мне нужно этот прочитанный 1 раз файл хранить в базе данных и визуализировать через этот компонент , не обращаясь более к файлу на диске.

Билдер.
11 ноя 20, 16:42    [22230254]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51774

Mizer73
разработчик ответил следующее:
Метод LoadFromStream может использовать один из следующих форматов:
1. нативный объект .NET Stream
2. вариант массив байт
3. IStream
4. строка - имя файла

Ты не пишешь на .NET и тебе надо грузить данные не из файла, так что на выбор остаются
варианты 2 и 3. Второй уже предлагали выше. Для третьего таки надо уточнить какой именно
из IStream имеется ввиду, а потом реализовать его.

Posted via ActualForum NNTP Server 1.5

11 ноя 20, 16:47    [22230263]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
ResourceSpace
Member

Откуда:
Сообщений: 27
Эх, оказалось у меня полностью слетел Билдер... Я им почти не пользовался, можно сказать второй раз пригодился бы, а облом...
Что получится если примерно так?:
TMemoryStream * memoryStream = new TMemoryStream();
memoryStream.LoadFromFile( ... );
memoryStream->Seek(0, 0);
_di_IStream streamAdapter(*(new TStreamAdapter(memoryStream, soReference))); // или DelphiInterface<IStream> ... // или TComInterface<IStream> ... // или CComPtr<IStream> ...
activeXCAD.LoadFromStream(streamAdapter);
11 ноя 20, 17:51    [22230318]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
ResourceSpace
Эх, оказалось у меня полностью слетел Билдер... Я им почти не пользовался, можно сказать второй раз пригодился бы, а облом...
Что получится если примерно так?:
TMemoryStream * memoryStream = new TMemoryStream();
memoryStream.LoadFromFile( ... );
memoryStream->Seek(0, 0);
_di_IStream streamAdapter(*(new TStreamAdapter(memoryStream, soReference))); // или DelphiInterface<IStream> ... // или TComInterface<IStream> ... // или CComPtr<IStream> ...
activeXCAD.LoadFromStream(streamAdapter);


[bcc32 Error] Extr_Profil.cpp(1114): E2034 Cannot convert '_di_IStream' to 'tagVARIANT'
Full parser context
Extr_Profil.cpp(1106): parsing: void _fastcall TExtr_Profiles::DWG_LoadClick(TObject *)
11 ноя 20, 18:00    [22230327]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
ResourceSpace
Member

Откуда:
Сообщений: 27
хм...
--//--
activeXCAD.LoadFromStream(Variant(streamAdapter));
или
--//--
Variant streamAsVariant = Variant(streamAdapter);
activeXCAD.LoadFromStream(streamAsVariant);
?
11 ноя 20, 18:25    [22230340]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 6525
ResourceSpace
хм...
--//--
activeXCAD.LoadFromStream(Variant(streamAdapter));

или
--//--
Variant streamAsVariant = Variant(streamAdapter);
activeXCAD.LoadFromStream(streamAsVariant);

?
монопесуально. Если тип совпадает с подсказкой в IDE (нет приведения)
11 ноя 20, 18:27    [22230344]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51774

ResourceSpace
Что получится если примерно так?:

От пихания в программу случайного кода обычно получается случайная хрень.

Posted via ActualForum NNTP Server 1.5

11 ноя 20, 18:46    [22230360]     Ответить | Цитировать Сообщить модератору
 Re: загрузить файл в VARIANT  [new]
Mizer73
Member

Откуда: Питер
Сообщений: 162
PetroNotC Sharp
ResourceSpace
хм...
--//--
activeXCAD.LoadFromStream(Variant(streamAdapter));

или
--//--
Variant streamAsVariant = Variant(streamAdapter);
activeXCAD.LoadFromStream(streamAsVariant);

?
монопесуально. Если тип совпадает с подсказкой в IDE (нет приведения)


гениально!!!

то, что надо - оно работает!!!
LoadFromStream(Variant(streamAdapter));
11 ноя 20, 19:03    [22230370]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / C++ Ответить