Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2009, 22:24   #1
vg169
 
Регистрация: 14.07.2009
Сообщений: 4
По умолчанию Преобразование String в OleVariant

Имеется:

var S : String; V : OleVariant;
S := 'd:\Путь\Мой файл.docx';
V := S;

Результат: V содержит не указанный текст, а некие кракозябры.

Все это нужно для сохранения средствами OLE файла Word под этим именем. К сожалению, продукты от Microsoft не принимают параметров никакого типа, кроме OleVariant.

Спасибо за помощь.
vg169 вне форума Ответить с цитированием
Старый 15.07.2009, 08:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Во-первых: Просто передавай переменную S в метод сохранения.
Во-вторых:
Код:
V := OleVariant(S);
В-третьих:
Код:
V := 'd:\Путь\Мой файл.docx';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 08:42   #3
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

Опередили .

Последний раз редактировалось Alter; 15.07.2009 в 08:56.
Alter вне форума Ответить с цитированием
Старый 15.07.2009, 09:28   #4
vg169
 
Регистрация: 14.07.2009
Сообщений: 4
По умолчанию

Спасибо за советы, но они проблему не решили.

V := OleVariant(S); Результат тот же, что и при простом присваивании
V := 'd:\Путь\Мой файл.docx'; Не катит, т.к. в действительности эта строка формируется программно, при этом используются данные из базы, которые по определению String.
В DelphiWorld и в других популярных справочниках ответа я тоже не нашел.

Неужели я первый наткнулся на такую ситуацию?
vg169 вне форума Ответить с цитированием
Старый 15.07.2009, 09:44   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в действительности эта строка формируется программно, при этом используются данные из базы, которые по определению String.
Ну и пусть в формировании учавствует не S а V, как будто бы это S...
Код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 11:58   #6
vg169
 
Регистрация: 14.07.2009
Сообщений: 4
По умолчанию

Вот код поподробнее.

var S : String; V : OleVariant;

S := 'D:\' + FieldbyName('Path').AsString + '\' + FieldByName('FNam').AsString;
V := S;
WordApplication.ActiveDocument.Save As(V, EmptyParam, EmptyParam, ,,,,, и т.д.

Кракозябры возникают в строке V := S;
Можно сразу объявить S как OleVariant. Тогда кракозябры появятся уже в предыдущей строке S := ...
Мне ясно, что проблема в кириллице, неясно как ее решить.
В процедуру WordApplication.SaveAs нельзя передавать никаких переменных, кроме OleVariant.
vg169 вне форума Ответить с цитированием
Старый 15.07.2009, 12:14   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не знаю как у тебя но у меня нормательно работает такое:
Код:
_Document.SaveAs(ExtractFilePath(paramstr(0))+'\qq.doc');
Где - _Document:OleVariant = WordApplication.ActiveDocument
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 12:50   #8
vg169
 
Регистрация: 14.07.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не знаю как у тебя но у меня нормательно работает такое:
Код:
_Document.SaveAs(ExtractFilePath(paramstr(0))+'\qq.doc');
Где - _Document:OleVariant = WordApplication.ActiveDocument

Так и у меня работает. Пока нет кириллицы в имени файла.
vg169 вне форума Ответить с цитированием
Старый 15.07.2009, 13:09   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ТОлько что попробовал:
Код:
ActiveDocument.SaveAs('c:\temp\Привет.doc');
Создало с именем Привет.doc...
Word 2003
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование int в String^ в С++ Mixasik Помощь студентам 1 21.06.2009 18:57
Преобразование матриц bpystep Помощь студентам 8 23.03.2009 12:54
как переделать график в OleVariant ? Влажимир Общие вопросы Delphi 1 14.04.2008 19:18
Преобразование... prizrak1390 Общие вопросы Delphi 2 02.04.2008 11:24
Сконвертировать Olevariant (Unicode) в string Sashunya Общие вопросы Delphi 8 08.09.2007 00:49