Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Вниз

DLL не работает :(   Найти похожие ветки 

 
Тыгыдым   (2006-09-04 09:12) [0]

Создал DLL-ку для работы с Word через OLE... Открыть Ворд, написать слово, найти и заменить слово, сохранить в файл...
Если импортирую эту ДЛЛ в Делфи все прекрасно работает... Если импортирую в С++ Билдер, то не хотят слова искаться...

Текст функции поиска:
function FindTextDoc(text: string): boolean;
begin
try
W.Selection.Find.Forward:=true;
W.Selection.Find.Text:=text_;
FindTextDoc := W.Selection.Find.Execute;
except
FindTextDoc:=false;
end;
End;

где
W:=CreateOleObject("Word.Application");

Эта функция из Билдера усиленно возвращает FALSE!

Кто скажет почему?


 
Сергей М. ©   (2006-09-04 09:21) [1]

Не соблюдены соглашения о вызовах.


 
Alx2 ©   (2006-09-04 09:25) [2]

и string лучше на что-то более интернациональное изменить.


 
Тыгыдым   (2006-09-04 09:30) [3]

2 Alx2: изменено. используется PChar и соответственно StrPas()... просто не совсем тот код вставил...
2 Сергей М.: Текст Билдера

typedef __fastcall int (*CharFunc) (PChar);

CharFunc FindTextDoc;

HANDLE h = LoadLibrary("word.dll");
if (!h) return;
FindTextDoc = (CharFunc)GetProcAddress(h, "FindTextDoc");

FindAndPasteTextDoc("ОК", "CANCEL"); // возвращает FALSE


 
Тыгыдым   (2006-09-04 09:31) [4]

Не та функция :)

FindAndPasteTextDoc("ОК"); // возвращает FALSE


 
Сергей М. ©   (2006-09-04 09:37) [5]

function FindTextDoc(text: PChar): boolean; stdcall;


 
Тыгыдым   (2006-09-04 09:46) [6]

Пока не могу попробовать... А почему из Делфей все нормально идет?


 
Сергей М. ©   (2006-09-04 09:48) [7]


> почему из Делфей все нормально идет?


Потому что соглашение о вызове соблюдено.


 
Тыгыдым   (2006-09-04 09:50) [8]

ок. пасиб. буду пробовать


 
Тыгыдым   (2006-09-04 13:26) [9]

Все равно не работает... Да иногда еще и Access Violation выскакиывает...
А в Билдере как указать что функция stdcall?


 
Сергей М. ©   (2006-09-04 14:29) [10]


> Тыгыдым   (04.09.06 13:26) [9]


Тогда переквалифицируйся в управдомы.

Или приводи уже для анализа все подробности твоего кода, как делфи так и СВВ

А во, вишь ли, "та функция", "не та функция".. Сам черт не разберет, что за бардак у тебя там творится)


 
Сергей М. ©   (2006-09-04 14:30) [11]

СВВ = ВСВ


 
Бугага ©   (2006-09-04 15:41) [12]

library word;

uses
 Classes, ComObj, Windows, Sysutils;

{$R *.res}

var
 W: Variant;

function CreateWord: boolean; stdcall;
begin
 CreateWord:=true;
 try
   W:=CreateOleObject("Word.Application");
 except
   CreateWord:=false;
 end;
end;

function VisibleWord(Visible: boolean): boolean; stdcall;
begin
 VisibleWord:=true;
 try
   W.visible:=Visible;
 except
   VisibleWord:=false;
 end;
end;

function FindTextDoc(text_: PChar): boolean; stdcall;
begin
 try
   W.Selection.Find.Forward:=true;
   W.Selection.Find.Text:=StrPas(text_);
   FindTextDoc:=W.Selection.Find.Execute;
 except
   FindTextDoc:=false;
 end;
end;

exports CreateWord;
exports VisibleWord;
exports FindTextDoc;

begin
end.


 
Бугага ©   (2006-09-04 15:44) [13]

typedef __fastcall int (*CharFunc) (PChar);
typedef __fastcall int (*IntFunc) (int);
typedef __fastcall int (*VoidFunc) (void);

VoidFunc CreateWord;
CharFunc FindTextDoc;
IntFunc VisibleWord;

HANDLE h = LoadLibrary("word.dll");
if (!h) return;
CreateWord = (VoidFunc)GetProcAddress(h, "CreateWord");
FindTextDoc = (CharFunc)GetProcAddress(h, "FindTextDoc");
VisibleWord = (IntFunc)GetProcAddress(h, "VisibleWord");

if (!CreateWord) return 1;
if (!VisibleWord(1)) return 2;
if (!FindTextDoc("1")) return 3;


 
isasa ©   (2006-09-04 15:46) [14]

typedef __fastcall int (*CharFunc) (PChar);
->
typedef __stdcall int (*CharFunc) (PChar);
...


 
Тыгыдым   (2006-09-04 15:46) [15]

почему имя не мое?


 
Сергей М. ©   (2006-09-04 15:49) [16]


> почему


По кочану.

Тебя суть происходящего волнует или что ?)


 
Тыгыдым   (2006-09-04 15:50) [17]

посмотрел дату вашего рождения и глазам не поверил...


 
isasa ©   (2006-09-04 16:00) [18]

Ты еще мою посмотри.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
1-1154854591
Glu
2006-08-06 12:56
2006.09.24
Пункт всплывающего меню


15-1157024348
Rouse_
2006-08-31 15:39
2006.09.24
Скрытие элементов защиты с применением технологии Руткитов


15-1157113395
Квэнди
2006-09-01 16:23
2006.09.24
Новый форум


15-1157633263
syte_ser78
2006-09-07 16:47
2006.09.24
функция date


15-1157027349
Сергей М.
2006-08-31 16:29
2006.09.24
Кто-нть инсталлил MacOS x86 ? Ей чего надо - свободный раздел ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский