Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание библиотеки, Ошибки при компиляции библиотеки 
:(
    Опции темы
TwisT_X
  Дата 18.12.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Хочу создать библиотечную функцию, складывающию две прямоугольные матрицы (двумерный динамический массив), но при компиляции выдаёт ошибки... smile

Вот юнит в который мне надо забить алгоритм:
Код

unit Unit2;

interface

implementation

end.


Вот то что я хочу забить:
Код

type TMatrix = array of array of real;

function SumMatrix(const A, B: TMatrix): TMatrix;
var i, j, M, N: word;
    Matr: TMatrix;
begin
 if (Length(A) = 0) or (Length(B) = 0)
 then begin
   ShowMessage('Не задана матрица');
   exit;
 end;
 M:= High(A);
 N:= High(A[0]);
 if(N <> High(B[0]) or (M <> High(B))
 then begin
   ShowMessage('Заданы матрицы разных размеров: ' +
              IntToStr(M+1) + ' x ' + IntToStr(N+1) +
              ' и ' + IntToStr(Length(B)) + ' x ' +
              IntToStr(Length(B[0])));
   exit;
 end;
 SetLength(Matr, M+1, N+1);
 for i:= 0 to M do
  for j:= 0 to N do
   Matr[i, j]:= A[i, j] + B[i, j];
 Result:= Matr;
end;


Я предпологаю что надо сделать так:
Код

unit MasMat;

interface

type TMatrix = array of array of real;
function SumMatrix(const A, B: TMatrix): TMatrix;

implementation

function SumMatrix(const A, B: TMatrix): TMatrix;

var i, j, M, N: word;
    Matr: TMatrix;

begin
 if (Length(A) = 0) or (Length(B) = 0)
 then begin
   ShowMessage('Не задана матрица');
   exit;
 end;
 M:= High(A);
 N:= High(A[0]);
 if(N <> High(B[0]) or (M <> High(B))
 then begin
   ShowMessage('Заданы матрицы разных размеров: ' +
              IntToStr(M+1) + ' x ' + IntToStr(N+1) +
              ' и ' + IntToStr(Length(B)) + ' x ' +
              IntToStr(Length(B[0])));
   exit;
 end;
 SetLength(Matr, M+1, N+1);
 for i:= 0 to M do
  for j:= 0 to N do
   Matr[i, j]:= A[i, j] + B[i, j];
 Result:= Matr;
end;

end.


Но мне всевремя выдаёт вот такие ошибки:
[Error] MasMat.pas(18): Undeclared identifier: 'ShowMessage'
[Error] MasMat.pas(24): Operator not applicable to this operand type
[Error] MasMat.pas(26): Undeclared identifier: 'IntToStr'
[Error] MasMat.pas(27): Incompatible types: 'String' and 'Integer'
[Error] MasMat.pas(27): Incompatible types: 'String' and 'Integer'
[Fatal Error] Project1.dpr(5): Could not compile used unit '..\MyLib\MasMat.pas'


Подскажите что мне делать... smile


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
FRAGNATIC
Дата 18.12.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



добавить раздел uses
и в него добавить модули
Windows, Messages, SysUtils, Dialogs;
и почитать книгу какуюнить по дэлфи =)
Добавлено @ 19:09
Код

unit MasMat;

interface

uses
  Windows, Messages, SysUtils, Dialogs;

type TMatrix = array of array of real;    

function SumMatrix(const A, B: TMatrix): TMatrix;    

implementation    

function SumMatrix(const A, B: TMatrix): TMatrix;    
var i, j, M, N: word;    
    Matr: TMatrix;    
begin    
 if (Length(A) = 0) or (Length(B) = 0)    
 then begin    
   ShowMessage('Íå çàäàíà ìàòðèöà');
   exit;    
 end;    
 M:= High(A);    
 N:= High(A[0]);    
 if (N <> High(B[0])) or (M <> High(B)) // ЗДЕСЬ у тебя не хватало одной закрывающей скобки.
 then begin
   ShowMessage('Çàäàíû ìàòðèöû ðàçíûõ ðàçìåðîâ: ' +    
              IntToStr(M+1) + ' x ' + IntToStr(N+1) +    
              ' è ' + IntToStr(Length(B)) + ' x ' +    
              IntToStr(Length(B[0])));    
   exit;    
 end;    
 SetLength(Matr, M+1, N+1);    
 for i:= 0 to M do    
  for j:= 0 to N do    
   Matr[i, j]:= A[i, j] + B[i, j];    
 Result:= Matr;    
end;    
end.



Это сообщение отредактировал(а) FRAGNATIC - 18.12.2005, 19:11
PM MAIL   Вверх
TwisT_X
Дата 18.12.2005, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Всеравно ошибка есть вот такая:

[Error] MatMas.pas(27): Operator not applicable to this operand type


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
FRAGNATIC
Дата 18.12.2005, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



TwisT_X
у меня её нету
была из-за того что у тя не хватало закрывающей скобки!
я те в коментах к модулю добавил где именно поставить её =)
PM MAIL   Вверх
TwisT_X
Дата 18.12.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



FRAGNATIC
все теперь все нормально я просто провтыкал момент куда вставить..
большое человеческое спосибо..=) smile
Добавлено @ 20:10
А зачем включать те параметры?:
Windows, Messages, SysUtils, Dialogs;


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Alcohol
Дата 18.12.2005, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 28.11.2005

