Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1191
от 25.09.2008, 01:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 391, Экспертов: 43
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 144358: Доброго времени суток уважаемые эксперты! У меня не получается запустить на выполнение што я зделал не так подскажыте. Заранее спасибо....

Вопрос № 144.358
Доброго времени суток уважаемые эксперты! У меня не получается запустить на выполнение што я зделал не так подскажыте.
Заранее спасибо.

Приложение:

Отправлен: 19.09.2008, 08:52
Вопрос задал: Кравченко Игорь Николаевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Кравченко Игорь Николаевич!

Вот исправленный ваш пример.
Код:
library Project2;

uses
SysUtils, Classes ;
function MyFunc(num1,num2,Errcode:Integer; Operation:PChar):integer;stdcall;
begin
Result := 0;
try
if Operation='plus' then
Result:=num1+num2
else if Operation='minus' then
Result:=num1-num2
else if Operation='multiply' then
Result:=num1*num2
else if Operation='div' then
Result:=num1 div num2
else if Operation='mod' then
Result:=num1 mod num2;
except Result:=Errcode;
end;
end;

exports
MyFunc NAME 'MathFunc';

begin
end.
*************** **********************************************

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Num1Edit: TEdit;
Num2Edit: TEdit;
OpEdit: TEdit;
ResultEdit: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function MyFunc(num1, num2, Errcode:Integer; Operation: PCHar):Integer; stdcall; external 'Project2.dll' name 'MathFunc';
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
Errcode:Integer=978987;
var
Num1, Num2, Result_:Integer;
Operation:String;
begin
try
N um1:=StrToInt(Num1Edit.Text);
Num2:=StrToInt(Num2Edit.Text);
except
Num1Edit.Text:='0';
Num2Edit.Text:='0';
ResultEdit.Text:='Введите целые ЧИСЛА';
exit;
end;
Operation:=OpEdit.Text;
if (Operation<>'plus')and(Operation<>'minus')and(Operation<>'multiply')
and(Operation<>'div')and(Operation<>'mod')then
begin
ResultEdit.Text:='Введите коректную команду';
exit;
end;
Result_:=MyFunc(Num1, Num2, Errcode, PChar(Operation));
if Result_=Errcode then
begin
ResultEdit.Text:='ОШИБКА';
end
else
begin
ResultEdit.Text:= IntToStr(Result_);
end;

end;

end.

Но, рекомендую, максимально, где только возможно – обходиться числовыми параметрами, и строки использовать только в крайней необходимости.
Напрмер так:
Код:
library Project2;

uses
SysUtils, Classes ;
function MyFunc(num1,num2,Errcode,Operation:Integer):integer;stdcall;
begin
Result := 0;
try
case Operation of
0: Result:=num1+num2;
1: Result:=num1-num2;
2: Result:=num1*num2;
3: Result:=num1 div num2;
4: Result:=num1 mod num2;
else Result:= 0;
end;
except Result:=Errcode;
end;
end;

exports
MyFunc NAME 'MathFunc';

begin
end.
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm 1 = class(TForm)
Num1Edit: TEdit;
Num2Edit: TEdit;
ResultEdit: TEdit;
Button1: TButton;
ComboBox1: TComboBox; // тут храним список операций
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function MyFunc(num1, num2, Errcode,Operation: Integer):Integer; stdcall; external 'Project2.dll' name 'MathFunc';
implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
Errcode:Integer=978987;
var
Num1, Num2, Result_:Integer;
Operation:String;
begin
try
Num1:=StrToInt(Num1Edit.Text);
Num2:=StrToInt(Num2Edit.Text);
except
Num1Edit.Text:='0';
Num2Edit.Text:='0';
ResultEdit.Text:='Введите целые ЧИСЛА';
exit ;
end;
Result_:=MyFunc(Num1, Num2, Errcode, ComboBox1.ItemIndex); //передаем операцию что выбрал пользователь
if Result_=Errcode then
begin
ResultEdit.Text:='ОШИБКА';
end
else
begin
ResultEdit.Text:= IntToStr(Result_);
end;

end;

end.

---------
Процесс обучения – cp -rfv /* /home/ - это рекурсия..:)
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Екатеринбург
Тел.: 89043822027
ICQ: 490191733
----
Ответ отправлен: 19.09.2008, 09:44

Отвечает: Шичко Игорь
Здравствуйте, Кравченко Игорь Николаевич!
У Вас все нормально, только почему-то потерялась ссылка на использование файла ресурсов формы.
Подправьте основной модуль как в приложении.
Кроме этого должен быть сформирован файл Project2.dll (запустить на выполнение Project2.dpr). (проверьте его наличие)
Для отладки расположить его в одном каталоге с основным модулем.

Приложение:

Ответ отправил: Шичко Игорь (статус: 4-ый класс)
Ответ отправлен: 19.09.2008, 09:50


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное