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

Вниз

Руссификация 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.029 c
1-1086677293
Prog's Killer
2004-06-08 10:48
2004.06.20
Метод random


3-1084490911
Олеся
2004-05-14 03:28
2004.06.20
Java+Interbase


14-1086173050
}|{yk
2004-06-02 14:44
2004.06.20
Что я нашел !!!


9-1077482489
Bek
2004-02-22 23:41
2004.06.20
Кто что знает про свет в Opengl?


14-1086421412
тихий вовочка
2004-06-05 11:43
2004.06.20
Новая супер почта





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