Репутация: нет
Всего: нет



Ну Messages может и не нужны, но на всякий.. В этих модулях лежат процедуры, которые ты используешь. А если их не подключить, то он не будет знать что за ShowMessage или IntToStr..
PM MAIL   Вверх
FRAGNATIC
Дата 18.12.2005, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



угу Messages вообщем не нужны за компания попали в список=)
и ещё это всётаки будет называтся не библиотекой а модулем smile
PM MAIL   Вверх
TwisT_X
Дата 20.12.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



ну да модуль просто он подрузамиваеться как бы библиотека что я ее там подключал и все такое..


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Poseidon
Дата 20.12.2005, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(TwisT_X @ 20.12.2005, 18:18)
просто он подрузамиваеться как бы библиотека что я ее там подключал и все такое..


Цитата(TwisT_X @ 18.12.2005, 19:03)
unit Unit2;
Если подразумевался как библиотека, то и начинаться должен как library



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
TwisT_X
Дата 21.12.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



е не всели равно .. какая разница.. обоснуй плиз..


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Romikgy
Дата 21.12.2005, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Unit это модуль dcu, Library скомпилится Dll

Это сообщение отредактировал(а) Romikgy - 21.12.2005, 16:54


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
TwisT_X
Дата 21.12.2005, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Romikgy а разница между ДКУ и ДЛЛ есть..?.


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Romikgy
Дата 21.12.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



ДКУ используешь только в дельфи плюс она статическая, ДЛЛ используешь где хошь, и она динамическая


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Poseidon
Дата 21.12.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



TwisT_X, в общем, если у тебя Unit, то ты получишь из него exe (конечно можно Unit прикрутить и к библиотеке, но это уже частное). А если у тебя library, то ты получишь dll. В общем-то существенной разницы между exe и dll нет, т.к. dll - это по сути та же программа (exe), только ее нельзя запускать двайным кликом.
Цитата

Динамические библиотеки (DLL, Dynamic Link Library) играют важную роль в функционировании ОС Windows и прикладных программ. Они представляют собой файлы с откомпилированным исполняемым кодом, который используется приложениями и другими DLL. Реализация многих функций ОС вынесена в динамические библиотеки, которые используются по мере необходимости, обеспечивая тем самым экономию адресного пространства. DLL загружается в память только тогда, когда к ней обращается какой-либо процесс.

По существу динамические библиотеки отличаются от исполняемых файлов только одним, они не могут быть запущены самостоятельно. Для того чтобы динамическая библиотека начала работать, необходимо, чтобы ее вызвала уже запущенная программа или работающая DLL.

Обычно в динамические библиотеки выносятся группы функций, которые применяются для решения сходных задач. Кроме этого, в них можно хранить и использовать разнообразные ресурсы — от строк локализации до форм.

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


Цитата(TwisT_X @ 21.12.2005, 16:57)
а разница между ДКУ и ДЛЛ есть..?.

Цитата
Разновидностью динамических библиотек являются пакеты Delphi, предназначенные для хранения кода компонентов для среды разработки и приложений.




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
TwisT_X
Дата 21.12.2005, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Poseidon получаеться что ДЛЛ лучше и надо основываться на ней..?.


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Poseidon
Дата 21.12.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Ну это смотря для чего, что ты задумал.

Применение динамических библиотек позволяет добиться ряда преимуществ:
  • уменьшается размер исполняемого файла приложения и занимаемые им ресурсы;
  • функции DLL могут использовать несколько процессов одновременно;
  • управление динамическими библиотеками возлагается на операционную систему;
  • внесение изменений в DLL не требует перекомпиляции всего проекта;
  • одну DLL могут использовать программы, написанные на разных языках.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
TwisT_X
Дата 21.12.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Poseidon короче говоря ДЛЛ просто круто..
надо будет попробавать создать..


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Poseidon
Дата 21.12.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Vingrad FAQ тебе в помощь


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
TwisT_X
Дата 21.12.2005, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



и что мне этот фак даст..?.


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Romikgy
Дата 21.12.2005, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(TwisT_X @ 21.12.2005, 17:45)
и что мне этот фак даст..?.
Умение работать с длл...



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
TwisT_X
Дата 21.12.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



хорошо блогадорю и большое спасибо..
обязательно посмотрю..


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
FRAGNATIC
Дата 21.12.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



TwisT_X
ну если тебе тока для той ф-и которую ты будешь использовать тока из своей софтины то уж имхо лучше просто модуль подключить) если также для какждой выносимой из главного модули фи в отдельный модуль создовать библиотеки то лажа получится=)
PM MAIL   Вверх
TwisT_X
Дата 21.12.2005, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



FRAGNATIC придет время тогда ибуду подключатьто или иное =)


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0775 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.