![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание библиотеки [D7, XP]
Merry © (2006-10-07 16:11:00)Впервые создала библиотеку для функции перевода денег из цифр в пропись.
Почему-то при выполнении:
Edit2.Text:=TextSum(StrToFloat(Edit1.text));
перевод проходит, в Edit2 я вижу результат,
но при этом выдаётся ошибка:"Invalid pointer operation."
Что она означает? Как от неё избавиться?
Я уже отправляла на форум эту функцию, многие пробовали, но ошибки такой ни у кого не возникало.
Может, всё дело в подключении библиотеки… Или что ещё. Уже не знаю, что делать.
Могу выслать библиотеку с этой функцией и демопрограмку, в которой и идёт эта ошибка. Очень ЖДУ ПОМОЩИ!
Amoeba (2006-10-09 13:32:00) [1]На http://www.delphikingdom.comдавно уже есть несколько таких готовых библиотек.
Ученик чародея (2006-10-08 03:22:00) [2]
> DrPass © (08.10.06 00:24) [9]
>
> > Merry (07.10.06 19:00) [7]
>
> В чем же и смысл - тебе подсказали не само решение, а как
> решать задачи. Это намного более ценное знание ;-)
А еще вариант - передавать указатель на выделенную память в функцию в dll.
А если не обязательно thread safe, для всяких левых языков программирования типа PB, то объявлять глобальную переменную.
var GStr:string
function foo(S: double): string;
begin
//чето мутим
Gstr=ту строку которую намутили;
Result:=GStr;
end;
DrPass (2006-10-08 00:24:00) [3]
> Merry (07.10.06 19:00) [7]
В чем же и смысл - тебе подсказали не само решение, а как решатьзадачи. Это намного более ценное знание ;-)
Джо (2006-10-07 19:21:00) [4]> [7] Merry (07.10.06 19:00)
> >MikePetrichenko © (07.10.06 18:26) [6]
> Спасибо УМНИКИ!!!
> Про ShareMem всё понятно.
> Нельзя было сразу сказать?
> Надо было типа:
> >Еще дольше читать коментарий Delphi.
А зачем врать было, что "читала"?
Merry (2006-10-07 19:00:00) [5]>MikePetrichenko © (07.10.06 18:26) [6]
Спасибо УМНИКИ!!!
Про ShareMem всё понятно.
Нельзя было сразу сказать?
Надо было типа:
>Еще дольше читать коментарий Delphi.
MikePetrichenko (2006-10-07 18:26:00) [6]
> uses
> Forms,
> ffirst in 'ffirst.pas' {Form1},
> first in 'first.pas';
Еще дольше читать коментарий Delphi, вставляемый в начало файла проекта при создании DLL.
Merry (2006-10-07 17:38:00) [7]>Leonid Troyanovsky © (07.10.06 17:08) [4]
program DllTest;
uses
Forms,
ffirst in 'ffirst.pas' {Form1},
first in 'first.pas';
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
--------------
Весь модуль ffirst:
unit ffirst;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Mask, DBCtrls, DBTables;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses first;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=TextSum(StrToFloat(Edit1.text));
end;
end.
------------------------------------------
A модуль first весь выглядит так:
unit first;
interface
function TextSum(S: double): string;
implementation
const
LibName='MyDll2.dll';
function TextSum;external LibName;
end.
Leonid Troyanovsky (2006-10-07 17:08:00) [8]
> Merry (07.10.06 16:54) [3]
> нет, но что не так? Я думаю, дискутировать излишне. Повторю:
Приведи здесь uses from ProjectX.dpr (for exe).
--
Regards, LVT.
Merry (2006-10-07 16:54:00) [9]В принципе, так я и делала. В этом и вопрос: видимых ошибок нет, но что не так? Я думаю, дискутировать излишне. Повторю:Могу выслать библиотеку с этой функцией и программку с её использованием.
Leonid Troyanovsky (2006-10-07 16:17:00) [10]
> Merry (07.10.06 16:11)
> Может, всё дело в подключении библиотеки… Или что ещё. Уже
> не знаю, что делать.
Читать комментарий, вставляемый при File.. New .. Dll
До просветления.
--
Regards, LVT.
DrPass (2006-10-07 16:14:00) [11]
> Впервые создала библиотеку для функции перевода денег из
> цифр в пропись
Если библиотека - DLL, то надо было внимательно прочитать Большой Комментарий, который был в dpr-файле библиотеки, и сделать так, как там написано.