Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2012, 07:31   #1
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию Создать свой модуль (unit)

Есть пару функций, хочу их сохранить и потом при надобности подключать через uses. Создал новую папку, прописал до нее путь в Delphi, и сохранил в нее md5hash.pas.
Подключаю его в проекте но компилятор выдаю ошибку.
Код:
[DCC Fatal Error] Unit1.pas(9): F1026 File not found: 'md5hash.dcu'
Собственно как его создать, md5hash.dcu, ?
bakanaev вне форума Ответить с цитированием
Старый 04.11.2012, 09:49   #2
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Люди ну подскажите
bakanaev вне форума Ответить с цитированием
Старый 04.11.2012, 11:39   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй сделать Build All. В Меню Делфи есть такая команда - весь проект перестраивает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2012, 12:04   #4
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Попробуй сделать Build All. В Меню Делфи есть такая команда - весь проект перестраивает.
Не нашел такого.
Вот исходник юнита
Код:
unit md5hash;

interface

uses Windows, SysUtils;

function md5 (S: string): string;

implementation

var a: array[0..15] of Byte;
    i: Integer;
    LenHi, LenLo: LongWord;
    Index: DWord;
    HashBuffer: array[0..63] of Byte;
    CurrentHash: array[0..3] of DWord;

procedure Burn;
begin
  LenHi := 0;
  LenLo := 0;
  Index := 0;
  FillChar (HashBuffer, Sizeof (HashBuffer), 0);
  FillChar (CurrentHash, Sizeof (CurrentHash), 0);
end; {proc Burn}

procedure Init;
begin
  Burn;
  CurrentHash[0] := $67452301;
  CurrentHash[1] := $efcdab89;
  CurrentHash[2] := $98badcfe;
  CurrentHash[3] := $10325476;
end; {proc Init}

function LRot32 (a, b: LongWord): LongWord;
begin
  Result:= (a shl b) or (a shr (32 - b));
end; {func LRot32}

procedure Compress;
var Data: array[0..15] of DWord;
    A, B, C, D: DWord;
begin
  ............................... Вы ввели слишком длинный текст (7597 символов). Пожалуйста, сократите его до 5000 символов.

  Inc (CurrentHash[1], B);
  Inc (CurrentHash[2], C);
  Inc (CurrentHash[3], D);
  Index := 0;
  FillChar (HashBuffer, Sizeof (HashBuffer), 0);
end; {proc Compress}

procedure Update (const Buffer; Size: LongWord);
var PBuf: ^Byte;
begin
  Inc (LenHi, Size shr 29);
  Inc (LenLo, Size * 8);
  if LenLo < (Size * 8) then Inc (LenHi);
  PBuf := @Buffer;
  while Size > 0 do
  begin
    if (Sizeof (HashBuffer) - Index) <= DWord (Size) then
    begin
      Move (PBuf^, HashBuffer[Index], Sizeof (HashBuffer) - Index);
      Dec (Size, Sizeof (HashBuffer) - Index);
      Inc (PBuf, Sizeof (HashBuffer) - Index);
      Compress;
    end
    else
    begin
      Move (PBuf^, HashBuffer[Index], Size);
      Inc (Index, Size);
      Size := 0;
    end; {if}
  end; {while}
end; {proc Update}

procedure Final (var Digest);
begin
  HashBuffer[Index] := $80;
  if Index >= 56 then Compress;
  PDWord (@HashBuffer[56])^ := LenLo;
  PDWord (@HashBuffer[60])^ := LenHi;
  Compress;
  Move (CurrentHash, Digest, Sizeof (CurrentHash));
  Burn;
end; {proc Final}

function md5 (S: string): string;
begin
  Init;
  Update (s[1], Length (s));
  Final (a);
  Result := '';
  for i := 0 to 15 do
    Result := Concat (Result, IntToHex (a[i], 2));
  Burn;
  Result := Result;
end; {func md5}

end.

Я создал через меню unit. Скопировал в него этот код. После чего сохранил его в свою папку, путь к папке дописал вот тут




Может что-то не так сделал?
bakanaev вне форума Ответить с цитированием
Старый 04.11.2012, 12:09   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Скомпилировать забыл.
Меню Project - Build All. Выполни это из проги, к которой подключаешь модуль.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2012, 13:56   #6
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

1. File>Close All.
2. Открываем нужный unit.
3. Жмем в меню Project>Build или Project>Compile (рекомендую 1-й вариант)
4. Закрываем все (File>Close All).
5. Пробуем скомпилировать программу.
Если тоже самое то
6. Tools>Envieroment Option>Paths и добавляем папку с твоим модулем.
hon вне форума Ответить с цитированием
Старый 04.11.2012, 15:41   #7
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от hon Посмотреть сообщение
1. File>Close All.
2. Открываем нужный unit.
3. Жмем в меню Project>Build или Project>Compile (рекомендую 1-й вариант)
4. Закрываем все (File>Close All).
5. Пробуем скомпилировать программу.
Если тоже самое то
6. Tools>Envieroment Option>Paths и добавляем папку с твоим модулем.
Не дает, кнопки не активны



Цитата:
Сообщение от Stilet
Скомпилировать забыл.
Меню Project - Build All. Выполни это из проги, к которой подключаешь модуль.
Ребята, нет ни какой проги) Просто голый код unit. Т.е созданный через File->New->Unit
bakanaev вне форума Ответить с цитированием
Старый 04.11.2012, 17:43   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так сделайте программу, в ней подключите ваш модуль через Uses.
Потом перекомпилируйте.
Иначе, Delphi видит, что ваш модуль никому не нужен, поэтому (резонно) и не компилирует его!

p.s. а зачем Вам модуль (unit), которые нигде не используется?! Вы же даже не знаете, есть в нём ваши ошибки или нет...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2012, 18:01   #9
bakanaev
Форумчанин
 
Регистрация: 27.03.2012
Сообщений: 438
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. а зачем Вам модуль (unit), которые нигде не используется?! Вы же даже не знаете, есть в нём ваши ошибки или нет...
Это я просо привел чужой код.
У меня есть с десяток своих функций, которые я использую в каждой второй своей программе. Так вот, мне надоело каждый раз их пихать в код и описывать в privat. А так я бы засунул свои функции в unit (скажем My_functions) и сохранил. В случаи если я буду писать программу и мне понадобится мои\моя функция\функции
я просто допишу в uses My_functions. И все))!
Вот чего я хочу добиться. Честно говоря не нашел я в интернете как это сделать. Решил сделать как делаю сейчас)) Но видимо не так это делается
bakanaev вне форума Ответить с цитированием
Старый 04.11.2012, 23:26   #10
RUSlan48
Пользователь
 
Аватар для RUSlan48
 
Регистрация: 06.12.2009
Сообщений: 65
По умолчанию

Можно же просто создать пустой проект, нажать File - New - Unit, туда скопировать все функции, откомпилировать и сохранить модуль с названием
Цитата:
скажем My_functions
а пустой проект больше не нужен.
Делай что должен, и будь что будет
RUSlan48 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем различия между файлами Unit.cpp и Unit.h? WarHamster Общие вопросы C/C++ 1 14.03.2012 14:25
Как подключить свой модуль? Murman_men Помощь студентам 1 17.11.2011 06:25
Как подключить свой модуль СИ++ remouter Помощь студентам 0 03.06.2011 17:54
Свой модуль в c++ Gapro C++ Builder 2 05.12.2010 21:20