Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Руссификация dll   Найти похожие ветки 

 
FragMan   (2004-06-05 10:19) [0]

Люди!!! КТО ЗНАКОМ С dll помогите пожалуйста!

Проблема такая! В dll-ке делаю string функцию

function R1: string; stdcall
begin
Result := "Проверка";
end;

и вызываю её в программе:

...
implementation

function R1:string; stdcall external
"project1.dll";

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=R1;
end;

end.

---------------------

Если перед компиляции dll вот в этом коде

function R1: string; stdcall
begin
Result := "Проверка";
end;

вместо русских символов слова "Проверка" написать латинские к примеру: "Provierka", то всё работает!!!

А ВЕДЬ НАДО ПО-РУССКИ!
-------------

Нужен Х Е Л П! Что делать!?

Кто хоть чуточку знает dll помогите ПЛЗ! Столько уже сделал, для подключения dll и осалась такая маленькая вещь, загвоздка ну вот и столкнулся как на зло с проблемой...


 
Mim1 ©   (2004-06-05 10:47) [1]

Учиться правильно задавать вопрос. В чем дело то?


 
FragMan   (2004-06-05 11:05) [2]

> Mim1 ©

Дело в том, что когда я вызываю из своей программы функцию dll, а именно возвращаю значение функции в Tedit выдаётся ошибка! Invalid Pointer Operation

Мучался долго долго, аж всю ночь! разобрался! Оказалось, что если внутри dll поменять значение строкового параметра с (Result := "Проверка") на (Result := "Chego-nibud po anglisky") то после компиляции dll всё нормально работает!

А надо, чтобы было по-русски Result := "Проверка"


 
Mim1 ©   (2004-06-05 11:09) [3]

С комментарием при создании библиотеки ознакомился?


 
NikotiN ©   (2004-06-05 11:25) [4]

Маленькая подсказка:
result:=PChar("что нибудь по русски");

и, правда, прочитай комментарий в библиотеке.


 
FragMan   (2004-06-05 11:28) [5]

Вот с этими?

{ Important note about DLL memory management: ShareMem must be the first unit in your library"s USES clause AND your project"s (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. }

Ознакомился! Честно говоря, не понял ничего единственное, что смог нормально понять - это последнее предложение в котором говорится о том, что если у вас ничего не получилось, по попробуйте PChar или ShortString параметры

:) Пробовал :) опять не получается!


 
FragMan   (2004-06-05 11:31) [6]

> NikotiN ©

Мдя, а теперь вообще выпрыгивает debuger и пишет access violation error :/

...


 
FragMan   (2004-06-05 11:38) [7]

function R1: string; stdcall
begin
result:=PChar("русский язык");
end;

Ну вот так вот получилось, как говорили ... в Tedit всё вписывается, но тут же вылетает ошибка!

Invalid Pointer Operation

НО... если раньше указатель ошибки ставился на слово begin, то теперь он ставится на слово end :( теперь я совсем ничего не понял :(

program UseDll;

uses
 Forms,
 Use in "Use.pas" {Form1};

{$R *.res}

   begin
     Application.Initialize;
     Application.CreateForm(TForm1, Form1);
     Application.Run;
->  end.

Вот такую картину наблюдаю :(

PS: -> это указатель на ошибку


 
Алхимик ©   (2004-06-05 12:02) [8]

{ Important note about DLL memory management: ShareMem must be the first unit in your library"s USES clause AND your project"s (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. }


 
FragMan   (2004-06-05 12:14) [9]

Всё рулиз!!! вездё всё работает :)

С Ы П А С Ы Б О!



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

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
14-1086152635
roughneck
2004-06-02 09:03
2004.06.20
Как можно продавать свои программы?


14-1086339327
Романов Р.В.
2004-06-04 12:55
2004.06.20
Подскажите электронные книги по Delphi для детей.


3-1085492252
snake
2004-05-25 17:37
2004.06.20
OnCellClick в Dbgrid


14-1086041201
lak
2004-06-01 02:06
2004.06.20
зацените и скажите


14-1085723546
Nuclear
2004-05-28 09:52
2004.06.20
Сайт хорошего настроения