Главная страница
    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.038 c
2-1157286193
цунами
2006-09-03 16:23
2006.09.24
LongWord + DWord


2-1157630985
SergP.
2006-09-07 16:09
2006.09.24
Из-за чего происходит замедление работы?


15-1157204680
PSPF2003
2006-09-02 17:44
2006.09.24
Монитор


2-1157505236
Viacheslav
2006-09-06 05:13
2006.09.24
Как мне прокрутить TListView


15-1157519711
Pazitron_Brain
2006-09-06 09:15
2006.09.24
Коммунальная служба не дает доступ к крыше!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский