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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема в Длл (exports) 
:(
    Опции темы
ivanfr
Дата 15.4.2009, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Возникает ошибка в exports не могу понять почему помогите пожалуйста.
Код

library ShareViews;
uses
  ShareMem,
  Windows,
  Messages,
  SysUtils,
  Classes,
  Controls,
  Dialogs,
  StdCtrls,
  ExtCtrls,
  ComCtrls,
  ShellAPI,
  ShlObj,
  Menus;

type
 TShareInfo2 = packed record
  shi2_netname : PWChar;
  shi2_type: DWORD;
  shi2_remark :PWChar;
  shi2_permissions: DWORD;
  shi2_max_uses : DWORD;
  shi2_current_uses : DWORD;
  shi2_path : PWChar;
  shi2_passwd : PWChar;
end;
 PShareInfo2 = ^ TShareInfo2;
 TShareInfo2Array = array [0..512] of TShareInfo2;
 PShareInfo2Array = ^ TShareInfo2Array;
type
 TShareInfo50 = packed record
  shi50_netname : array [0..12] of Char;
  shi50_type : Byte;
  shi50_flags : Word;
  shi50_remark : PChar;
  shi50_path : PChar;
  shi50_rw_password : array [0..8] of Char;
  shi50_ro_password : array [0..8] of Char;
 end;

 var
  NetShareEnumNT : function(servername:PWChar;level:DWORD; bufptr:Pointer; prefmaxlen:DWORD; entriesread, totalentries, resume_handle:LPDWORD): DWORD; stdcall;
  NetShareEnum   : function(pszServer:PChar; sLevel:Cardinal; pbBuffer:Pchar; cbBuffer:Cardinal; pcEntriesRead, pcTotalAvail: Pointer):DWORD; stdcall;
  NetShareDelNT  : function(servername: PWideChar; netname: PWideChar; reserved: DWORD):LongInt; stdcall;
  NetShareDel    : function(pszServer, pszNetName:PChar; usReserved:Word):DWORD; stdcall;
  NetShareAddNT  : function(servername: PWideChar;level:DWORD; buf: Pointer; parm_err: LPDWORD): DWORD; stdcall;
  NetShareAdd    : function(pszServer:Pchar; sLevel:Cardinal; pbBuffer:PChar; cbBuffer:Word):DWORD; stdcall;
  SessionCloseKey: array [0..512] of SmallInt;
  function  IsNT(var Value: Boolean): Boolean;
  procedure OpenShare(var mass:array of string);
 {$R *.res}

function IsNT(var Value: Boolean): Boolean;
var
 Ver: TOSVersionInfo;
 BRes: Boolean;
begin
  Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  BRes := GetVersionEx(Ver);
  if not BRes
     then   //Проверка
         begin
            Result := False; //Информация не получена
            Exit;            //уходим
         end
     else
  Result := True;  //Информация получена
  case Ver.dwPlatformId of //определяемся
    VER_PLATFORM_WIN32_NT       : Value := True;  //Windows NT - подходит
    VER_PLATFORM_WIN32_WINDOWS  : Value := False; //Windows 9x-Me - подходит
    VER_PLATFORM_WIN32s         : Result := False //Windows 3.x - не подходит
  end;
end;

procedure OpenShare(var mass:array of string); stdcall;
var
  i:Integer;
  FLibHandle : THandle;
  ShareNT : PShareInfo2Array;     // Перемеменные
  entriesread,totalentries:DWORD; // для Windows NT
  Share : array [0..512] of TShareInfo50; // Перемеменные
  pcEntriesRead,pcTotalAvail:Word;        //для Windows 9x-Me
  OS: Boolean;
begin
try
//FormShare.ListBoxShare.Clear;
 if not IsNT(OS) then Exit;
    //Определяем тип системы
  if OS then
            begin  //Код для NT
               FLibHandle := LoadLibrary('NETAPI32.DLL'); //Загружаем библиотеку
               if FLibHandle = 0 then Exit;
               //***************Связываем функцию*******************************
               @NetShareEnumNT := GetProcAddress(FLibHandle,'NetShareEnum');
               if not Assigned(NetShareEnumNT)
                     then //Проверка
                         begin
                            FreeLibrary(FLibHandle);
                            Exit;
                         end;
               ShareNT := nil; //Очищаем указатель на массив структур
               //*******************Вызов функции*******************************
               if NetShareEnumNT(nil,2,@ShareNT,DWORD(-1),@entriesread,@totalentries,nil) <> 0
                  then
                      begin //Если вызов неудачен выгружаем библиотеку
                         FreeLibrary(FLibHandle);
                         Exit;
                      end;
               if entriesread > 0
                  then //Обработка результатов
                      for i:= 0 to entriesread - 1 do
                       begin
                       mass[i]:= String(ShareNT^[i].shi2_netname);
                       //FormShare.ListBoxShare.Items.Add(String(ShareNT^[i].shi2_netname));
                       //MainForm.ListBox1Shares.Items.Add(String(ShareNT^[i].shi2_netname));
                       end;
                      end
                  else
                      begin //Код для 9х-Ме
                         FLibHandle := LoadLibrary('SVRAPI.DLL'); //Загружаем библиотеку
                         if FLibHandle = 0
                            then
                                Exit;
                                //Связываем функцию
                                @NetShareEnum := GetProcAddress(FLibHandle,'NetShareEnum');
                         if not Assigned(NetShareEnum)
                            then //Проверка
                                begin
                                   FreeLibrary(FLibHandle);
                                   Exit;
                                end;
                         //Вызов функции
                         if NetShareEnum(nil,50,@Share,SizeOf(Share),@pcEntriesRead,@pcTotalAvail)<> 0
                            then
                                begin  //Если вызов неудачен выгружаем библиотеку
                                   FreeLibrary(FLibHandle);
                                   Exit;
                                end;
                         if pcEntriesRead > 0
                            then //Обработка результатов
                               for i:= 0 to pcEntriesRead - 1 do
                               mass[i]:= String(ShareNT^[i].shi2_netname);
                               //FormShare.ListBoxShare.Items.Add(String(Share[i].shi50_netname));
            end;
  finally
     FreeLibrary(FLibHandle); //Не забываем выгрузить библиотеку
  end;
end;

procedure FUNKDLLRIHTHE ( var Otvet : Boolean; var ModulName: String; var About:string );
begin
  Otvet:=true;
  ModulName:='Share Module';
  About := 'Плагин проверки расшаренных ресурсов';
end;

exports OpenShare, FUNKDLLRIHTHE; <-Ошибка


begin
end. <-Ошибка





Это сообщение отредактировал(а) ivanfr - 15.4.2009, 12:16
PM MAIL   Вверх
CodeMonkey
Дата 15.4.2009, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



Текст ошибки является военной тайной?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ivanfr
Дата 15.4.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Текст ошибки
[Warning] ShareViews.dpr(147): Variable 'FLibHandle' might not have been initialized
[Error] ShareViews.dpr(158): EXPORTS allowed only at global scope <-Тут ошибка
[Error] ShareViews.dpr(162): ';' expected but '.' found  <-эта тоже не понятно почему возникает 
[Error] ShareViews.dpr(169): Declaration expected but end of file found
PM MAIL   Вверх
CodeMonkey
Дата 15.4.2009, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



У вас где-то пропущен begin или end. Проверяйте балансировку.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ivanfr
Дата 15.4.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот в проект обычный не в DLL кидаю работает, как только  переношу в нее все работать отказывается. сейчас гляну еще раз может что пропустил
PM MAIL   Вверх
ivanfr
Дата 15.4.2009, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



в общем проверил все и вся как выдавало  эту ошибку так и выдает. 
PM MAIL   Вверх
CodeMonkey
Дата 15.4.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

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



Вероятно забыли forward вот тут:

Код
  function  IsNT(var Value: Boolean): Boolean;
  procedure OpenShare(var mass:array of string);
 {$R *.res}




--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kami
Дата 15.4.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Цитата(CodeMonkey @  15.4.2009,  14:54 Найти цитируемый пост)
Вероятно забыли forward вот тут


+100.

После форматирования кода с помощью DelForExp это несоответствие вылезло сразу же.
PM MAIL WWW   Вверх
ivanfr
Дата 15.4.2009, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проблема была в нем  добавил все заработало всем спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

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

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

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

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

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


 




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


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

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